Summary: Over the past few days, some L2s have discovered that their deployments on Sepalia are no longer working properly. This is caused by: EIP-7594 How to change proof format. In anticipation of Fusaka, we expect all Blob authors to update their software to cell proof Instead of stain proof.
background
One of the aspects that is not discussed enough EIP-7549 (PeerDAS) This means changing the proof format from blob proof to cell proof. This allows you to download specific parts of a blob instead of the entire blob for data availability sampling.
This change may break user applications sending blob transactions. Transactions that have already been signed are still valid, but the cell proof just needs to be recalculated. Some clients (notably go-ethereum) do this via RPC. eth_sendtransaction and eth_sendRawTransaction (1). Since the conversion from Blob proof to Cell proof takes approximately 1 second, we recommend that Blob transaction initiators switch to Cell proof to reduce overhead at the RPC level.
Transactions that were in the txpool at the time of the fork are deleted by some implementations, while others convert them to cell proofs. Therefore, it would be wise to resend transactions using cell proof immediately after the fork if they are not included in the chain. Some implementations allow blob proof transaction distribution up to a few minutes after a hard fork in the networking layer for reliability reasons.
Actionable Changes
If you are a blob transaction creator (e.g. L2), you must update your transaction transport code to generate cell proofs.
All major client libraries provide functionality to generate such evidence via: ComputeCellsAndKZGProofs() Available in all major languages (2). You can also find usage examples in all major languages in client libraries (3).
field of vision
Going forward, we will try to communicate these changes that affect users more clearly through the Ethereum blog, and we will attempt to do more community outreach to ensure that Ethereum users do not feel blindsided by protocol changes.
We also encourage L2 and other entities that rely heavily on the Ethereum roadmap to follow the ACD process and engage more directly with the community. We would also like to encourage teams to deploy contracts and testing infrastructure on devnet immediately before moving to the first testnet. Another great tool to keep up to date with changes is to use the Ethereum package provided by Kurtosis, which can be used to create a local network with the latest specifications (4).
It’s unfortunate that the Blob creators found out about this late in the hardfork process, but it also shows that the testnet process worked very well and that these issues were discovered long before they appeared on the mainnet.
(1): go-ethereum performs conversions only on: eth_sendRawTransaction Currently master and from v1.16.5 onwards
(2): see https://github.com/search?q=repo%3Aethereum%2Fc-kzg-4844%20ComputeCellsAndKZGProofs&type=code
(3) Example of Gothereum: https://github.com/ethereum/go-ethereum/blob/7c107c2691fa66a1da60e2b95f5946c3a3921b00/crypto/kzg4844/kzg4844_test.go#L194
(4) Ethereum package for kurtosis: https://github.com/ethpandaops/ethereum-package