Ethereum

Fusaka Update – Information for Blob users

9Views


tl;dr: Over the last couple of days, some L2s noticed that their deployments on Sepolia didn’t work properly anymore. This is due to EIP-7594 which changes the format for proofs. In anticipation of Fusaka, we urge all blob originators to update their software to create Cell Proofs instead of blob proofs.

Background

One underdiscussed aspect of EIP-7549 (PeerDAS) is that it changes the format for proofs from blob proofs to cell proofs. This allows for downloading a specific part of the blob instead of the whole blob for data availability sampling.

This change might break user applications that send blob transactions. Already signed transactions are still valid though, they just need to recompute the cell proofs. Some clients (most notably go-ethereum) will do this via the RPC on eth_sendTransaction and eth_sendRawTransaction (1). This conversion from blob proofs to cell proofs takes about one second, so we encourage blob transaction originators to move to cell proofs in order to reduce overhead at the RPC level.

Transactions that are in the txpool at the time of the fork will be dropped by some implementations, while other implementations will convert them to cell proofs. So it would be prudent to resend your transactions with cell proofs shortly after the fork, if they are not being included by the chain. Some implementations allow for the distribution of blob proof transactions up to a few minutes after the hard fork on the networking layer for stability purposes.

Actionable changes

If you are a blob transaction originator (e.g. an L2), you should update your transaction sending code to create cell proofs.

All major client libraries expose functionality to create these proofs via ComputeCellsAndKZGProofs() which is available in all major languages (2). Usage examples can also be found in all major languages in the client libraries (3).

Outlook

We will try to communicate these changes that impact users more clearly via the Ethereum blog going forward and try to do more community outreach to prevent users of Ethereum from feeling blindsided by changes in the protocol.

We also encourage L2s and other entities that heavily depend on the Ethereum roadmap to follow the ACD process and to engage more directly with the community. We would also like to encourage teams to deploy their contracts and test infrastructure on the devnets shortly before we move to the first testnets.
Another great tool for keeping your changes up to date is to use the Ethereum package provided by Kurtosis which can be used to create local networks with the latest specifications (4).

While it is unfortunate that blob originators learned this late in the hard fork process, it also shows that the testnet process works very well and these issues are caught long before they would ever appear on mainnet.

(1): go-ethereum will only do the conversion on eth_sendRawTransaction from current master and v1.16.5 onwards
(2): see https://github.com/search?q=repo%3Aethereum%2Fc-kzg-4844%20ComputeCellsAndKZGProofs&type=code
(3) Example for go-ethereum: 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



Source link

Leave a Reply