index41
index41 proves transaction A executed before transaction B inside an Ethereum block — a fact carried in no payload and readable by no oracle — and makes a relay’s bond pay for breaking its no-sandwich promise.
The 30-second path
- Open the landing page and scroll to the ledger. Three rows of a real Ethereum mainnet block light up in sequence — the positions are decoded live, in front of you.
- Read the banner above the ledger. It names which of the two real sources is on screen right now: a live chain read, or the captured artifact if the public node is down. There is no third source.
- Click re-read the chain. That hits /api/proof, which performs a real eth_getTransactionReceipt against a public CC3 node every time.
- Check us against a stranger: the ruling on Blockscout (the contract is source-verified, so the explorer decodes the events itself), and the mainnet block the positions came from.
The receipt
Read live from the chain just now. Every row is checkable at a link on this page.
| Provenance of this page | LIVE CHAIN READ · https://rpc.cc3-testnet.creditcoin.network |
|---|---|
| Contract (source verified) | 0xb37bc52b9d6f7431ba8be4ded4f53281efb10ec2 |
| The ruling transaction | 0xd136dea052…7f4d243810 · status 1 · block 5,317,821 · 5 logs |
| Source of truth | Ethereum mainnet block 25,764,741 · 240 transactions · mined 2026-08-16 02:51:11 UTC |
| Positions recovered | 14 → 15 → 16 — from merkle laterality, by calculateTxIndex |
| On-chain vs off-chain | RLLLRRRR→14/14 LLLLRRRR→15/15 RRRRLRRR→16/16 · all agree |
| Ordering assertion | front 14 < victim 15 < back 16 · holds |
| Harm paid from the bond | 219,708 wei → 0x51f400b9…af6a1410 (the address the proof says was sandwiched) |
| Gas | 1,092,100 — 1.456% of MAX_GAS_CAP (75,000,000) |
| Contract tests | 120 Foundry unit tests across 4 suites, 0 failed |
| Exhaustive verification | 256 positions — every leaf of the depth-8 tree round-tripped through the laterality decoder in test_TxIndexOfRoundTripsEveryPositionInTheTree |
| Attestcoin surfaces | 36 made load-bearing, 24 of them undocumented; 30 do real work on a clean default run (3 more are constructed but never queried), all 36 across the default and --kill-hosted runs (official examples: 3). Counted by the run itself — npm run prove prints ATTESTCOIN SURFACES EXERCISED THIS RUN: 30 and names all 36 into docs/pipeline-output.txt |
Reproduce it
No flags switch the judged capability on or off. There is no offline mode, no mock and no demo toggle anywhere in this repository.
# the demo surface — zero config, no .env, no wallet
npm install && npm run dev # → http://localhost:3000
# re-read every live source and diff the committed artifact
node scripts/capture-proof.mjs --check
# the full on-chain run: deploy → bond → prove → pay, on CC3 testnet
# (needs a funded CC3 key at ~/.config/creditcoin/index41-testnet.json)
npm run build:cc3 && npm run prove -- --fresh-court
# the contract suite
npm test # forge test --summary — 120 tests
# one-line independent check of a position, against a stranger's API
curl -s https://eth.blockscout.com/api/v2/transactions/0xec3777f9d0e55d03b9caa3a4b8a786dd62e16eeb327a9f1c45dfbc79af618436 | jq .positionWhat this does not do
- It cannot prove state. Attestcoin commits transaction history, not state, so harm is the attacker's realized profit read from proven Swap logs — never a counterfactual against a pre-sandwich reserve ratio. A contract claiming otherwise would be lying, so this one does not offer it.
- It does not detect sandwiches on-chain. The caller supplies three transaction hashes; the contract rules on them. The pipeline and scripts/find-sandwich.ts find real ones off-chain.
- One bonded relay, one ruling. A multi-relay registry and a historical-claim browser were cut deliberately, not missed. The unit tests cover the mechanism; the deployed contract has ruled once, on the sandwich above.
- Testnet, unaudited. CC3 testnet, 102031. The bond is play money until it is not.
- Three of the 120 unit tests prove the mock, not the precompile. Unit tests run on a bare EVM where the precompile address holds no code, so the laterality tests assert against MockVerifier's Solidity reimplementation. The real precompile was confirmed separately, live on CC3 — docs/spike-output.txt.
Everything else
- The demo surface
- The proof, as JSON
- README — the full argument
- docs/PIPELINE.md — how the proof is built and audited
- docs/DEPLOYMENT.md — every deploy, bond and balance
- The ruling transcript
- The replay guard refusing a second claim
- Index41.sol
The three mainnet transactions this ruling is over: 14 0xec3777…618436 · 15 0x7b0541…4485a0 · 16 0xb0cae3…5be23a