Skip to content
Open app

Public values and proof ABI

AI-generated

The guest commits exactly 352 bytes using standard abi.encode of:

(bytes32 swap_id,
bytes recipient_address_ascii,
uint64 winning_xmr_amount,
uint64 min_payment_height,
uint128 randomx_difficulty,
bytes32 txid,
bytes32 output_key)

Amounts are piconero. Integers occupy big-endian padded words; recipient bytes preserve the exact address text. This is not packed encoding.

Byte offset Size Content
0 32 Swap ID
32 32 Dynamic recipient offset, value 224 (0xe0)
64 32 Winning amount, left-zero-padded uint64
96 32 Minimum height, left-zero-padded uint64
128 32 Difficulty, left-zero-padded uint128
160 32 Transaction ID
192 32 Selected output key
224 32 Recipient byte length, value 95
256 95 Exact recipient ASCII bytes
351 1 Zero padding

No outer length or trailing extension is allowed. The contract reconstructs the first five fields from the live swap; the proof binds the supplied txid and outputKey to guest-derived values.

The EVM proof must start with 0x4388a21c, the SP1 v6.1.0 Groth16 route, and pass:

verifyProof(PROGRAM_VKEY, publicValues, proof)

Rejection becomes ProofVerificationFailed. Use the adapter’s validated EVM conversion; an SDK bundle is not itself the proof argument.

Identity Value
Parent ELF size 421,160 bytes
ELF SHA-256 69bf56208584b9c9ae04468c51211c8adc3aae309060c256b0cae498324c67b6
EVM program key 0x001b23c8e36754d79a501db878ef6c9e79ed97901e108b243d3564550a0bee1d
Succinct network VK hash 0x0d91e47159d535e64a03b70f0ef6c9e74f6cbc8078422c907a6ac8aa0a0bee1d

These hashes identify different objects/representations. The SDK/guest version is 6.3.1; the verifier route is 6.1.0. Derive the program key from the complete parent ELF. See deployment and build instructions.