Skip to content

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.

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.

PillWhat decides it
Status Unknownthe beacon chain has nothing for the validator’s key
Deposit in Queuethe 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
Activatingthe validator is registered and waiting to become eligible, its credentials at the Coffer’s address
Activation Queuethe validator is eligible and waiting for its activation epoch, its credentials at the Coffer’s address
Key/Address Mismatchthe 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 Credentialsthe credentials are the 0x00 kind, on the validator in any state or on its deposit in the queue
Must Convertthe validator is active with 0x01 credentials at the Coffer’s address
Activethe validator is active with 0x02 credentials at the Coffer’s address
Exitingthe validator is in the exit queue, its credentials at the Coffer’s address, and it is not slashed
Slashedthe 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
Exitedthe 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.

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 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.

The app shows four pills. Three of the ways a bond ends read the same, and one pill is the app’s own override.

PillOn the chain
Activethe bond’s record is in the Coffer, the NFT has a holder, and the maturity date is ahead
Maturedthe record is still there and the date has passed, or the Coffer is in default, which makes the bond claimable whatever its date
Defaultedthe Coffer’s default flag is set and the bond’s record is still there, so the bond is claimable now
Redeemedthe 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.

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.

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.

StateWhat it meansWhat the app shows
Live and shownthe message passes every checkthe 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 hiddenone 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 holderthe maker’s note “Your offer is not shown” with the reason in plain words, see Why an offer is not shown
Filleda taker filled it on the chainSold or Offer accepted in the history, a chain line that stays
Cancelledthe maker cancelled it on the chainListing cancelled or Offer cancelled in the history, a chain line that stays
Expiredits expiration passed, the chain refuses it by itselfnothing new
Replaced or closeda better message from its maker replaced it, a fill at or above its nonce invalidated it, or it could no longer fill and was closednothing 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.

A top up through the Coffer is the one deposit the app shows on its way, in three stages.

StageWhat it meansWhat the app shows
Recordedrecorded from the transaction, not yet seen in the beacon queuethe Pending Deposit row on the Terms card, and the amount counted in the backing
Queuedin the beacon chain’s pending deposits queuethe same row
Landedit left the queue and sits in the validator’s balancethe 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 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.

BandRuleThe mark
Bufferedthe promised sum is within the backing with its beacon side discounted by the buffergreen
Coveredthe promised sum is within the full backingamber
Uncoveredthe promised sum is beyond the backingred
Unknownthe contract balance has not been read yet, or the last reading failedgrey

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.