Skip to content

v0.0.4 - Journal Extraction & Borsh Serialization

Choose a tag to compare

@garyrob garyrob released this 14 Aug 18:46
· 10 commits to main since this release

πŸš€ Release v0.0.4

✨ Major Improvements

Fixed Journal Extraction from SegmentReceipt

  • Properly implemented journal_bytes() method for SegmentReceipt
  • Now correctly extracts journal data from receipt.claim.output.journal structure in RISC Zero 1.2
  • Handles MaybePruned wrapper types appropriately

Added Borsh Serialization Support

  • Guest programs now use Borsh serialization with env::commit_slice() for cross-language compatibility
  • Added borsh-construct Python dependency for deserializing journal data
  • Eliminated the 4x size expansion issue from u32-word encoding
  • Journal data is now compact and portable between Rust and Python

πŸ“ Demo & Documentation Updates

  • Updated Merkle ZKP demo to use Borsh serialization
  • Fixed demo to get journal from receipt (not SessionInfo)
  • Added journal deserialization examples to README
  • Updated Python version requirement to 3.8.3+ for borsh-construct
  • Improved documentation of project structure and demo scripts

πŸ”§ Other Changes

  • Removed non-functional examples/ directory
  • Updated all version references to 0.0.4
  • Fixed demo paths in README

πŸ“¦ Dependencies

  • Added borsh v1.5 to guest Cargo.toml
  • Added borsh-construct to Python dependencies

🎯 What This Means

Developers can now:

  • Reliably extract journal data from both SegmentReceipt and SuccinctReceipt
  • Use standard Borsh serialization for guest program outputs
  • Parse journal data in Python with proper schema definitions
  • Build zero-knowledge proofs with properly formatted public outputs

⚠️ Note

This is still an experimental pre-alpha release for Apple Silicon (M1/M2/M3) Macs only.

πŸ™ Acknowledgments

Thanks to the RISC Zero team for guidance on the journal extraction API in v1.2.2.