-
Notifications
You must be signed in to change notification settings - Fork 20.3k
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-4844 progress #27047
Comments
For KZG implementations, there are two options for Go clients:
Right now, our recommendation is for Go clients to use Go-KZG-4844. While C-KZG-4844 is expected to be slightly faster when run on single-threaded systems, Go-KZG-4844 also provides parallelized functions that can be faster (though less efficient) on systems with multiple threads. Most clients will use C-KZG-4844 bindings, but that's because there isn't a great alternative for them (right now). From a diversity perspective, using a different implementation would be beneficial. Both implementations will be audited and have been differentially fuzzed against each other. Also, some information about the audit. There will be a one month audit (starting on April 17th 2023) for both of these implementations (and their bindings) by a reputable security firm. For Go-KZG-4844, code from gnark-crypto that it needs but was not audited has been copied into its project so it gets audited. Benchmarks for Go-KZG-4844With parallelization enabled on a system with 20 cores:
For a better comparision of efficiency, with
Benchmarks for C-KZG-4844 (Go bindings)
|
@jtraglia The trusted setup file seems to be slightly different for the two libs: The Go version requires some Lagrange form of G1 points whereas the C does not. Any particular reason for that / not being able to calculate it internally? |
Conversion is expensive. But I'm in favor that all the libs should use exactly the same trusted setup file. |
The trusted setup file in the Go lib has 4096 G2 points but the C lib rejects that because it wants 65 G2 points. Which is correct? |
65 G2 points is more than enough. |
Hey @karalabe, good question. For both presets, there should only be 65 G2 points. I suspect Go-KZG-4844 has 4096 because that's how the trusted setup was defined initially; about 4 months ago, this PR changed the count from 4096 to 65. Also, you should use the trusted setups (mainnet and minimal) from the consensus-specs. |
4844 shipped in March 🎊 https://ethereum.org/en/roadmap/dencun/ |
This is a tracking issue for EIP-4844. Some of the issues might get broken down into very low level piecemeal ones that might help review and/or work on a different larger ones. Ideally we'll end up with a batch of PRs people can take a look at to wrap their head around 4844 and it's progress / coding history.
Integrate an SSZ library / generator for the blob transactionscrypto/kzg4844: pull in the C and Go libs for KZG cryptography #27155
core/types, params: add blob transaction type, RLP encoded for now #27049
Convert the blob transaction encodings from RLP to SSZexcessDataGas
field to header, disable before Cancunconsensus, core/typer: add 4844 excessDataGas to header, tie it to Cancun #27046
excessDataGas
to blob fee conversionsconsensus/misc, params: add EIP-4844 blobfee conversions #27041
excessDataGas
validations and calculations across blocksconsensus, core, eth/downloader: add 4844 excessDataGas validations #27340consensus, core, eth/downloader, params: 4844 chain validation #27382
core, eth/downloader, params: validate blob tx bodies #27392
core, eth/downloader: validate blobtx.To at serialization time #27393
core/types: add data gas fields in Receipt #27743
core: 4844 opcode and precompile #27356
core/txpool: make transaction validation reusable across packages (pools) #27429
all: move main transaction pool into a subpool #27463
core/txpool: make transaction validation reusable across packages (pools) #27429
all: move main transaction pool into a subpool #27463
core/txpool/blobpool: 4844 blob transaction pool #26940
eth
protocol to support announce-only for blob txseth: implement eth/68 to support only announcing certain tx types #25980
beacon/engine, eth/catalyst: EIP-4844 updates for the engine API #27736
cmd, eth, les: replace Shanghai override flag with Cancun #27171
Note, an initial proof of concept was prepared by Coinbase and Optimism at #26283.
The text was updated successfully, but these errors were encountered: