Contracts
Verifiers
Verifier contracts are auto-generated by Barretenberg from compiled circuits. They expose a single function and have no state.
solidity
function verify( bytes calldata proof, bytes32[] calldata publicInputs ) external view returns (bool);
ShieldVerifier — public inputs
9 inputs: 8 aggregation object zeros followed by the commitment hash.
solidity
bytes32[9] memory inputs; // inputs[0..7] = 0 (aggregation object) inputs[8] = bytes32(commitment);
SpendVerifier — public inputs
16 inputs: 8 aggregation zeros, then token, merkleRoot, nullifiers[0], nullifiers[1], newCommitments[0], newCommitments[1], amount, recipient.
solidity
bytes32[16] memory inputs; // inputs[0..7] = 0 (aggregation object) inputs[8] = bytes32(uint256(uint160(token))); inputs[9] = merkleRoot; inputs[10] = nullifiers[0]; inputs[11] = nullifiers[1]; inputs[12] = newCommitments[0]; inputs[13] = newCommitments[1]; inputs[14] = bytes32(amount); inputs[15] = bytes32(uint256(uint160(recipient)));