4823 Commits

Author SHA1 Message Date
Jacek Sieka
1c8d57eeb7
Historical batches
This PR, a continuation of
replaces `historical_roots` with
`historical_block_roots`.

By keeping an accumulator of historical block roots in the state, it
becomes possible to validate the entire block history that led up to
that particular state without executing the transitions, and without
checking them one by one in backwards order using a parent chain.

This is interesting for archival purposes as well as when implementing
sync protocols that can verify chunks of blocks quickly, meaning they
can be downloaded in any order.

It's also useful as it provides a canonical hash by which such chunks of
blocks can be named, with a direct reference in the state.

In this PR, `historical_roots` is frozen at its current value and
`historical_batches` are computed from the merge epoch onwards.

After this PR, `block_batch_root` in the state can be used to verify an
era of blocks against the state with a simple root check.

The `historical_roots` values on the other hand can be used to verify
that a constant distributed with clients is valid for a particular
state, and therefore extends the block validation all the way back to
genesis without backfilling `block_batch_root` and without introducing
any new security assumptions in the client.

As far as naming goes, it's convenient to talk about an "era" being 8192
slots ~= 1.14 days. The 8192 number comes from the
SLOTS_PER_HISTORICAL_ROOT constant.

With multiple easily verifable blocks in a file, it becomes trivial to
offload block history to out-of-protocol transfer methods (bittorrent /
ftp / whatever) - including execution payloads, paving the way for a
future in which clients purge block history in p2p.

This PR can be applied along with the merge which simplifies payload
distribution from the get-go. Both execution and consensus clients
benefit because from the merge onwards, they both need to be able to
supply ranges of blocks in the sync protocol from what effectively is
"cold storage".

Another possibility is to include it in a future cleanup PR - this
complicates the "cold storage" mode above by not covering exection
payloads from start.
2022-10-27 10:33:38 +02:00
Hsiao-Wei Wang
af8c5bf532
Merge pull request #3046 from terencechain/couple-block-sidecar
EIP4844: couple beacon block and blob sidecar for p2p
2022-10-26 23:51:23 +08:00
Hsiao-Wei Wang
b7c72c3b42
Merge pull request #3047 from terencechain/reduce-min-epochs-blobs-reqs
EIP4844: modify `MIN_EPOCHS_FOR_BLOBS_SIDECARS_REQUESTS` to 18 days
2022-10-26 23:26:45 +08:00
Hsiao-Wei Wang
9844ea1f30
Merge pull request #3040 from ethereum/capella-test-vectors
Capella test vectors
2022-10-23 06:44:03 +08:00
terence tsao
e2d0a4fa9a Fix ToC and test 2022-10-22 08:36:46 -07:00
terence tsao
9f4ae4c6ee Update validator spec with SignedBeaconBlockAndBlobsSidecar 2022-10-21 17:33:55 -07:00
Hsiao-Wei Wang
53b63cedc5
Merge branch 'dev' into pr3050 2022-10-19 10:21:32 -05:00
terence tsao
dfa5ac8008 @protolambda's feedback, SignedBlobsSidecar -> BlobsSidecar 2022-10-18 11:34:14 -07:00
terencechain
cab2e3ef9a
Describe sidecar and block are recieved together
Co-authored-by: protolambda <proto@protolambda.com>
2022-10-18 11:23:19 -07:00
terencechain
779d9be66a
Compare sidecar slot with block slot
Co-authored-by: protolambda <proto@protolambda.com>
2022-10-18 11:22:43 -07:00
Jim McDonald
0345b2284a
Add validator_index to Withdrawal. 2022-10-18 15:35:06 +01:00
terence tsao
b128148a17 Modify MIN_EPOCHS_FOR_BLOBS_SIDECARS_REQUESTS to 18 days 2022-10-17 16:24:19 -07:00
terence tsao
96b90200b7 Fix ToC 2022-10-17 16:08:59 -07:00
terence tsao
eb5a2c2741 Couple beacon block and blob sidecar for p2p 2022-10-17 15:16:38 -07:00
Hsiao-Wei Wang
b90436c988
Fix capella random & fork 2022-10-14 23:42:42 -05:00
ethosdev
24f8ec170b
Remove work-in-progress notes in Bellatrix specs (#3033)
* Remove the work-in-progress note in Bellatrix spec

Bellatrix is done and released.

* Remove work-in-progress notes in Bellatrix specs

* Remove work-in-progress notes in Bellatrix specs

* Remove work-in-progress notes in Bellatrix specs
2022-10-15 05:05:45 +08:00
Alex Stokes
092617ec1e
Remove duplicated definition of Validator 2022-10-09 17:02:50 -05:00
Hsiao-Wei Wang
3552e2f6e8
Merge pull request #3018 from ethereum/bump-dep
Bump dep packages version and fix lint issues
2022-10-07 00:21:51 +08:00
Alex Stokes
4e26813c81
Merge pull request #3023 from dapplion/patch-1
Typo in sync committee duties description
2022-10-05 20:10:12 -06:00
Lion - dapplion
fda2a69ff7
Typo in sync committee duties description
I assume it refers to producing a signature for the last slot of phase0 fork
2022-10-02 12:19:55 +02:00
Ramana Kumar
807650e8a1
Fix some type annotations for blobs
blobs should not be Sequence[BLSFieldElement], it should be
Sequence[Sequence[BLSFieldElement]]. But we can be more specific and use
Sequence[Blob].
2022-10-01 15:25:47 +01:00
Danny Ryan
6b9e65fab6
Merge pull request #3019 from terencechain/fix-eip4844
EIP4844: various fixes
2022-09-30 10:51:42 -06:00
Danny Ryan
9dfb1897a4
Merge pull request #3004 from Inphi/inphi/eip4844-fee-mkt
EIP-4844: Update ExecutionPayloadHeader
2022-09-30 08:16:53 -06:00
terencechain
779e6e7b7e
Update specs/eip4844/p2p-interface.md
Co-authored-by: Lion - dapplion <35266934+dapplion@users.noreply.github.com>
2022-09-29 13:43:28 -07:00
terence tsao
06c91e4843 Try a different format for epoch 2022-09-29 07:55:50 -07:00
terence tsao
93cb17dc7f Eip4844: various fixes 2022-09-29 07:36:39 -07:00
Hsiao-Wei Wang
44424c4080
Bump dep packages version and fix lint issues 2022-09-28 12:38:21 +08:00
Ramana Kumar
9ac605cc5e
Fix incorrect comment
bit-reversal permutation is not idempotent
2022-09-27 12:13:56 +01:00
George Kadianakis
6c2b46ae32
Merge pull request #3015 from asn-d6/bytes_to_bls_field
EIP4844: Introduce bytes_to_bls_field() helper
2022-09-26 23:55:16 +03:00
Danny Ryan
eeebd42a95
Merge pull request #2998 from ethereum/remove-withdrawn-epoch
remove withdrawn_epoch
2022-09-26 14:30:25 -06:00
George Kadianakis
d197ed1451 EIP4844: Introduce bytes_to_bls_field() helper
Improves separation between BLS cryptography and Ethereum SSZ logic.

Now the BLS library just implements bytes_to_bls_field(). Then hash_to_bls_field() does the Ethereum SSZ magic and
calls bytes_to_bls_field().
2022-09-26 19:01:01 +03:00
George Kadianakis
f4ba8b55ee
EIP4844: Implement reverse bit ordering in KZG commitments
Co-authored-by: Dankrad Feist <mail@dankradfeist.de>
Co-authored-by: Hsiao-Wei Wang <hsiaowei.eth@gmail.com>
2022-09-26 16:39:16 +03:00
Alex Stokes
189d61e386
Merge pull request #3008 from terencechain/patch-137
eip4844: signed_blobs_header -> signed_blobs_sidecar
2022-09-22 15:13:14 +02:00
George Kadianakis
e4fdb8a0ad
Merge pull request #3005 from ethereum/eip4844-patch-dr
Fixing EIP-4844 function names
2022-09-22 12:59:42 +03:00
terencechain
1bb863b2a6
eip4844: signed_blobs_header -> signed_blobs_sidecar 2022-09-21 14:49:18 -07:00
Justin Traglia
5517729859 Fix TOC with check_toc 2022-09-21 16:41:33 -05:00
Justin Traglia
7066307a0f Fix section name for withdraw_balance 2022-09-21 16:36:27 -05:00
inphi
ceee7bfbf1
EIP-4844: Fee market updates to execution 2022-09-21 09:14:46 -04:00
Justin Traglia
603e27f459 Fix state list lengths table 2022-09-20 15:24:14 -05:00
Justin Traglia
3bc7ff9f80 Fix a few things in Capella specs 2022-09-20 14:43:38 -05:00
Dankrad Feist
b35155005b
Rename matrix_lincomb to vector_lincomb and lincomb to g1_lincomb 2022-09-19 20:16:19 +01:00
Dankrad Feist
b63ed22588
Fix signature of compute_aggregated_poly_and_commitment 2022-09-19 20:10:48 +01:00
Danny Ryan
70f90c5296
rmove withdrawn_epoch 2022-09-19 11:39:46 -06:00
Ben Guidarelli
d70dcd9926
Fix link to beacon-chain doc 2022-09-15 10:21:06 -04:00
Hsiao-Wei Wang
109250b963
Replace hash_tree_root(x) with hash(ssz_serialize(x)) 2022-08-22 16:00:40 +08:00
Hsiao-Wei Wang
d133dae471
Fix codespell errors (#2975) 2022-08-18 22:08:44 +08:00
terencechain
cc9a5fe61e
EIP4844: fix format 2022-08-17 06:48:05 -07:00
Danny Ryan
5d0f4af063
Merge mainnet ttd and bellatrix values (#2969)
* merge mainnet ttd and bellatrix values

* Update configs/minimal.yaml

Co-authored-by: Paul Harris <paul.harris@consensys.net>

Co-authored-by: Paul Harris <paul.harris@consensys.net>
2022-08-15 08:00:14 -06:00
Danny Ryan
18dc61f4c5
Merge pull request #2961 from ethereum/execution_payload_tests
more execution payload tests and cleanup old ones
2022-08-04 07:44:53 -06:00
Danny Ryan
7e360240f9
more execution payload tests and cleanup old ones 2022-08-01 11:42:38 -06:00