ETH Balance Submission

Since rETH is a value accruing token, the protocol needs to update the exchange rate for rETH regularly to distribute rewards and ensure a fair price for new entrants. ETH in the protocol is spread between many locations: Beacon Chain validators, minipool contracts, node distributor contracts, smoothing pool, and deposit pool. At the moment the execution layer can not access Beacon Chain state, so tracking of validator balances is particularly difficult.

The rETH exchange rate is calculated as: totalEthBalance / rETHSupply. Currently, oDAO members calculate these values off-chain through the watchtower portion of the smartnode and then vote on a new balance on-chain. Once more than 51% of oDAO members agree on them, they are updated. There is a pDAO setting for update frequency that is used in the smartnode code, but it is not enforced in the contracts.

Any uint256 value can be submitted fortotalEthBalance and rETHSupply, so the rETH rate could be set to 0. In that case, burning any amount of rETH would give 0 ETH. The rETH rate could also be set to a very high amount that would allow someone to claim any ETH in the deposit pool or the rETH contract for a tiny amount of rETH. For update frequency, each update specifies a block value. There is a check that lastSubmissionBlock < block < block.number. Note that this allows changing balances multiple times in a block: Say for example that lastSubmissionBlock = 100 and we are at block 200. Then it is possible to set new balances for block = 101, 102, 103, ..., 199 right after another. In a worst case scenario of a compromised oDAO, an attacker could bundle together the following transactions:

  • set rETH exchange rate high enough

  • burn 0.01 rETH to redeem all the ETH in the deposit pool and rETH smart contract

  • set exchange rate to 0 At this point nobody else would be able to redeem rETH and the attacker could repeat the steps above as more ETH becomes available.

At this point nobody else would be able to redeem rETH and the attacker could repeat the steps above as more ETH becomes available.

Therefore Balance Submission introduces a very high level of trust for rETH holders. See the Guardrails - Balance Submission section for a potential improvement in the short term and Verifiable Off-Chain Calculations for an approach without trusted oracles.

Last updated