Skip to content

arm_circuits: add guest feature-forwarding for borsh/bin serialization#209

Draft
AHartNtkn wants to merge 8 commits into
anthony/arm-solana-supportfrom
anthony/arm-solana-support-arm-circuits
Draft

arm_circuits: add guest feature-forwarding for borsh/bin serialization#209
AHartNtkn wants to merge 8 commits into
anthony/arm-solana-supportfrom
anthony/arm-solana-support-arm-circuits

Conversation

@AHartNtkn

@AHartNtkn AHartNtkn commented Feb 17, 2026

Copy link
Copy Markdown
Contributor

Problem

Circuit guests currently commit default risc0-serde output only. For backend-specific flows, guest journal serialization must be selectable (borsh or bin) and the selected feature must be forwarded from methods crates into guest builds.

Changes

  1. Add borsh and bin features to methods + guest crates for:
  • compliance
  • trivial_logic
  • logic_test
  • batch_aggregation
  1. Forward selected features in each methods/build.rs.
  • switch from unconditional risc0_build::embed_methods()
  • to risc0_build::embed_methods_with_options(...) with GuestOptionsBuilder::features(...)
  1. Update guest mains to commit the selected serialization format.
  • bin: bincode::serialize(...) + env::commit_slice(...)
  • borsh: borsh::to_vec(...) + env::commit_slice(...)
  • default: existing env::commit(...)
  1. Update arm_circuits/Cargo.toml workspace members to include methods crates used by this change.

Scope

  • only arm_circuits/*
  • no arm/* changes in this PR

Tracking

AHartNtkn and others added 8 commits February 12, 2026 03:52
- Add borsh, sha2, solana-program, solana-secp256k1, dashu as optional deps
- Add `borsh` and `solana` feature flags
- Add k256 dev-dependency for tests without default features
- Digest: add Borsh derive, make field public, add from_bytes/to_bytes methods
- Digest: replace bytemuck::from_bytes with from_bytes() in TryFrom/FromHex
- Constants: feature-gate VK bytes by solana (Borsh circuit vs risc0 serde circuit)
- Constants: extract BATCH_AGGREGATION_VK_BYTES, add EMPTY_HASH_WORDS, bytes_to_words_const
- Error: add DeltaPointNotOnCurve and DeltaMismatch variants

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Action, ComplianceInstance, ComplianceInstanceWords, ComplianceUnit
- DeltaProof (placeholder), DeltaWitness (placeholder) + len/is_empty/as_slice
- DeltaProof (k256), DeltaWitness (k256): manual BorshSerialize/BorshDeserialize
- LogicInstance, AppData, ExpirableBlob, LogicVerifierInputs
- Transaction, Delta

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- delta_proof: feature-gate hasher (SHA-256 for solana, Keccak-256 for EVM)
- LogicInstance: split to_journal() into zkvm (risc0 serde) and borsh variants
- LogicVerifierInputs: add instance_journal field for pre-serialized journal bytes
- LogicVerifier: use pre-serialized instance_journal instead of recomputing
- ComplianceInstance: add Solana borsh to_journal() impl
- ComplianceWitness: relax feature gate from zkvm+k256 to just k256
- arm_test_app: add instance_journal to LogicVerifierInputs construction

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Uses Solana syscalls (hashv, secp256k1_recover) and solana-secp256k1 for
EC point arithmetic instead of k256, which exceeds SBF stack frame limits.
Module is gated on cfg(all(feature = "solana", not(feature = "zkvm"))).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- arm_circuits/Cargo.toml: add methods crates to workspace members
- All methods/Cargo.toml: add borsh and bin features
- All methods/build.rs: forward borsh/bin features to guest via GuestOptionsBuilder
- All guest/Cargo.toml: add borsh/bincode deps, forward borsh to anoma-rm-risc0/borsh
- All guest/src/main.rs: feature-conditional output (borsh/bincode/default risc0 serde)
- compliance guest: add k256 and zkvm features to anoma-rm-risc0 dep
- trivial_logic guest: add zkvm and k256 features with default-features = false
- arm_test_app: add instance_journal to LogicVerifierInputs construction

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@AHartNtkn AHartNtkn changed the title feat: restore arm_circuits feature-forwarding changes arm_circuits: add guest feature-forwarding for borsh/bin serialization Feb 17, 2026
@AHartNtkn AHartNtkn force-pushed the anthony/arm-solana-support branch 2 times, most recently from 14e21d7 to 3d87f52 Compare February 25, 2026 23:34
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: Triage

Development

Successfully merging this pull request may close these issues.

1 participant