Every fill,
every batch,
on Arbitrum.
ForexizCommitments is a strict-monotonic Merkle root publisher. Per-batch metadata: root, startTs, endTs, leafCount, archiveCid. The verifyAgainstBatch view settles any inclusion question.
Live counter activates when NEXT_PUBLIC_COMMITMENT_API_URL is set. Until then, query the contract directly:
What gets
hashed.
One canonical leaf format, used by the on-chainverifyAgainstBatchview, the off-chain proof generator, and any third-party verifier. Same byte string for a given fill, no matter who serializes it.
leaf = keccak256(abi.encode( fillId, // bytes32 account, // address symbol, // bytes32 side, // uint8 (0=long, 1=short) size, // int256 fillPrice, // uint256 (18-dec) feeBps, // uint16 filledAt, // uint64 (unix seconds) signerKeyId // bytes32 (key fingerprint) ))
A Merkle proof
in three frames.
To prove leaf L02 is in the tree, you supply two siblings: L03 (its pair partner) and H00 (the other mid-hash). The verifier hashes L02 with L03 to get H01, then H01 with H00 to get a root candidate, and compares against ROOT.
Verifier: pure view function, ~3k gas.
verify(L02, [L03, H00], ROOT) → true
From fill to proof
Fill happens
Matching engine settles a fill. signer-service issues an Ed25519-signed FillReceipt with a fillId.
Leaf hash
commitment-service hashes the canonical fill payload via fillLeafHash(). The leaf is added to the current batch tree.
Batch close
On the per-window close (or forced-close on shutdown), the OZ-compatible Merkle tree is built (sorted-pair, dup-on-odd).
Root publish
commitment-publisher posts publishBatch(root, startTs, endTs, leafCount, archiveCid) to the on-chain ForexizCommitments contract.
User verifies
Anyone can call verifyAgainstBatch(seq, leaf, proof) on-chain — or paste the proof in the verifier here.
Try the
verifier.
Paste a leaf, a Merkle root, and the proof array. The verifier reproduces the on-chainMerkleProof.verifycheck entirely client-side. Sample data is pre-filled; click Verify to see the ✓ result.
Algorithm: OpenZeppelin MerkleProof.verify (sorted-pair, dup-on-odd). Identical to the on-chain verifyAgainstBatch path in ForexizCommitments.