Arrears
A failed transaction is evidence

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.

Sepolia · block 11,646,965 · WETH.withdraw()
reading…
operator0x9733EcE9ba…178Ematches
chainEthereum Sepoliamatches
window11,646,000 – 11,700,000matches
contract0xfFf9976782…6B14matches
selector0x2e1a7d4dNOT IN SCOPE
OutOfScope(Selector, 0xfFf9976782d46CC05630D1f6eBAb18b2324d6B14, 0x2e1a7d4d, 11646965)

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.

The fault line

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.

1.47%
of mainnet transactions revert
49,140 measured across 200 attested blocks
10.3%
of those are out of gas
the only class where fault is unambiguous
0
logs on a reverted transaction
813 of 813 measured, and an all-zero bloom

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.

Three outcomes · four rulings · all mined
reading…

A refusal is the system working.

Every one of these is a transaction on Creditcoin you can open in a block explorer we do not control. None of them is an error — a refusal is the system working. What separates them is what each one changed.
outcome 1 of 3

Bond moved

out of gas — the sender chose the limit
as at CC3 block 5,440,296 · 2026-09-06 11:32
  • bond−2.0 tCTC
  • treasury+2.0 tCTC
  • credit limit1,000 → 750 tCTC
  • premium500 → 650 bps
  • strikes0 → 1
  • claims on record+1
the ruling 0xa7b1e50e…
status 1 · 620,046 gas

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.

outcome 2 of 3

Record kept

explicit revert — on the record, never slashable
as at CC3 block 5,440,310 · 2026-09-06 11:36
  • bondunchanged
  • treasuryunchanged
  • credit limitunchanged
  • premiumunchanged
  • strikesunchanged
  • claims on record+1
the ruling 0xe585da11…
status 1 · 528,388 gas

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.

outcome 3 of 3

Turned away

outside the promise — nothing happened at all
as at CC3 block 5,440,311 · 2026-09-06 11:36
  • 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.

The operator right now
read live from the registry, this second
reading…
bonded
18 tCTC
slashed
2 tCTC
credit limit
750 tCTC
premium
650 bps
strikes
1
claims on record
2

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.

File a claim yourself

Pick a real failure. Watch the court decide. We pay the gas.

No wallet, no account, no signature. The evidence below is real: Sepolia transactions that already failed and are already attested, so nothing here waits on a chain.
1 — choose the kind of failure
evidence
0x9bac08cd…56f981
block
11,647,164
gas
24,187 used of 100,000 — refunded
2 — choose what to ask the court · one choice, made once

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.

3 — who gets credited on chain

This exact address goes into the ClaimRuled event. Put your own in — a stranger directing a real ruling is the point.

4 — preview for free, then submit · the preview is an eth_call and costs nothing
Beyond reading

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 →
Three roles
  • 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.

What we take on trust

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.

Why the live slash runs on Sepolia

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.

Settlement-time, not interception

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.

A bounty would make 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.