5125 Commits

Author SHA1 Message Date
dankrad
aafbd45a19
Update specs/deneb/polynomial-commitments.md
Co-authored-by: George Kadianakis <desnacked@riseup.net>
2023-02-14 20:59:24 +00:00
Dankrad Feist
3a6fccd389
Remove double hashing 2023-02-14 20:17:25 +00:00
Dankrad Feist
855cf062f0
Remove additional function 2023-02-14 20:07:34 +00:00
dankrad
c49a2c2855
Update specs/deneb/polynomial-commitments.md
Co-authored-by: George Kadianakis <desnacked@riseup.net>
2023-02-14 20:00:58 +00:00
Hsiao-Wei Wang
db5a168f3b
Move experimental features to specs/_features folder 2023-02-14 23:41:40 +08:00
Danny Ryan
89f2eae318
Merge pull request #3218 from protolambda/excess-data-gas-field-position
eip4844: move excess data gas field to end of execution payload for merkle proof path compat
2023-02-14 07:50:25 -07:00
Jacek Sieka
58207c1c05
Upper limit on indices 2023-02-14 14:18:29 +01:00
George Kadianakis
fc4e1a9acf
EIP4844: compute_kzg_proof() can now create proofs within the domain (#3243)
This will be used by optimistic rollups to create proofs about past data
2023-02-14 14:50:44 +02:00
Jacek Sieka
e6b8324e25
sidecar domain 2023-02-14 13:39:59 +01:00
Jacek Sieka
c8719f8524
Apply suggestions from code review
Co-authored-by: Danny Ryan <dannyjryan@gmail.com>
2023-02-14 13:32:18 +01:00
Dankrad Feist
86d955ab7f
Call compute_challenge with polynomial as argument 2023-02-13 17:17:41 +00:00
Dankrad Feist
7f1748b3c8
Change blob verification fiat-shamir to single blob 2023-02-13 17:16:15 +00:00
Dankrad Feist
b76ea49fec
Add KZG multi verify function 2023-02-13 17:12:51 +00:00
Potuz
f91b9863ce
Simplify commitee weight computation 2023-02-13 17:08:52 +00:00
Paul Harris
470c1b14b3
fix references to eip4844 2023-02-13 17:08:51 +00:00
Paul Harris
901303f14f
Replaced EIP4844 references with Deneb
Fixes #3207
2023-02-13 17:08:51 +00:00
Dankrad Feist
7b642a2884
compute_challenge takes blobs + linter 2023-02-13 14:57:04 +00:00
Dankrad Feist
f36925ea96
Merge branch 'dev' into kzg_multi_verify 2023-02-13 14:38:19 +00:00
Dankrad Feist
fc10714f42
Call compute_challenge with polynomial as argument 2023-02-13 14:32:50 +00:00
Potuz
86962b9437 Simplify commitee weight computation 2023-02-10 11:43:38 -03:00
Jacek Sieka
8bc19d99ae
fixes
* expand sidecar gossip conditions
* editing
* add spec text for `BlobSidecar` signatures
2023-02-10 11:16:51 +01:00
Jacek Sieka
20278d4841
Merge remote-tracking branch 'origin/dev' into back-to-the-decoupled-future
Deneb merge
2023-02-10 10:44:31 +01:00
Jacek Sieka
ffc78e9928
fixes
* separate constant for blob requests
* pedantry
2023-02-10 10:40:43 +01:00
Age Manning
368e70d9be
Remove sending empty blobs sidecar responses 2023-02-10 10:45:07 +08:00
Hsiao-Wei Wang
7b5acbfd21
Fix Capella fork test assertions 2023-02-10 00:30:00 +08:00
protolambda
f6b8827eca
eip4844: move excess data gas field to end of execution payload for merkle proof path compat 2023-02-10 00:29:58 +08:00
Paul Harris
078e1cc871 fix references to eip4844 2023-02-08 09:22:28 +10:00
Jacek Sieka
deb82e2f26
fix member 2023-02-07 11:23:18 +01:00
Jacek Sieka
1e07685f74
doctoc 2023-02-07 11:14:59 +01:00
Jacek Sieka
65d3c6aeb6
Free the blobs
This PR reintroduces and further decouples blocks and blobs in EIP-4844,
so as to improve network and processing performance.

Block and blob processing, for the purpose of gossip validation, are
independent: they can both be propagated and gossip-validated
in parallel - the decoupled design allows 4 important optimizations
(or, if you are so inclined, removes 4 unnecessary pessimizations):

* Blocks and blobs travel on independent meshes allowing for better
parallelization and utilization of high-bandwidth peers
* Re-broadcasting after validation can start earlier allowing more
efficient use of upload bandwidth - blocks for example can be
rebroadcast to peers while blobs are still being downloaded
* bandwidth-reduction techniques such as per-peer deduplication are more
efficient because of the smaller message size
* gossip verification happens independently for blocks and blobs,
allowing better sharing / use of CPU and I/O resources in clients

With growing block sizes and additional blob data to stream, the network
streaming time becomes a dominant factor in propagation times - on a
100mbit line, streaming 1mb to 8 peers takes ~1s - this process is
repeated for each hop in both incoming and outgoing directions.

This design in particular sends each blob on a separate subnet, thus
maximising the potential for parallelisation and providing a natural
path for growing the number of blobs per block should the network be
judged to be able to handle it.

Changes compared to the current design include:

* `BlobsSidecar` is split into individual `BlobSidecar` containers -
each container is signed individually by the proposer
  * the signature is used during gossip validation but later dropped.
* KZG commitment verification is moved out of the gossip pipeline and
instead done before fork choice addition, when both block and sidecars
have arrived
  * clients may verify individual blob commitments earlier
* more generally and similar to block verification, gossip propagation
is performed solely based on trivial consistency checks and proposer
signature verification
* by-root blob requests are done per-blob, so as to retain the ability
to fill in blobs one-by-one assuming clients generally receive blobs
from gossip
* by-range blob requests are done per-block, so as to simplify
historical sync
* range and root requests are limited to `128` entries for both blocks
and blobs - practically, the current higher limit of `1024` for blocks
does not get used and keeping the limits consistent simplifies
implementation - with the merge, block sizes have grown significantly
and clients generally fetch smaller chunks.
2023-02-07 11:05:51 +01:00
Paul Harris
0bf006cc06 Merge remote-tracking branch 'upstream/dev' into 3207 2023-02-02 16:34:34 +10:00
Dankrad Feist
659c7f513f
Change blob verification fiat-shamir to single blob 2023-01-29 13:05:02 +00:00
Dankrad Feist
d89e579089
Updater toc 2023-01-27 14:33:43 +00:00
Dankrad Feist
03f4b8fa4d
Add KZG multi verify function 2023-01-27 14:23:38 +00:00
Hsiao-Wei Wang
127edf3af1
Merge pull request #3221 from benjaminion/fc-on-attester-slashing
Add on_attester_slashing() to handlers list
2023-01-27 21:49:34 +08:00
George Kadianakis
6e397b195b
EIP4844: Public methods take bytes as input (explicit validation) (#3224) 2023-01-25 16:15:19 +01:00
Hsiao-Wei Wang
aede132f49
Merge pull request #3220 from benjaminion/fc-genesis-block
Add genesis_block to get_forkchoice_store() params
2023-01-24 22:22:25 +08:00
kevaundray
5eca56901e
Update polynomial-commitments.md (#3223) 2023-01-24 15:14:25 +01:00
Ben Edgington
8a0de1c595 Add on_attester_slashing() to handlers list 2023-01-24 13:25:40 +00:00
Ben Edgington
d54c87a5c0 Add genesis_block to get_forkchoice_store() params 2023-01-24 13:08:41 +00:00
George Kadianakis
2626126935
EIP4844: compute_kzg_proof() now takes bytes as input (#3219) 2023-01-24 14:02:22 +01:00
Danny Ryan
dd5c5af117
Merge pull request #3217 from pawanjay176/remove-point-validation
Remove kzg point and blob validations in gossip
2023-01-24 10:38:03 +01:00
Paul Harris
317facbd64 Replaced EIP4844 references with Deneb
Fixes #3207
2023-01-23 15:08:34 +01:00
Pawan Dhananjay
a0791712cd
Remove kzg point validations in gossip 2023-01-20 21:32:03 +05:30
Emilia Hane
f1435d456d
Update p2p-interface.md 2023-01-19 21:26:21 +01:00
Hsiao-Wei Wang
04d8f28cf6
Merge pull request #3214 from asn-d6/barycentric_no_assert
EIP4844: Handle barycentric evaluation at roots of unity
2023-01-17 23:00:17 +08:00
Hsiao-Wei Wang
521de12d9b
Merge pull request #3151 from etan-status/lc-eph
Add `ExecutionPayloadHeader` to LC data
2023-01-17 21:33:35 +08:00
George Kadianakis
296ba921c9 EIP4844: Handle barycentric evaluations at roots of unity 2023-01-16 17:51:50 +02:00
Etan Kissling
514d4431ca
Use bellatrix in upgrade_x_to_capella helpers 2023-01-13 20:11:05 +01:00
Hsiao-Wei Wang
427a6e809f
Merge pull request #3206 from ethereum/btec-fork-version
MUST use `GENESIS_FORK_VERSION` to sign `BLSToExecutionChange` message
2023-01-13 23:29:21 +08:00