Verify Task 22 settlement
Task 22 is a Northset-operated live protocol rehearsal that completed the full OCH-1.1 path on Arbitrum One with real USDC: creation, bid selection, activation, proof submission, and settlement. You can reproduce its input and output commitments locally with cast, read those commitments from the hub, then inspect every lifecycle transaction on Arbiscan.
Install Foundry for cast and jq for the focused task readback below.
Recompute the input commitment
Section titled “Recompute the input commitment”STATS_V1 commits to the values as keccak256(abi.encode(values)), where values is a uint64[].
cast abi-encode "f(uint64[])" \ "[1,1,0,1,0,0,0,0,1,1,1,1,0,1,1,1,0,0,1,0,1,0,1,0,0,0,0,0,1,0]" \ | cast keccakExpected result:
0x846b6d89d9195fd24b982b22cd6d5f31e7f8038ad326c23f88fd2c1fdb343c1aRecompute the output commitment
Section titled “Recompute the output commitment”For these 30 values, STATS_V1 calculates:
| Field | Value |
|---|---|
n |
30 |
sum |
14 |
min |
0 |
max |
1 |
The output commitment is keccak256(abi.encode(n, sum, min, max)) using the exact types uint32, uint256, uint64, and uint64:
cast abi-encode "f(uint32,uint256,uint64,uint64)" 30 14 0 1 \ | cast keccakExpected result:
0x017fa6dd03dcaaff55434c29cea86b2d02b3ebb7e499d8a9c30a3ab778268edbMatch the commitments on-chain
Section titled “Match the commitments on-chain”Read Task 22 from the hub and select its inputHash, numeric state, and outputHash:
cast call 0x219f6a4206a38f05897257e40cea3b211ea5e592 \ 'tasks(uint256)((address,bytes32,bytes32,address,bytes32,uint256,uint256,uint256,uint64,uint64,uint8,address,uint256,uint256,uint16,uint64,uint64,uint64,uint64,uint64,bytes32,uint64,bytes32))' \ 22 \ --rpc-url https://arb1.arbitrum.io/rpc \ --json \ | jq '.[0] | {inputHash: .[4], state: .[10], outputHash: .[20]}'Expected result:
{ "inputHash": "0x846b6d89d9195fd24b982b22cd6d5f31e7f8038ad326c23f88fd2c1fdb343c1a", "state": 3, "outputHash": "0x017fa6dd03dcaaff55434c29cea86b2d02b3ebb7e499d8a9c30a3ab778268edb"}State 3 is COMPLETED. Both on-chain commitments match the hashes computed above.
Follow the on-chain lifecycle
Section titled “Follow the on-chain lifecycle”| Step | Block | Transaction |
|---|---|---|
| Created | 488273526 | 0x983c50c7…52ba12a |
| Selected | 488276551 | 0x15b6650e…53ee19b |
| Activated | 488276682 | 0xacac3fb8…508d97 |
| Completed | 488276933 | 0xf20dad92…49224 |
The completion transaction settled at 2026-07-27T13:59:34Z through the OCH-1.1 hub and STATS_V1 verifier.
Check the settlement math
Section titled “Check the settlement math”All contract amounts use six-decimal USDC microunits.
| Movement | Microunits | USDC |
|---|---|---|
| Creation escrow | 5,000,000 | 5.000 |
| Selection refund | 3,500,000 | 3.500 |
| Selected reward | 1,500,000 | 1.500 |
| Activation bond | 10,000,000 | 10.000 |
| Fee at the 100 bps snapshot | 15,000 | 0.015 |
| Net reward | 1,485,000 | 1.485 |
| Bond returned | 10,000,000 | 10.000 |
| Completion payout | 11,485,000 | 11.485 |
The completion payout is the 10 USDC bond return plus the 1.485 USDC net reward. The hub retains the 0.015 USDC fee for treasury claiming.
You have now reproduced the proof’s committed statistics and followed the settlement that paid them. Continue with the OCH-1.1 protocol overview.