-
Notifications
You must be signed in to change notification settings - Fork 20.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
internal/ethapi: handle blobs in API methods #28786
Conversation
Co-authored-by: lightclient <14004106+lightclient@users.noreply.github.com>
Co-authored-by: Martin HS <martin@swende.se>
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM
I rebased to fix the merge conflicts. Note that this PR is in accord with the spec. As you can see |
I changed |
Triage discussion:
In a future PR, we should make these not fail: geth should be able to produce anything that is ethereum mainnet relevant/acceptable. |
Co-authored-by: Martin HS <martin@swende.se>
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Please undo the change to tests/testdata
, I guess you committed it unintentionally.
This reverts commit 402313c.
Oops, fixed. |
EIP-4844 adds a new transaction type for blobs. Users can submit such transactions via `eth_sendRawTransaction`. In this PR we refrain from adding support to `eth_sendTransaction` and in fact it will fail if the user passes in a blob hash. However since the chain can handle such transactions it makes sense to allow simulating them. E.g. an L2 operator should be able to simulate submitting a rollup blob and updating the L2 state. Most methods that take in a transaction object should recognize blobs. The change boils down to adding `blobVersionedHashes` and `maxFeePerBlobGas` to `TransactionArgs`. In summary: - `eth_sendTransaction`: will fail for blob txes - `eth_signTransaction`: will fail for blob txes The methods that sign txes does not, as of this PR, add support the for new EIP-4844 transaction types. Resuming the summary: - `eth_sendRawTransaction`: can send blob txes - `eth_fillTransaction`: will fill in a blob tx. Note: here we simply fill in normal transaction fields + possibly `maxFeePerBlobGas` when blobs are present. One can imagine a more elaborate set-up where users can submit blobs themselves and we fill in proofs and commitments and such. Left for future PRs if desired. - `eth_call`: can simulate blob messages - `eth_estimateGas`: blobs have no effect here. They have a separate unit of gas which is not tunable in the transaction.
EIP-4844 adds a new transaction type for blobs. Users can submit such transactions via
eth_sendRawTransaction
. In this PR we refrain from adding support toeth_sendTransaction
and in fact it will fail if the user passes in a blob hash.However since the chain can handle such transactions it makes sense to allow simulating them. E.g. an L2 operator should be able to simulate submitting a rollup blob and updating the L2 state. Most methods that take in a transaction object should recognize blobs.The change boils down to adding
blobVersionedHashes
andmaxFeePerBlobGas
toTransactionArgs
. In summary:eth_sendTransaction
: will fail for blob txeseth_signTransaction
: will fail for blob txesAs geth moves away from user-management responsibilities, the methods that sign txes will not support the new EIP-4844 transaction types. Please use
eth_sendRawTransaction
instead. Resuming the summary:eth_sendRawTransaction
: can send blob txeseth_fillTransaction
: will fill in a blob tx. Note: here we simply fill in normal transaction fields + possiblymaxFeePerBlobGas
when blobs are present. One can imagine a more elaborate set-up where users can submit blobs themselves and we fill in proofs and commitments and such. Left for future PRs if desired.eth_call
: can simulate blob messageseth_estimateGas
: blobs have no effect here. They have a separate unit of gas which is not tunable in the transaction.