Look up an agent
scores, committed daily

Oracle

Every day after the 00:00 UTC snapshot run, the scores of all listed agents go into one Merkle tree, and its root is published on Solana in a memo from the oracle wallet 3tpH…Mba7. Anyone can then prove that an agent's score on a given day is the one that was committed, with the proof API, this page, or the standalone scripts.

Latest root
a00758cd94f22a32ae2911fe05591ad72845ca1f20f2e5406f0cec0d6475a5b8
Date
2026-10-25 · 32 agents
Memo
ac1:root:2026-10-25:a00758cd94f22a32ae2911fe05591ad72845ca1f20f2e5406f0cec0d6475a5b8:32
Transaction
confirmed · slot 461168332 ↗
Built
2026-10-25 07:13 UTC

Verify a score

The page recomputes the leaf and the root locally (WebCrypto, nothing sent anywhere but the proof and transaction lookups), then reads the root transaction through /rpc and checks that its memo matches and that the oracle wallet signed it.

The spec (AC1)

leaf = SHA-256( "AC1/leaf" ‖ slug ‖ 0x00 ‖ token_mint_or_empty ‖ 0x00
                ‖ u16be(score) ‖ u64be(computed_at_unix) ‖ SHA-256(components_json) )
node = SHA-256( "AC1/node" ‖ min(a, b) ‖ max(a, b) )
memo = "ac1:root:" ‖ YYYY-MM-DD ‖ ":" ‖ root_hex ‖ ":" ‖ leaf_count
one root a day, one memo, all on chain

Known-answer vectors

Three fixed leaves, in tree order. An implementation of the spec must reproduce every hash below.

slug
alpha
token_mint
So11111111111111111111111111111111111111112
score
742
computed_at
1790000000
components_json
{"activity":{"flags":[],"value":80},"dev":{"flags":[],"value":100},"track":{"flags":["too_few_trades"],"value":50},"transparency":{"flags":[],"value":60},"treasury":{"flags":[],"value":71.25}}
leaf hash
aaaa82fc14353d3c1f49cfdd9c70f1dee143baa991c0b24fba973252cf73e208
slug
beta
token_mint
(empty)
score
null → encoded as 0
computed_at
1790000100
components_json
{}
leaf hash
9dfeb7db60dab0589a1d4b5013f6fdbfeea3d3aebda79a5704e3ee91838c3b20
slug
gamma
token_mint
EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v
score
300
computed_at
1790000200
components_json
{"dev":{"flags":["dev_unknown"],"value":0}}
leaf hash
c673b8e6eb214a90fff1289289e80ba13a2d39aa6422d5b99537adc841a0d3d3
root
346779c0dc51cc1191fc1c58e65d355a106e3fa2c5eac73ab2e73c68d8f72997
proof (beta)
aaaa82fc14353d3c1f49cfdd9c70f1dee143baa991c0b24fba973252cf73e208 5484886780fde90dbee2f50093bd200431542e44d6562bf5a2beb68555e325fd

Standalone verifiers

No dependencies beyond the standard library. Both fetch the proof, recompute the leaf and root, and (with an RPC URL) check the memo on chain.

node verify-proof.mjs crawlnet --date 2026-10-25 --rpc https://api.mainnet-beta.solana.com
python3 verify_proof.py crawlnet --date 2026-10-25 --rpc https://api.mainnet-beta.solana.com

verify-proof.mjs verify_proof.py

History

DateRootAgentsTransaction
2026-10-25a00758cd94f22a32…32confirmed · slot 461168332 ↗