-
Notifications
You must be signed in to change notification settings - Fork 998
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
Improved transfer replay protection, and removal of transfers in phase 0 #1274
Comments
So the only substantive thing here is removing |
It's also worth noting that this mechanism could be reused in phase 2 to prevent replay of withdrawals from execution environments into other execution environments, though in that case |
Do you still have to specify a slot or epoch? I'm not certain what problem this is actually solving. If a validator has a Transfer for a |
Or are you suggesting removing |
Yes. |
As discussed on our call, |
So is the only thing this solving the ability to expand it to |
The point is that the re-broadcast would not have to modify |
It expands slot to |
Then we move it to a new phase-1 beacon-chain updates document? Or will it live with the updated beacon-block body definition in the custody game doc? |
A new phase 1 beacon chain update document makes sense. (Mixing transfers with the custody game is a bit awkward.) My guess is longer term the miscellaneous update documents will be collapsed into a unified beacon chain state transition document. |
I'm thinking about organizing specs into new sub-directories (will break links... :/). These directories would be grouped by fork and ordered. This would open up easily putting transfer into it's own fork defined as a beacon chain file in That said, don't want to do this surgery until we discuss more |
I'm still pro doing a transfer-enabling fork for practice independent of phase 1 fork |
Another replay case (although much rarer) is when validators change index after an Eth 1 re-org. Credits to @sorpaas for surfacing it and bringing it to our attention on discord. This may be solved by modifying the other replay protection measures. Or we replace the receiver index with the receiver pubkey. And, as mentioned by Justin. When we have eth2 -> eth2 deposits, indices can get much more unstable, and transfers will need this replay protection. Something to keep in mind when revisiting the transfer design. |
@protolambda My favourite conservative fix is to replace indices in transfers by pubkeys. |
transfers removed! |
Replace the current slot-based transfer replay protection mechanism by adding
state.transfer_roots: Vector[Hash, MAX_TRANSFERS * SLOTS_IN_REPLAY_PROTECTION_PERIOD]
. We can also completely move transfers from phase 0 to phase 1.The text was updated successfully, but these errors were encountered: