Sui Cookbook Help

Binary Canonical Serialization

Binary Canonical Serialization is an efficient binary format for structured data, ensuring consistent serialization across platforms. This format is used extensively by Sui, so it is worth touching.

Installation

It is available for various platforms, and we can install it by adding a dependency for a platform as follows:

implementation("xyz.mcxross.bcs:<bcs-[platform]>:<$bcs_version>")
implementation("xyz.mcxross.bcs:bcs:<$bcs_version>")
implementation("xyz.mcxross.bcs:bcs-android:<$bcs_version>")
implementation("xyz.mcxross.bcs:bcs-jvm:<$bcs_version>")

Serialization

In order to serializer a user defined type, first make a class serializable by annotating it with @Serializable

@Serializable data class Data( val long: Long, val double: Double, val string: String, val boolean: Boolean )

You can now serialize an instance of this class by calling Bcs.encodeToByteArray()

val bcs = Bcs.encodeToByteArray(Data(1_000_000, 3.14159265359, "çå∞≠¢õß∂ƒ∫", false))

Deserialization

To deserialize an object from BCS, use the decodeFromByteArray() static methode:

val obj = Bcs.decodeFromByteArray<Data>(bcs)
Last modified: 16 November 2024