Statuses across the layers
The chain has no status field. It has facts. A validator has a status on the beacon chain, withdrawal credentials and a slashed flag. A bond is a record in its Coffer with a maturity date, and an NFT that exists until it is burned. A settled bond may have a balance in the redemption escrow. A listing or an offer leaves nothing on the chain but a nonce.
The app turns those facts into one word per thing and shows it as a pill or a label.
This page gives the facts behind each word, and the rule that decides when more than one word could fit. What to do at each status is on Coffer lifecycle and statuses and Bond lifecycle and statuses. What each part is trusted with is on Architecture.
Coffer statuses
Section titled “Coffer statuses”A Coffer’s status follows from three facts about the validator, its state on the beacon chain, its withdrawal credentials and its slashed flag. The beacon chain’s own states are pending, active, exiting, exited and withdrawing, with the slashed flag beside them.
| Pill | What decides it |
|---|---|
| Status Unknown | the beacon chain has nothing for the validator’s key |
| Deposit in Queue | the deposit is in the beacon chain’s pending deposits queue with credentials at the Coffer’s address, or a deposit for the key was seen within one day before the Coffer’s creation and is still on its way |
| Activating | the validator is registered and waiting to become eligible, its credentials at the Coffer’s address |
| Activation Queue | the validator is eligible and waiting for its activation epoch, its credentials at the Coffer’s address |
| Key/Address Mismatch | the key belongs to a validator whose credentials point elsewhere, or the credentials are missing, or they name an address other than the Coffer, on the validator or on its deposit in the queue, or they are in any other form |
| Missing Credentials | the credentials are the 0x00 kind, on the validator in any state or on its deposit in the queue |
| Must Convert | the validator is active with 0x01 credentials at the Coffer’s address |
| Active | the validator is active with 0x02 credentials at the Coffer’s address |
| Exiting | the validator is in the exit queue, its credentials at the Coffer’s address, and it is not slashed |
| Slashed | the validator is slashed and has not exited yet, its credentials at the Coffer’s address |
| Slashed (Exited) | the validator is slashed and has exited or is withdrawing, its credentials at the Coffer’s address |
| Exited | the validator has exited or is withdrawing, and was not slashed, its credentials at the Coffer’s address |
The facts are checked in this sequence, and the first match wins. Two cases come first, Status Unknown for a key the beacon chain has nothing for, and Key/Address Mismatch for a key that belongs to a validator pointing elsewhere. Then the credentials decide, before the state does, because a stake reaches only the Coffer its credentials name. 0x00 reads Missing Credentials. 0x01 or 0x02 naming another address is a mismatch, and so are missing credentials and any other form. A deposit in the queue is judged by the credentials it carries. A deposit that has not reached the queue yet has none to judge, and it reads Deposit in Queue. Only when the credentials name the Coffer does the state decide. The three pending words map one to one. The slashed flag comes next, Slashed while the validator is still in, Slashed (Exited) once it has exited or is withdrawing. An exited or withdrawing validator that was not slashed reads Exited. A validator in the exit queue reads Exiting. Then 0x01 reads Must Convert and 0x02 reads Active. So a slashed or exited validator with 0x00 credentials reads Missing Credentials, not Slashed or Exited, and an exiting validator with 0x01 credentials reads Exiting, not Must Convert.
What the lists show
Section titled “What the lists show”The coffers table has room for one word per row. Status Unknown reads Unknown there, in red, because no deposit was found for the validator. Deposit in Queue, Activating and Activation Queue all read Pending. Must Convert reads Convert, Missing Credentials reads Credentials, Key/Address Mismatch reads Mismatch, both slashed pills read Slashed, and Active, Exiting and Exited keep their names. The detail view draws the finer line.
The Browse filter groups nine of the twelve values into three pills. In Progress holds Deposit in Queue, Activating, Activation Queue and Must Convert. Active holds Active. Ended holds Exiting, Slashed, Slashed (Exited) and Exited. The same three pills sit in the filter sidebar and in the phone’s filter panel, with All beside them for the three together. Browse opens on the Active group alone, so a pending, exiting, slashed or exited Coffer shows only once its group is selected.
Browse leaves three kinds of Coffer out, whatever the filter says. A Coffer whose status is Status Unknown, Key/Address Mismatch or Missing Credentials is never listed. A Coffer whose coverage band is uncovered, the red mark, is not listed either, and it returns once the band reads buffered or covered again. And the connected wallet’s own Coffers are left out, so the list is not where you look for your own. Your portfolio always shows your Coffers, the red ones included. A Coffer that Browse leaves out still opens by its own link.
Two facts beside the status
Section titled “Two facts beside the status”Two flags from the Coffer contract sit beside the status without changing it. The owner’s issuance switch, off, replaces Active with Closed, and only Active, because the owner’s choice does not outrank a problem with the validator, a slashed Coffer still reads Slashed. The default flag adds a second pill, Defaulted, beside the lifecycle pill on the Coffer’s Terms card. The lists’ status column never shows it, so a Coffer in default reads Active, Exiting or Exited there, Browse included, and the Terms card carries the second fact beside it.
Bond statuses
Section titled “Bond statuses”The app shows four pills. Three of the ways a bond ends read the same, and one pill is the app’s own override.
| Pill | On the chain |
|---|---|
| Active | the bond’s record is in the Coffer, the NFT has a holder, and the maturity date is ahead |
| Matured | the record is still there and the date has passed, or the Coffer is in default, which makes the bond claimable whatever its date |
| Defaulted | the Coffer’s default flag is set and the bond’s record is still there, so the bond is claimable now |
| Redeemed | the bond was paid in one of three ways. The holder settled it, and the record is deleted and the NFT burned. The validator redeemed it, and the record is deleted, the NFT burned and the value sits in the shared escrow. Or the holder then drew that escrow, and the chain shows the escrow balance at zero |
A bond reads Matured once its term has passed, though the contract keeps a date and no status. A default marks every live bond matured at once, whatever the date, which is the acceleration. A default-state partial redemption keeps the bond matured with a lower remaining value.
The pill’s precedence is the app’s rule. A settled bond reads Redeemed whatever else is true, because it got paid. Otherwise the Coffer’s default flag reads Defaulted, then a claimable bond reads Matured, and everything else reads Active.
Labels beside the pill
Section titled “Labels beside the pill”The NFT card in the portfolio carries one label of its own, from the same status and flag. Redeemed for a settled bond, Validator defaulted when the Coffer is in default, a countdown such as T-30d while the bond runs, and Matured once the date has passed. Its status dot is green for a settled or claimable bond, amber while the countdown runs, and red in a default.
On Browse, and only there, the connected wallet’s own offer overlays the Active pill. Bidding means the wallet holds the bond’s one open offer of its own, shown or hidden. Outbid means the best shown offer is strictly above it, an equal offer does not outbid. Matured, Defaulted and Redeemed are never replaced.
The holder’s NFT card shows the pill “Offer received” on its ring while at least one offer is shown on the bond. The Ask and Offer columns on Browse, the portfolio and the bond cards show the listing price and the best offer shown, and a dash when there is none. They are market facts, not statuses.
The bond’s history lists its life as events. The labels are Minted, Transferred, Listed, Listing cancelled, Sold, Offer made, Offer cancelled, Offer accepted, Matured by default, Partial redemption and Redeemed. One more line reads Matures until the date and Matured after it.
The Browse filter, the portfolio and a Coffer’s own bond table offer three pills. Active and Matured hold their pills, and Redeemed holds every settled bond, whichever of the three ways it was paid. Browse leaves out every bond of a Coffer whose coverage band is uncovered, whatever the bond’s own status, so a paid bond of such a Coffer is not listed either. Your portfolio and the Coffer’s own bond table still show those bonds, and a bond opens by its own link.
Signed-message states
Section titled “Signed-message states”A signed message is a listing or an offer. It is stored off chain, and it is live, filled, cancelled, expired or replaced. Only a live message can be shown, and only while it passes six checks. A message that fails one is hidden, still live, until the check passes again or the message is closed. On the chain, nothing records a listing or an offer. The chain holds only the nonces, one per bond per maker on each side and one global one per maker, which a fill or a cancel bumps. A bumped nonce is what makes an old signature worthless.
| State | What it means | What the app shows |
|---|---|---|
| Live and shown | the message passes every check | the listing card with Cancel Listing, or the offer card with Cancel Offer and the pencil, the Ask or Offer column, Bidding on Browse, and the history line Listed or Offer made |
| Live but hidden | one of six checks fails, its expiration, the bond’s standing, its remaining value, the maker’s WETH or allowance, a contract wallet’s answer, or the listing’s holder | the maker’s note “Your offer is not shown” with the reason in plain words, see Why an offer is not shown |
| Filled | a taker filled it on the chain | Sold or Offer accepted in the history, a chain line that stays |
| Cancelled | the maker cancelled it on the chain | Listing cancelled or Offer cancelled in the history, a chain line that stays |
| Expired | its expiration passed, the chain refuses it by itself | nothing new |
| Replaced or closed | a better message from its maker replaced it, a fill at or above its nonce invalidated it, or it could no longer fill and was closed | nothing new |
The Listed and Offer made lines come from the stored message itself, at its post time, and last as long as the message is kept. A closed message is deleted 30 days after it closes, and its line goes with it, while the chain lines stay. The six reasons in the maker’s own words, and what to do for each, are on Why an offer is not shown. A taker never sees any of this, a hidden message is simply absent, and the expiration shows under the price while the message is shown.
Deposit states
Section titled “Deposit states”A top up through the Coffer is the one deposit the app shows on its way, in three stages.
| Stage | What it means | What the app shows |
|---|---|---|
| Recorded | recorded from the transaction, not yet seen in the beacon queue | the Pending Deposit row on the Terms card, and the amount counted in the backing |
| Queued | in the beacon chain’s pending deposits queue | the same row |
| Landed | it left the queue and sits in the validator’s balance | the row goes, the amount is in Validator Balance, and the deposit leaves the list |
The row shows and the amount counts only while the validator’s credentials point to the Coffer. In the statuses Status Unknown, Key/Address Mismatch and Missing Credentials the Terms card shows no Pending Deposit row, and Validator Balance reads a dash.
A deposit stays in the queue for at least two epochs, and a churn cap can hold it longer. A deposit sent any other way, from a wallet straight to the beacon deposit contract, gets no row. It shows once it is in the balance.
Coverage bands
Section titled “Coverage bands”Coverage is one word per Coffer. What the Coffer promised is its issue size plus what its outstanding bonds are still owed. Its backing is the contract balance plus the balance on the beacon chain plus the pending deposits. The beacon balance and the pending deposits count only while the validator’s credentials are 0x01 or 0x02 and name the Coffer. Several Coffers can declare one validator key, and only the one its credentials name receives the stake. A Coffer whose validator is still on 0x00 counts its contract balance alone. The buffer is the validator’s own reserve, a share of the beacon balance that the first band leaves out.
| Band | Rule | The mark |
|---|---|---|
| Buffered | the promised sum is within the backing with its beacon side discounted by the buffer | green |
| Covered | the promised sum is within the full backing | amber |
| Uncovered | the promised sum is beyond the backing | red |
| Unknown | the contract balance has not been read yet, or the last reading failed | grey |
The band can only read too low, never too high. A credit to the contract that is not counted yet leaves the backing below the truth, and a failed reading leaves the band unknown rather than stale. The mark carries the band’s colour on the Terms card’s coverage line, on the coffer rows and cards, on the bond rows and cards, on the Coffer’s own bond table and on the NFT card. What to make of the three words before you buy is on Before you buy.
The app acts on the band in two places. Browse lists no Coffer and no bond whose band is uncovered, and a Coffer’s page shows the buy card only while the band is buffered or covered. A Coffer with a grey mark stays listed, since there is no band to judge it by, and it shows no buy card until the band is known again.
The app’s own transient words, Confirm in wallet, Checking…, Processing… and Syncing…, are not statuses. They mark a wait inside the app, and the guide pages say what each one waits for.