8118 Commits

Author SHA1 Message Date
Jacek Sieka
3a37c3c497
Allow clients to orphan blocks from spammy proposers
Proposers that spam the blob topic with multiple blob versions, some of
which are invalid, MAY see their block orphaned.
2023-02-15 08:00:39 +01:00
Jacek Sieka
58207c1c05
Upper limit on indices 2023-02-14 14:18:29 +01: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
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
Hsiao-Wei Wang
ffacbb442b
Merge pull request #3215 from rolfyone/3207
Updated eip4844 references to deneb
2023-02-10 00:19:08 +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
Hsiao-Wei Wang
80ba16283c
Merge pull request #3237 from ethereum/sanity-test-hotfix
Fix the unsigned block outputs
2023-01-27 22:51:49 +08:00
Hsiao-Wei Wang
366e3b64c4
hotfix: transition_to_slot_via_block only return unsigned block 2023-01-27 15:37:12 +01: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
Danny Ryan
fb83858a17
Merge pull request #3235 from ethereum/bump-version
bump VERSION.txt to 1.3.0-rc.2
2023-01-27 12:42:05 +01:00
Hsiao-Wei Wang
a2b3cd33ef
bump VERSION.txt to 1.3.0-rc.2 2023-01-27 18:54:09 +08:00
Hsiao-Wei Wang
26d233aec5
Merge pull request #3227 from ethereum/more-capella-tests
More capella tests
2023-01-27 18:24:44 +08:00
Hsiao-Wei Wang
9ab147860c
Update transtion testgen 2023-01-27 11:16:31 +01:00
Hsiao-Wei Wang
3e78448fd1
Address PR feedback 2023-01-27 10:44:32 +01:00
Hsiao-Wei Wang
230dfb011e
Apply suggestions from code review
Co-authored-by: Danny Ryan <dannyjryan@gmail.com>
2023-01-26 23:21:07 +08:00
Hsiao-Wei Wang
507a7ec113
Add BLS_TO_EXECUTION_CHANGE fork transition tests 2023-01-26 10:14:53 +01:00
Hsiao-Wei Wang
e3b42ca397
Add activate and partial withdrawal tests 2023-01-25 16:15:39 +01: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
065b303dca
Add tests of mixing top-ups and withdrawals, rename old test case 2023-01-25 10:59:30 +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
Danny Ryan
c732a9718f
Merge pull request #3216 from emhane/patch-2
Fix typo
2023-01-24 10:32:52 +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
0f2d25d919
Merge pull request #3213 from etan-status/ee-mockgwei
Use `Gwei` for `Withdrawal` amount in mock-EE
2023-01-17 23:00:35 +08: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
George Kadianakis
20dc6821ab
EIP4844: Unused i in for loop
Co-authored-by: Hsiao-Wei Wang <hsiaowei.eth@gmail.com>
2023-01-17 16:18:16 +02:00
George Kadianakis
c6453e215d EIP4844: Make extra sure we didn't win the jackpot 2023-01-17 16:16:46 +02: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
6e5df21f7d EIP4844: Also add unittest for barycentric outside the domain 2023-01-16 17:52:10 +02:00
George Kadianakis
296ba921c9 EIP4844: Handle barycentric evaluations at roots of unity 2023-01-16 17:51:50 +02:00
Etan Kissling
52d978b12e
Use Gwei for Withdrawal amount in mock-EE
Updates the EL block hash computation for pytests to match latest spec.
Notably, use `Gwei` for `Withdrawal` amount consistently.
Also fix `excess_data_gas` not being correctly accounted for.

https://github.com/ethereum/execution-apis/pull/354
https://github.com/ethereum/EIPs/pull/6325
2023-01-15 12:13:35 +01:00
Etan Kissling
ffd047c6fa
Consistent test step naming 2023-01-14 14:51:59 +01:00
Etan Kissling
514d4431ca
Use bellatrix in upgrade_x_to_capella helpers 2023-01-13 20:11:05 +01:00
Hsiao-Wei Wang
496e1d86c9
Merge pull request #3202 from ethereum/deposit-cli-testcase
Add a `process_bls_to_execution_change` test case from staking-deposit-cli
2023-01-13 23:51:00 +08:00
Hsiao-Wei Wang
a5273905ef
Update signature value due to #3206 2023-01-13 23:40:31 +08:00
Hsiao-Wei Wang
9b3f8881b4
Fix lint 2023-01-13 23:39:24 +08:00
Hsiao-Wei Wang
75def3c88e
PR feedback from @ralexstokes
Co-authored-by: Alex Stokes <r.alex.stokes@gmail.com>
2023-01-13 23:39:16 +08:00