What is @coral-xyz/borsh?
@coral-xyz/borsh is a JavaScript library for serializing and deserializing data using the Binary Object Representation Serializer for Hashing (BORSH) format. It is commonly used in blockchain applications, particularly with Solana, to efficiently encode and decode data structures.
Serialization
This feature allows you to serialize a JavaScript object into a binary format using a predefined schema. The code sample demonstrates how to define a schema for a custom class and serialize an instance of that class.
const borsh = require('@coral-xyz/borsh');
class MyStruct {
constructor(fields) {
this.field1 = fields.field1;
this.field2 = fields.field2;
}
}
const schema = new Map([
[MyStruct, { kind: 'struct', fields: [['field1', 'u32'], ['field2', 'string']] }]
]);
const myStruct = new MyStruct({ field1: 123, field2: 'hello' });
const serialized = borsh.serialize(schema, myStruct);
console.log(serialized);
Deserialization
This feature allows you to deserialize a binary format back into a JavaScript object using a predefined schema. The code sample demonstrates how to define a schema for a custom class and deserialize a binary array into an instance of that class.
const borsh = require('@coral-xyz/borsh');
class MyStruct {
constructor(fields) {
this.field1 = fields.field1;
this.field2 = fields.field2;
}
}
const schema = new Map([
[MyStruct, { kind: 'struct', fields: [['field1', 'u32'], ['field2', 'string']] }]
]);
const serialized = new Uint8Array([123, 0, 0, 0, 5, 0, 0, 0, 104, 101, 108, 108, 111]);
const deserialized = borsh.deserialize(schema, MyStruct, serialized);
console.log(deserialized);