-
Notifications
You must be signed in to change notification settings - Fork 3.5k
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
all: L1 Pectra support (Upgrade 12) #13627
Comments
@protolambda regarding your proposed future work for generic receipts, I'm not sure it makes sense for now given how I specified handling of future receipts in ethereum-optimism/specs#518 - they are expected to decode exactly the same as type 0-4 txs, so the current |
@sebastianst see code here: https://github.com/ethereum-optimism/op-geth/blob/6c1047a2d9db86d03f635bb24704b77675189227/core/types/receipt.go#L351 Geth will not decode the receipt binary data (as passed via pre-image oracle) if not configured with a recognized type. The receipt bytes are prefixed with the type byte just like txs, and thus distinguished and not automatically compatible. And currently type 4 is not supported (until we merge in later geth work with 7702 tx type). And this problem will repeat for future tx types if we don't change the receipt decoding code or implement separate custom receipt decoding here in the monorepo. |
Ah makes sense, thanks! I was falsely assuming that the decoding code wouldn't check the types, which of course was a strange assumption to make 😅 |
We hit a roadblock when trying to have |
Just wondering if any decisions have been made on the new scope I am generally in favor of just rebasing |
@tynes yes we've decided to abandon the generic future-proofing work, and instead just pull 7702 txs into op-geth and then add the support to the monorepo. I'm working on this right now. Quoting summary from Discord
|
nvm I thought about it and realized the absolute prestate is the only thing that will need to be updated |
Release candidates are ready:
|
Also
|
The L1 Pectra upgrade introduces a new tx-type and changes to the block-header.
Latest L1 Timeline:
These a breaking change to RPC contents and source-data verification.
These breaking changes have to be supported to
not halt the Fault-Proof or chain upon new unrecognized input data.
This will be prioritized over regular L2 upgrade work.
This is not Pectra in L2. Introduction of Pectra in the L2 itself is tracked here:
#12435
Core Pectra changes that break formats / preimages:
Spec
0
,1
,2
,3
will be ignored by default.0x7e
(deposit tx) to be a valid batcher tx, for force-batches.op-service
,op-node
,op-program
The old plan for op-service, op-node and op-program which we discarded for now is in this fold
op-service
sources
:EthClient.InfoAndTxsByHash
needs to return a list ofGenericTx
.And
ByLabel
andByNumber
methods can mirror tha change.testutils
: mirrorsources
API changes on mock utilsrequestsRoot
optional RPC attribute of block-header needs to be handled insources.RPCHeader.verify()
eth.GenericTx
interface:eth.OpaqueTransaction
struct:GenericTx
interfacesources.RawJsonTransaction
struct:GenericTx
interfaceop-node
node
:L1Client
from op-service fits newderive
changes for L1 data retrieval.derive
package:InfoAndTxsByHash
needs to return a list ofeth.GenericTx
, not*types.Transaction
FetchReceipts
ideally returns a list of*types.Receipt
for now if we land minimum 7702 support,even if not the exact right 7702 final version, since the 7702 receipt format has no changes, and it's just the type we need to work.
op-program
0
(legacy),1
(berlin, 2930),2
(london, 1559),3
(cancun, 4844).eth.OpaqueTransaction
to fiteth.GenericTx
interface requirement of derivation code.Ignoring RLP-trailing items may be implemented later, for forward-compatibility.
RawJsonTransaction
that we don't know how to encode into RLP.opaque
form of the tx.op-geth
master
upstream geth intooptimism
, and not wait for the v1.14.13 remainder.testing
Later Go work
Later, for better future compatibility against L1 forks:
eth.GenericReceipt
,eth.OpaqueReceipt
,sources.RawJsonReceipt
: we can introduce the same abstraction for receipts.FetchReceipts
to return a list ofeth.GenericReceipt
.sources.RPCHeader
support for unknown block header fields: unfortunately no way to translate to the RLP without type interpretation.Instead we are updating op-geth and monorepo in these PRs:
Rust work
Separately, in the rust stack:
op-alloy
'sOpReceiptEnvelope
which includes the EIP-7702 variant.alloy
's header for execution and rpc types. Thealloy
Header
type already includes EIP-7702 support in the current version.Even if the tx type decoding might work, to stay in consensus with spec / op-node / op-program.
E.g. through patterns similar to that of
eth.GenerixTx
.The text was updated successfully, but these errors were encountered: