v0.0.4 - Journal Extraction & Borsh Serialization
π Release v0.0.4
β¨ Major Improvements
Fixed Journal Extraction from SegmentReceipt
- Properly implemented
journal_bytes()method forSegmentReceipt - Now correctly extracts journal data from
receipt.claim.output.journalstructure in RISC Zero 1.2 - Handles
MaybePrunedwrapper types appropriately
Added Borsh Serialization Support
- Guest programs now use Borsh serialization with
env::commit_slice()for cross-language compatibility - Added
borsh-constructPython 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
borshv1.5 to guest Cargo.toml - Added
borsh-constructto 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.