Skip to content
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

EIP-4863: Beacon chain push withdrawals #4863

Merged
merged 8 commits into from
Mar 4, 2022

Conversation

ralexstokes
Copy link
Member

No description provided.

@ralexstokes ralexstokes changed the title EIP-TBD: Beacon chain push withdrawals EIP-4863: Beacon chain push withdrawals Feb 28, 2022
Copy link
Contributor

@MicahZoltu MicahZoltu left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Only blocker is the Reference Implementation section.

I would like to have a debate about using the term Gwei in our specifications and documentation at some point, probably on a broader stage though. I think we are doing our users (especially future users) a disservice by perpetuating the term gwei and wei instead of nanoether and attoether because most users don't understand that wei is just a small amount of ether and they think it is some other unit/measure.

EIPS/eip-beacon_chain_push_withdrawals.md Outdated Show resolved Hide resolved
EIPS/eip-beacon_chain_push_withdrawals.md Outdated Show resolved Hide resolved
EIPS/eip-beacon_chain_push_withdrawals.md Outdated Show resolved Hide resolved
EIPS/eip-beacon_chain_push_withdrawals.md Outdated Show resolved Hide resolved
EIPS/eip-beacon_chain_push_withdrawals.md Outdated Show resolved Hide resolved
EIPS/eip-beacon_chain_push_withdrawals.md Outdated Show resolved Hide resolved
Comment on lines 108 to 113
## Reference Implementation

A draft PR containing a prototype implementation in Geth can be found here:

https://github.com/ethereum/go-ethereum/pull/24468

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
## Reference Implementation
A draft PR containing a prototype implementation in Geth can be found here:
https://github.com/ethereum/go-ethereum/pull/24468

Either inline a reference implementation, or include a standalone reference implementation in ../assets/eip-4863/*, or leave this section out. Linking to a pull request to an entire execution client does not qualify as a "reference implementation" for an EIP, that is just called a full production client.

Copy link
Member Author

@ralexstokes ralexstokes Mar 1, 2022

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

i think a link to a PR here is a great way to showcase the relative complexity of this change (esp. if you are familiar w/ Geth implementation).

i can remove it if you think it blocks this EIP but i'll just link it everywhere else in that case so it seems a bit pedantic imo

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I strongly encourage you to link it elsewhere and I recommend putting it in the discussions-to link at the least. You are correct that it is a bit pedantic, but that pedantry is necessary because we are woefully understaffed in terms of EIP editors and hard and fast rules are easy to implement and allows us to maintain a certain level of quality of EIPs compared to fuzzy rules which require nuance and discussion to make decisions on.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done!

@ralexstokes
Copy link
Member Author

I would like to have a debate about using the term Gwei in our specifications and documentation at some point

yeah i also think we should go ahead and do the conversion Gwei -> Wei on the beacon so there is one less thing to do at the execution layer

@ralexstokes ralexstokes force-pushed the beacon-chain-push-withdrawals branch from 3f8ae4f to 6112100 Compare March 1, 2022 20:32
@ralexstokes ralexstokes marked this pull request as ready for review March 1, 2022 20:39

Implementations should take care to decode the correct amount of wei from the `EncodedWei` value, which represents a 256-bit unsigned integer value in little-endian byte order.

TODO: add logs?
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Does this transaction have a receipt? Current APIs assume receipts can be accessed by tx-index, so those would break if this transaction does not output a receipt. Also, if the receipt is defined as the standard type ++ rlp([status, cumulative_transaction_gas_used, logs_bloom, logs]), then the receipt is a constant bytestring, since this always succeeds, has 0 gas, and no logs.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

i think it is likely we add some kind of logging and along with those changes we'd introduce some kind of receipt format as well.


## Security Considerations

Consensus-layer validation of withdrawal transactions is critical to ensure that the proper amount of ETH is withdrawn back into the execution layer.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This deserves a comment in the block-validity section imo.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

But the executioin-layer can't actually do the validation. It is entirely reliant upon CL validating that the proper receipts were dequeued from the beacon state.

The execution-layer can enforce some things such as type-3 TXs only being at the front of the block instead of interspersed in normal TXs, but it can't know the proper count or values (unless we added requisite merkle proofs and counters)

so specifically -- what do you want to see in the block-validity section? If a block is being inserted (via the CL events) it is assumed requisite CL validations have occured


## Security Considerations

Consensus-layer validation of withdrawal transactions is critical to ensure that the proper amount of ETH is withdrawn back into the execution layer.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Additional security concern: this type of transaction may not be propagated through anything else than the engine API or trusted blocks (i.e. part of a chain recognized by the consensus layer). The tx-pool could be spammed with useless non-processable withdrawal transactions, and execution payload builders shouldn't consider these during building, or the payload will be invalid.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

good call!

It might be worth defining this more broadly as a "system TX" or a "CL TX" and none of those types of TXs can be gossiped

@eth-bot
Copy link
Collaborator

eth-bot commented Mar 3, 2022

All tests passed; auto-merging...

(pass) eip-4863.md

classification
updateEIP
  • passed!

EIPS/eip-4863.md Outdated Show resolved Hide resolved
@eth-bot eth-bot enabled auto-merge (squash) March 4, 2022 10:30
@eth-bot eth-bot merged commit c0cf9f1 into ethereum:master Mar 4, 2022
@ralexstokes ralexstokes deleted the beacon-chain-push-withdrawals branch March 4, 2022 14:07
PowerStream3604 pushed a commit to PowerStream3604/EIPs that referenced this pull request May 19, 2022
* Add an EIP for beacon chain push withdrawals.

* Update EIPS/eip-beacon_chain_push_withdrawals.md

* add discussions link

* use Wei over Gwei

* address feedback

* remove reference implementation section

* rename EIP file

* Update EIPS/eip-4863.md

Co-authored-by: Micah Zoltu <micah@zoltu.net>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants