Skip to content

feat(serialization): Add Serde support for Block struct

DETCHART Jonathan requested to merge add_serde into main

This PR adds serialization and deserialization support for the Block struct using Serde, while maintaining compatibility with Arkworks' canonical serialization.

This implementation enables compatibility with ecosystem dependencies like libp2p that rely on Serde for network serialization and data exchange when using predefined codecs (like cbor or json), improving interoperability of our cryptographic primitives across different libraries and network protocols.

Changes:

  • Implement Serialize and Deserialize traits for Block
  • Use Arkworks' canonical serialization with compression
  • Add Bincode as dev dependency for testing
  • Add test for serialization round-trip validation

Implementation Details:

  • Serialization converts the block to a byte vector using CanonicalSerialize trait
  • Deserialization reconstructs the block from bytes using CanonicalDeserialize trait

Added a test that:

  • Generates and prove some blocks
  • Serializes blocks using Bincode
  • Deserializes and compares blocks
  • Ensures full round-trip serialization integrity by comparing each deserialized block to the original block

Merge request reports