A real failure.
A bonded operator.
Turned away.
This transaction failed on Ethereum. The account that sent it has a bond posted on Creditcoin. It happened inside the covered window, on a covered contract. Arrears refused to touch the bond, because the operator never promised to answer for withdraw().
A rule that only ever says yes is not a rule. Start here, not at the payout.
| operator | 0x9733EcE9ba…178E | matches |
| chain | Ethereum Sepolia | matches |
| window | 11,646,000 – 11,700,000 | matches |
| contract | 0xfFf9976782…6B14 | matches |
| selector | 0x2e1a7d4d | NOT IN SCOPE |
Nothing was slashed. Nothing was recorded. The refusal names the one axis that missed, so a submitter learns what to change rather than only that something did.
No wallet. No account. Nothing installed.
Reverting is not failing a duty. Running out of gas is.
1.47% of Ethereum mainnet transactions revert — roughly 26,000 a day, measured across 49,140 transactions in 200 attested blocks. A contract that slashed on receiptStatus == 0 would be slashing operators for participating in DeFi.
So Arrears slashes on one thing only: gasUsed >= gasLimit. The sender chose the limit, and nobody can race them into choosing it badly. That is 10.3% of reverts. Everything else is recorded and never punished — the callee rejected the call, and the state it rejected against may have moved between broadcast and inclusion.
There is also nothing else to go on. A top-level revert rolls back the journal, and the attested encoding has no revert-reason field. The documented Attestcoin pattern is event-driven throughout, which means it cannot see failures at all. Arrears reads calldata, gas and identity instead.
A refusal is the system working.
Bond moved
- bond−2.0 tCTC
- treasury+2.0 tCTC
- credit limit1,000 → 750 tCTC
- premium500 → 650 bps
- strikes0 → 1
- claims on record+1
previewClaim predicted OutOfGas and 2.0 tCTC before a wei was spent. The ruling matched exactly, and the reprice happened in the same transaction as the slash.
Record kept
- bondunchanged
- treasuryunchanged
- credit limitunchanged
- premiumunchanged
- strikesunchanged
- claims on record+1
SlashRefused carried 0x6bf93631 — the selector of NotSlashableExplicitRevert, so the refusal is a named error in the ABI rather than a string. The failure is on the operator's record and cost them nothing.
Turned away
- bondunchanged
- treasuryunchanged
- credit limitunchanged
- premiumunchanged
- strikesunchanged
- claims on record0
Two ways to be turned away. The strict path is the sharper one: after it, claim.ruledAt is still 0 — it refused and wrote nothing, which is what makes the two submission shapes a demonstrated fact rather than a design note.
These numbers are further along than the three cards above, and that gap is the point. Each card is frozen at the block it was ruled at. Every claim filed since — including any a visitor filed from this page — has moved the operator on: more strikes, a lower limit, a higher premium. The record only accumulates.
A relayer paid the gas for all of them and a separate beneficiary was credited each time. Filing a claim borrows no authority from anyone, so the relayer is simply the sender — sponsored submission with no meta-transaction machinery.
Pick a real failure. Watch the court decide. We pay the gas.
- evidence
- 0x9bac08cd…56f981 ↗
- block
- 11,647,164
- gas
- 24,187 used of 100,000 — refunded
You cannot ask for both. Recording consumes the claim id, so asking to slash afterwards would return AlreadyClaimed instead of a real answer — a hazard we hit ourselves, designed out here rather than documented beside it.
This exact address goes into the ClaimRuled event. Put your own in — a stranger directing a real ruling is the point.
Everything so far needed nothing installed.
That does not change. The whole of this page, every ruling, the seven mainnet failures and any operator's record stay readable with no wallet, no account and nothing installed — including the claim you just watched the relayer pay for.
The dashboard is where you act. Bond an operator, declare what the bond answers for, revoke it, or bring evidence and put your own address in the ruling. Those send transactions, so those need a wallet — and nothing else does.
open the dashboard →- Operatorwallet to act
Post a bond, declare (contract, selector) coverage over a block window, revoke, withdraw.
- Claimantwallet to act
Bring evidence, choose the submission shape, name yourself in the ruling.
- Lender or observerno wallet needed
Read any operator's record and credit terms.
The registration screen shows the digest being signed and states outright that the identity binding is the one thing the precompile does not verify. It reads without a wallet too.
Seven real mainnet failures, three years apart.
ArrearsVerdict library the court rules with, inlined into both.No bond attaches to any of these, because nobody here holds those keys. That is the identity binding working, not a gap: a project that could slash arbitrary mainnet addresses would be one that never checked who it was slashing.
| event | source transaction | block | continuity | gas used / limit | verdict | |
|---|---|---|---|---|---|---|
| USDC depeg (SVB) | 0xc22eb305…2a8096 ↗ | 16,806,527 | 474 roots | 324,239 / 324,239 | OutOfGas | reading… |
| USDC depeg (SVB) | 0x1dd76820…e71c22 ↗ | 16,806,523 | 478 roots | 77,600 / 77,600 | OutOfGas | reading… |
| Yen carry unwind | 0x252a53c5…6625e4 ↗ | 20,462,242 | 759 roots | 134,138 / 134,138 | OutOfGas | reading… |
| Yen carry unwind | 0xbf4a6412…a206d0 ↗ | 20,462,236 | 765 roots | 76,808 / 76,808 | OutOfGas | reading… |
| Feb 2025 selloff | 0x3198a097…224fcc ↗ | 21,769,440 | 561 roots | 134,482 / 134,482 | OutOfGas | reading… |
| Oct 2025 cascade | 0x27cb5855…4a967c ↗ | 23,549,876 | 125 roots | 120,000 / 120,000 | OutOfGas | reading… |
| Oct 2025 cascade | 0xee76fbbb…f3c756 ↗ | 23,549,876 | 125 roots | 80,000 / 80,000 | OutOfGas | reading… |
All seven are out of gas: gasUsed == gasLimit exactly. All seven carry zero logs. Older entries cost more to prove because continuity proofs lengthen as attestation checkpoints thin out — 125 roots for October 2025, 765 for August 2024.
One thing, and the precompile does not verify it.
Everything else here is proven. That a transaction was included, that it failed, what it called, how much gas it burned — all of it comes out of bytes the block-prover precompile verified. But the bond lives on Creditcoin while the evidence names an Ethereum address, and nothing in an Attestcoin proof connects those two identities.
The registry closes that gap with an EIP-191 signature, checked with ecrecover. Sound in practice — an operator gains nothing by binding an address they do not control. But it is a different kind of claim from everything around it, and a compromised source-chain key means a wrongly attributable bond that no amount of proving would catch.
You cannot bond an operator whose keys you do not hold. So the seven mainnet failures stand as a read-only gallery of what the protocol would have caught, and the slash runs where we hold the key. The split is evidence that the check is real.
Broadcast to provable is 41 blocks, about eight minutes — measured. Arrears cannot stop a failure. But slashing a bond after a proven failure has no real-time requirement: the failure already happened and the fault is already fixed. The cadence would be fatal to a liquidation guard. It costs this design nothing.
beneficiary a value the paying relayer could redirect. So the claimant's reward is the slash landing where it belongs, and nothing more. That is a real weakness of unrewarded fraud proofs: nobody is paid to go looking.All four source-verified, so the explorer decodes these events without us.