The only price feed to get the rETH value for the following features:
Yield calculation
deposit()
depositEth()
for zethAmounts returns
zETH to ETH conversion on BridgeRouterFacet::_ethConversion
It is totally dependend on Rocket's Pool DAO, which has a risk of consensus attacks on RPL nodes, where nodes may submit incorrect exchange rate data.
Which is a single point of failure with no implemented corrective measure.
To determine the current exchange rate between rETH and the underlying staked ether, the getEthValue()
function is used. This function relies on the reported ether balance from nodes and stored in a special contract called RocketNetworkBalances. Ether balance is divided by the current rETH supply and that value is considered as the current exchange rate.
DittoETH relies exclusively on rocketETHToken::getEthValue
to know the ETH value of the BridgeReth
rETH balances, getEthValue
is used to compute the zethTotalNew
in LibVault.sol
.
RocketPools getEthValue
call trace:
Source
totalEthBalance setter:
Source
Which is set by executeUpdateBalances
and submitBalances
in the same contract, only callable by the DAO.
Network ether balances are submitted by the trusted oracles also known as nodes. The submitBalances function call will only pass once the required number of balance submissions from node operators is reached. It’s worth noting that there are no checks on balance changes, which could potentially have a significant impact in the event of an RPL nodes consensus attack.
It's crucial to remain vigilant about the risk of consensus attacks on RPL nodes, where nodes may submit incorrect exchange rate data.
Potential incorrect yield distribution and zETH -> ETH conversion, which would reduce overall DittoETH liquidity and attractiveness.
Users that have already deposited any LSD, would got an inexact value for their ETH withdrawing.
Potentially losing user funds.
Manual review, Rocket Pool documentation.
DittoETH shouldn't rely exclusively on rocketETHToken::getEthValue
to know the ETH value of the BridgeReth
rETH balances.
Governance should be able to change price feed to an alternative one.
The contest is live. Earn rewards by submitting a finding.
This is your time to appeal against judgements on your submissions.
Appeals are being carefully reviewed by our judges.