Skip to content

How a bond works

A bond is an arrangement between one validator and one holder. The holder pays ETH now, the principal, and receives a fixed amount back on a set date. The validator sets the terms, the holder picks the amount and the duration within them, and the contract does the rest.

Interest is simple. It does not compound, and the rate is fixed the moment the bond is bought, whatever the network does over the bond’s term.

I = P * r * n / 365

P is the principal, r the annual interest rate, n the duration in days and I the total interest over the term.

The maturity value is what the holder receives at maturity. It is the principal plus the interest, less the protocol fee charged when the bond is bought.

M = P + I - fee

Every bond purchase pays one protocol fee, taken from the bond’s interest and never from the principal. The percentage follows a fixed schedule that depends only on the time elapsed since the protocol was deployed. It starts low, rises over time and levels off. The fee is fixed at purchase, so later points on the schedule never affect a bond already bought. The schedule is part of the contract code and no party can change it. The fees page shows the full schedule and the other two fees around the protocol.

When a holder buys a bond, the contract mints an NFT that represents it. The NFT holder has the exclusive right to the bond’s maturity value. Each bond is unique, issued against one specific validator with its own principal, interest and maturity, so bonds are not interchangeable. Transferring the NFT transfers the claim.

Every Coffer carries an issue size, the amount currently available for issuing bonds, and a bond can only be bought while its maturity value fits inside it. In the whitepaper’s symbols, given here once:

S = E + C * (1 - R) - Sum
SymbolMeaning
SBond issue size, the amount currently available for issuing bonds
EExecution layer balance, the ETH held in the Coffer contract
CConsensus layer balance, the validator’s balance on the beacon chain
RBuffer, the fraction of the consensus balance held in reserve
SumOutstanding bonds, the total maturity value issued and not yet redeemed

Buying a bond reduces the issue size by the bond’s maturity value. The validator raises it by sending ETH to the contract, which counts in full, or by topping up the consensus balance, which counts net of the buffer. Redeeming a bond does not change it, because the payment leaves the contract balance and the outstanding total by the same amount.

On chain the contract keeps the issue size as a number it adjusts with every event. No contract function reads the consensus balance. At creation the validator reports a starting balance and the contract derives the opening issue size from it at the buffer discount. Whether that report was honest is one of the things a holder checks before buying.

The buffer is the share of the consensus balance the validator holds in reserve against penalties, such as missed attestations, missed sync committee duties, the inactivity leak and slashing. The validator chooses it. The protocol does not enforce it, and it is not an upper bound on the penalties that can actually occur. If realised penalties stay within the buffer, all bonds remain fully backed. If they exceed it, the bonds are no longer fully backed, and the protocol does not prevent that. The buffer is a conservatism estimate the holder weighs against the bond’s duration before buying.

The principal does not stay in the contract. It is forwarded, net of the fee, to the validator’s own wallet the moment the bond is bought. What backs the bond is the validator’s total balance, the ETH in the contract plus the stake on the beacon chain. Rewards and penalties change that backing without changing the issue size.