Commit Graph

8146 Commits

Author SHA1 Message Date
Etan Kissling
9dc1a17b2d Update remerkleable to 0.1.25
`remerkleable` was updated to address potentially incorrect computation
of `hash_tree_root` against default-initialized `Vector` objects.
Switching to the fixed version.
2022-10-28 20:40:21 +02:00
Etan Kissling
5c66300171 Use suite_name instead of meta.yaml for SSZ type 2022-10-28 20:32:33 +02:00
Alex Stokes
bab01d6e99 Merge pull request #3067 from etan-status/lc-synctestroot
Rename LC test check from `root` to `beacon_root`
2022-10-28 08:55:27 -06:00
Alex Stokes
be3c774069 Merge pull request #3065 from etan-status/lc-branchrootdocs
Clarify where LC proofs are rooted
2022-10-28 08:51:26 -06:00
Alex Stokes
72b6abd545 Merge pull request #3064 from etan-status/lc-periodatepoch
Consistently use `compute_sync_committee_period_at_slot`
2022-10-28 08:49:58 -06:00
Alex Stokes
e025aa992c Merge pull request #3061 from etan-status/lc-finalized
Consistent variable name in LC test
2022-10-28 08:41:51 -06:00
Etan Kissling
4fc80765ad Also update test logic accordingly 2022-10-27 22:08:24 +02:00
Etan Kissling
990866dd9f Rename LC test check from root to beacon_root
Future light client tests will also incorporate execution payload data.
To avoid confusion, rename the current `root` check to `beacon_root`.
Doing this now, as #3066 already requires LC test runners to update.
2022-10-27 22:06:11 +02:00
Etan Kissling
cdaf7e84dd Allow extending LC merkle proof tests
Currently, `test_single_merkle_proof` only supports `BeaconState` tests.
For future tests, different object classes are desirable. Update format
to allow testing other objects as well.
2022-10-27 21:59:48 +02:00
Etan Kissling
5b6eb8007a Clarify where LC proofs are rooted
Add more detailed LC object documentation to explain that the various
merkle proofs are relative to the beacon block's state root.
Likewise, clarify that sync committees relate to the finalized header
(not to the optimistic header, which can be a period ahead).
2022-10-27 21:44:38 +02:00
Etan Kissling
af54c97a6c Consistently use compute_sync_committee_period_at_slot
A few LC functions were not yet updated to use a more concise function
for computing sync committee period for a slot. Updating to that func.
2022-10-27 21:36:55 +02:00
Etan Kissling
c399e11aa7 Document how to derive fork context for LC gossip
For LC gossip, the documentation did not specify what slot number to use
for deriving the gossip objects. This missing documentation is now added
to document using `attested_header.slot`.
2022-10-27 21:23:09 +02:00
terence tsao
71775c6e87 EIP4844: Remove signed blobs 2022-10-27 08:10:32 -07:00
Jacek Sieka
4d1b487b21 move field last
avoids changing "header" fields in state
2022-10-27 10:38:09 +02:00
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
Etan Kissling
14b3463f2c Consistent variable name in LC test
In light client tests, a variable is named `finality_header` but
everywhere else it is called `finalized_header`. Rename for consistency.
2022-10-27 00:01:22 +02:00
Hsiao-Wei Wang
60187e5dc4 Add test_process_withdrawals no-op test 2022-10-26 15:19:15 -05:00
Hsiao-Wei Wang
e460005aff Add tests for no-op functions 2022-10-26 15:12:05 -05:00
Hsiao-Wei Wang
317209591d Make pyspec disable withdrawal-functions in EIP4844 2022-10-26 15:06:39 -05:00
Hsiao-Wei Wang
aac851f860 Merge pull request #3060 from ethereum/fix-bls-test-file-format
Fix BLS test case file name
2022-10-27 00:17:09 +08:00
Hsiao-Wei Wang
6c7922df67 Fix bls test case file name 2022-10-26 11:03:16 -05: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
Inphi
ca538f52a0 Update specs/eip4844/beacon-chain.md
Co-authored-by: Alex Stokes <r.alex.stokes@gmail.com>
2022-10-25 12:06:07 -04:00
Hsiao-Wei Wang
3c7c3a9c97 bump VERSION.txt to 1.3.0-alpha.0 (#3056) 2022-10-25 11:45:04 +08:00
inphi
6d270cdc52 Add CAPELLA_FORK_EPOCH overrides 2022-10-24 17:21:36 -04:00
inphi
459310f744 Fix test_process_execution_payload 2022-10-24 16:25:50 -04:00
inphi
0488c0c26e remove unchanged epoch processing section 2022-10-24 12:51:54 -04:00
inphi
2ac57c7e7b Fix py setup
And remove the ENABLE_WITHDRAWALS feature-flag. The Testing section in
the spec has been updated to specify how withdrawals is to be disabled
2022-10-24 12:44:11 -04: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
f48d6b324d Update test formats 2022-10-20 22:27:49 -05:00
Hsiao-Wei Wang
0e2c3d89e0 Fill bls_to_execution_changes field in Capella random tests 2022-10-20 22:22:11 -05:00
Inphi
f6f2474c87 Update specs/eip4844/beacon-chain.md
Co-authored-by: Hsiao-Wei Wang <hsiaowei.eth@gmail.com>
2022-10-20 14:39:18 -04:00
Hsiao-Wei Wang
46e4473cb4 Merge pull request #3050 from mcdee/withdrawal-add-validator
Add validator_index to Withdrawal
2022-10-20 23:38:51 +08:00
inphi
242e1b73bb Rebase Capella on EIP-4844
This also introduces an `ENABLE_WITHDRAWALS` feature-flag to allow
implementers test EIP-4844 without including Capella-specific state
changes.
2022-10-20 10:36:08 -04:00
Hsiao-Wei Wang
d013379628 Ensure validator_index is in validator set 2022-10-19 10:27:01 -05: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
940fc20758 Apply suggestions from code review
Co-authored-by: Danny Ryan <dannyjryan@gmail.com>
2022-10-17 23:21:15 +08:00
Hsiao-Wei Wang
b90436c988 Fix capella random & fork 2022-10-14 23:42:42 -05:00
Hsiao-Wei Wang
03ced9c263 Add Capella tests 2022-10-14 23:40:45 -05:00
Hsiao-Wei Wang
6181035d5d Fix typo (#3039) 2022-10-15 12:40:17 +08:00