-
Notifications
You must be signed in to change notification settings - Fork 1k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
CHAIN_START_FULL_DEPOSIT_THRESHOLD bypass #1048
Comments
One idea is to remove This has the added advantage of cleaning up |
At this point, the community controls 100% of validating keys, the attacker has spent 2M eth that is now locked in withdrawable state (no transfers yet), and now has to spend another 32000 eth to make the sufficient deposits to take over. The more sane attack is to take the 2M eth and make separate deposits and just control the initial vset. Will ponder the value of Another alternative is to separately count distinct pubkeys in a map and only initiate genesis at 65k full distinct pubkey deposits. |
Closing in favour of #1152 which address this issue. |
The deposit contract has a
CHAIN_START_FULL_DEPOSIT_THRESHOLD
(currently set to65536
). The intent is that, at the genesis of Eth2, there is at leastCHAIN_START_FULL_DEPOSIT_THRESHOLD * 32
ETH at stake. This expectation is not realised when multiple full deposits are made to the same pubkey.An attacker could take advantage of this. To illustrate, the attacker makes 65,000 full deposits to the same pubkey A. The other 536 pubkeys are controlled by the community. At
Eth2Genesis
the attacker does an immediateVoluntaryExit
for pubkey A, and makes 1000 new deposits . Those new deposits are sufficient to take over Eth2, at a low cost.The text was updated successfully, but these errors were encountered: