VERIFY · EVERY · CLAIM

Proof.

Every contract address, transaction hash, attestation digest, storage CID, AXL peer ID, and ENS namespace behind Ledger’s three sponsor integrations. Every entry is reproducible — click anything mono-spaced to verify on the relevant explorer, or run pnpm tsx tools/register.ts to put your own worker on the same rails.


INTEGRATION

0G

Galileo Testnet (chainId 16602). Hosts the iNFT, escrow, identity registry, and the encrypted memory blob in 0G Storage. Inference runs sealed on 0G Compute and the attestation digest is verifiable.

Chain0G Galileo Testnet · chainId 16602
Official 0G developer docs — testnet overview.
iNFT specERC-7857 (0G iNFT draft)
0G Labs reference implementation our WorkerINFT mirrors.
WorkerINFT (ERC-7857 draft)0xd4d74E089DD9A09FF768be95d732081bd542E498
LedgerEscrow0x83dF0Ed0b4f3D1D057cB56494b8c7eE417265489
Upgraded live escrow. This address proves token-owned payout routing with acceptTokenBid, taskWorkerTokenIds, payoutRecipient, and releasePayment resolving ownerOf(tokenId) on Galileo.
LedgerIdentityRegistry0x9581490E530Da772Af332EBCe3f35D27d5e8377F
MockTEEOracle0x306919805Eed1aD4772d92e18d00A1c132b07C19
Honest disclosure — this is a shim. The ERC-7857 spec is followed mechanically (sealed-key bytes change on transfer, proof verified) but a real TEE enclave is not running.
Source verificationChainScan exactMatch=true
MockTEEOracle, WorkerINFT, LedgerEscrow, and LedgerIdentityRegistry are exact-match source verified on the Galileo explorer.
Mint tx (token #1)0x26b7de55c33f7f82730ea333b509706c1092797c65c5360d1ad5ae0027c17c96
Transfer tx (Owner_A → Owner_B)0xe4d697d7b8dd7c3cb01fa28544a03aecd4cd6f2f1c019c26d2219c828398e9fd
ownerOf(1) flipped from Owner_A (0x6B9a…) to Owner_B (0x6641…) at this block. Sealed key was re-keyed in the same call.
Sealed key (post-transfer)0x7365616c65642d666f722d726573657276652d6f776e6572
ASCII-decodes to "sealed-for-reserve-owner" — proves bytes rotated. A real TEE would emit ciphertext.
Owner_A (mint recipient)0x6B9ad963c764a06A7ef8ff96D38D0cB86575eC00
Owner_B (current ownerOf)0x6641221B1cb66Dc9f890350058A7341eF0eD600b
0G Storage flow contract0x22e03a6a89b950f1c82ec5e74f8eca321a105296
Storage upload tx0xc6cd5ca57b2c005114fef5705d89da67bcff578659a4ca5a8f5d50d4220eb5ca
Memory root hash0xd8fb3ad312ca5e9002f7bdd47d93839b9a6dcd83d396bb74a44a9f65344982c4
AES-256-CTR encrypted client-side. Roundtrip download + decrypt was byte-equal with the plaintext.
Memory CID (in iNFT metadata)0g://0xd8fb3ad312ca5e9002f7bdd47d93839b9a6dcd83d396bb74a44a9f65344982c4
0G Compute ledger tx0xc27d4f36505320f24f60d6ab6cc0e0cf7899b374def9ee953527c2d0aac78ff2
Live provider0xa48f01287233509FD694a22Bf840225062E67836
Modelqwen/qwen-2.5-7b-instruct
Attestation digest0x59c79e5a43357945f442a2417cd7aabf2c74b19708dc97e839ec08e1ae223950
Returned by broker.inference.verifyService. verifyAttestation() returned true.
Escrow deploy tx0x85140cba84b7c5bc152ded0ab046f805a82d1ffcd9b2fd2c7cbaa2ecc54db21
Escrow postTask0x4b36766cd44b05bbc95ebfaf188ec3cac57a8d81b3246f51526f487eb9d4007c
Escrow acceptTokenBid0x57f35f717ff8e73e2e309f9e9131f68399bad823cc773bf7e123cde8b0335c02
Token ID 1 is attached to the task; taskWorkerTokenIds(taskId) returns 1.
Escrow payoutRecipient(taskId)0x6641221B1cb66Dc9f890350058A7341eF0eD600b
Direct RPC read resolves the payee from WorkerINFT.ownerOf(1), so the payout follows the current iNFT owner.
Escrow releasePayment0x7f7ff8061ba4a68b6963d27abefa601fbde8d9474e8dadd8207d138fc6e1a3e2
PaymentReleased event topic 2 is the current owner 0x6641…600b. Final task status readback is 3 (Released).
Result hash0xf8d3ef6a9f1c1d8242101d18b891675e37eef6670eda143971bf69b4d4ce9fb4
Demo task ID0x005ecb1bf6cd06a9d1c7240ab1365aebedbe8104d1b530a892fd0af228c1e604
INTEGRATION

Gensyn AXL

Three independent nodes — two cloud, one residential laptop. Full mesh via Yggdrasil over hop-by-hop TLS plus end-to-end payload encryption. Bootstrap-kill resilience verified; mesh stays connected without the seed peer.

AXL node sourcegithub.com/gensyn-ai/axl
Go binary every node runs — same source on Fly + laptop.
Live mesh /topology (judges)axl.fierypools.fun/topology
Cloudflared tunnel → M2 HTTP bridge. Returns peers + IPv6.
Bootstrap peer IDa560b12fe6e16b1c8a94bb99b3019fa6d5f490474c275a31848f022df3a170eb
Fly.io · sjc · public TCP listener at 66.51.123.38:9001
Bootstrap Yggdrasil IPv6200:b53e:9da0:323d:29c6:ead6:88cc:99fc
Worker-1 peer IDf274bf0f8dadfa028b75f73cf7b29c927ded368b6703caf403abdb0d9aa1fa64
Fly.io · fra · cloud worker, public listener for resilience
Worker-1 Yggdrasil IPv6200:1b16:81e0:e4a4:bfa:e914:1186:109a
Worker-2 peer ID590fa3b614da78d5e50939f708dea209e5cfb5e7ae69f1220611d8eefcc95f4c
Residential laptop (NAT) · launchd-managed (KeepAlive=true) · proves outbound NAT traversal
Worker-2 Yggdrasil IPv6201:9bc1:7127:ac96:1ca8:6bdb:1823:dc85
Encryption (transport)Hop-by-hop TLS + end-to-end payload (two layers)
Channels#ledger-jobs, #ledger-auction-closed (gossipsub fork)
Bootstrap-kill resilienceVerified 2026-05-02T16:23:39Z
sjc bootstrap was stopped, fra and residential exchanged TASK_POSTED + RESULT directly through the fra public listener, then bootstrap restarted.
GossipSub fanout (TS port)local 567ms · fra 601ms
Ports the AXL repo's gossipsub example to TypeScript.
Full protocol cycleTASK_POSTED → BID → BID_ACCEPTED → AUCTION_CLOSED → RESULT
Verified end-to-end on 2026-05-02T16:28:18Z across the live mesh.
Qualification boundarySeparate AXL nodes, not in-process
Two Fly.io regions plus one residential NAT laptop. The app did not replace AXL with a centralized broker.
Topology snapshotproofs/data/axl-topology.json
Full-cycle event logproofs/data/axl-full-cycle.json
TCP packet captureproofs/data/axl-tcpdump.txt
INTEGRATION

ENS Resolver

Custom CCIP-Read offchain resolver under ledger.eth on Sepolia. Five capability namespaces per worker — who, pay, tx, rep, mem — each with its own dispatch logic. ENSIP-10 signed responses. ENSIP-25 text record closes the verification loop with the audited ERC-8004 deployment on Base.

Parent ENSledger.eth (Sepolia)
Open in the official ENS app to view records + signed text.
Parent owner / signer0x32FE11d9900D63350016374BE98ff37c3Af75847
Resolver contract0xd94cC429058E5495a57953c7896661542648E1B3
Source verified on Sourcify for Sepolia chainId 11155111.
Set-resolver tx0xc49a3288274156d826bec3898bf31c15121a90d3bf885f39a8cb74ba67d89caf
Gateway URL (durable)https://resolver.fierypools.fun
Cloudflare named tunnel `kosyn-cre` → localhost:8787. Survives client IP changes and Wi-Fi reconnects.
worker-001.ledger.eth (root)0x6641221B1cb66Dc9f890350058A7341eF0eD600b
Worker root — resolves to the same live owner as who.* and surfaces description/url/notice text records so the ENS app shows real content.
who.worker-001.ledger.eth0x6641221B1cb66Dc9f890350058A7341eF0eD600b
Reads ownerOf(1) on Galileo, 30s TTL cache. Ownership flips without a new ENS transaction.
pay.worker-001.ledger.eth (rotation 0)0x3C44CdDdB6a900fa2b585dd299e03d12FA4293BC
HD-derived from a parent xpub, indexed by tokenId + nonce.
pay.worker-001.ledger.eth (rotation 1)0x90F79bf6EB2c4f870365E785982E1f101E93b906
rep.worker-001.ledger.ethai.rep.registry=0x8004B663… · ai.rep.agent=5444 · count=47 · avg=4.77
Live read from ERC-8004 ReputationRegistry on Base Sepolia. The 47 giveFeedback records were seeded for the demo (see ERC-8004 disclosure below) — the resolver path itself is real.
mem.worker-001.ledger.eth0g://0xd8fb3ad312ca5e9002f7bdd47d93839b9a6dcd83d396bb74a44a9f65344982c4
Open the encrypted blob's tx on the 0G Storage explorer.
ledger.eth ENSIP-25 text recordagent-registration={"standard":"ENSIP-25","registry":"0x8004B663…","chain":"base-sepolia","chainId":84532,"agentId":"5444"}
Live smoke artifactproofs/data/ens-sepolia-resolve.json
INTEGRATION

ERC-8004

Audited reputation registry on Base Sepolia. Ledger does not deploy its own — every settlement writes feedback() to the canonical deployment. The 47-job, 4.77-rating demo number is reproducible on-chain (47 giveFeedback txs from 8 employer-agent keys) but those records were seeded for the demo, not earned organically. Honest disclosure on the last row.

StandardERC-8004 (EIPs.ethereum.org)
Audited reputation registry standard the iNFT references.
IdentityRegistry0x8004A818BFB912233c491871b3d84c89A494BD9e
ReputationRegistry0x8004B663056A597Dffe9eCcC1965A193B7388713
Source verificationBasescan verified + Sourcify partial match
The ERC-8004 reference contracts are external audited deployments; Ledger uses them and does not redeploy them.
Demo agentId5444
Total feedback records47
Distinct client wallets8
getSummary() raw returncount=47 · sumValue=224190000000000000000 · decimals=18
Direct read: average = 4.77 (17 decimals after divide).
Verify commandcast call 0x8004B663… "getSummary(uint256,address[],string,string)(uint64,int128,uint8)" 5444 [<8 client addresses>] "" "" --rpc-url https://sepolia.base.org
DisclosureReputation history was seeded for the demo.
47 seeded completion feedback records signed across 8 employer-agent keys. Disclosed in README and 0g-proof.md per ETHGlobal anti-fraud norms.
REPRODUCE LOCALLY
# Mint your own worker iNFT
git clone https://github.com/DarthStormerXII/ledger
cd ledger/tools && pnpm install
pnpm tsx register.ts gen-keys --name my-worker
pnpm tsx register.ts mint --identity my-worker \
  --memory-cid 0g://… --sealed-key 0x… --dry-run

# Verify the live ENS namespaces
cd ../resolver && npm run smoke:ens

# Read demo worker on-chain
cast call 0xd4d74E089DD9A09FF768be95d732081bd542E498 \
  "ownerOf(uint256)(address)" 1 \
  --rpc-url https://evmrpc-testnet.0g.ai

Full walkthrough at docs/REGISTER_AN_AGENT.md. Source proofs at /proofs.