Commit Graph

7963 Commits

Author SHA1 Message Date
Potuz 88f49382e0
remove unnecessary constants 2022-11-03 11:41:17 -05:00
Potuz d958ed70b4
Implement withdrawals without queues 2022-11-03 11:40:54 -05:00
George Kadianakis b2d72a18f0 Fix type error in the inputs to hash_to_bls_field() 2022-11-03 18:13:36 +02:00
Hsiao-Wei Wang b5986170ca
Update testing trusted setups files 2022-11-03 10:28:05 -05:00
Hsiao-Wei Wang 3a49d6225e
Refactor `get_spec` 2022-11-03 10:22:43 -05:00
Hsiao-Wei Wang 5a0d84ed01
int casting to avoid underflow 2022-11-03 10:21:09 -05:00
Hsiao-Wei Wang 7c016f3236
Add testing KZG trusted setups generator tool and load the file during building pyspec 2022-11-03 10:17:42 -05:00
George Kadianakis 86e15764ad
EIP4844: Update cryptography API (#3038)
This commit changes the public API of the KZG library to the following high-level API:

```
- verify_kzg_proof()
- compute_aggregate_kzg_proof()
- verify_aggregate_kzg_proof()
- blob_to_kzg_commitment()
```

compared to the previous much more low-level API:

```
- compute_powers()
- matrix_lincomb()
- lincomb()
- bytes_to_bls_field()
- evaluate_polynomial_in_evaluation_form()
- verify_kzg_proof()
- compute_kzg_proof()
```

This means that all the cryptographic logic (including Fiat-Shamir) is now isolated and hidden in the KZG library and the `validator.md` file ends up being significantly simplified, only calling high-level KZG functions.

Some additional things that this commit does:

- Moves all EIP4844 cryptography into polynomial-commitments.md
- Improves the Fiat-Shamir stack by removing the need for SSZ and by introducing simple domain separators

Co-authored-by: Kevaundray Wedderburn <kevtheappdev@gmail.com>
Co-authored-by: Hsiao-Wei Wang <hsiaowei.eth@gmail.com>
Co-authored-by: Dankrad Feist <mail@dankradfeist.de>
2022-11-03 17:01:32 +02:00
Alex Stokes 32107bebef
Merge pull request #3069 from etan-status/ci-remerkleable0125
Update `remerkleable` to 0.1.25
2022-11-02 13:50:20 -06:00
Alex Stokes 1c30bbb6e9
Merge pull request #3071 from nalepae/patch-1
README.md: Fix broken links
2022-11-02 13:41:47 -06:00
Alex Stokes 8788472679
Update README.md 2022-11-02 13:26:59 -06:00
Hsiao-Wei Wang 87dcb83827
Merge pull request #3063 from etan-status/lc-gossipdigests
Document how to derive fork context for LC gossip
2022-11-02 13:12:23 +08:00
Mark Mackey 826c20ffc2 Capella: Add Gossip Topic bls_to_execution_change 2022-11-01 12:54:33 -05:00
Hsiao-Wei Wang 498a5b0722
Merge pull request #3062 from terencechain/rm-signed-blobs
EIP4844: Remove signed blobs
2022-11-01 22:32:45 +08:00
Etan Kissling 332ad4cb57
Move `is_post_xxx` functions to new module
Moving the `is_post_xxx` functions to a separate module allows `genesis`
to also use them (cyclic import from `context` prevented this before).
This allows removing `FORKS_BEFORE_ALTAIR` and `FORKS_BEFORE_BELLATRIX`
constants and adding a more general `is_post_fork` function that needs
less maintenance. This then allows definition of `with_all_phases_from`
to streamline the implementation of the `with_xxx_and_later` decorators.
2022-10-30 12:50:56 +01:00
Manu NALEPA e453bfe018
README.md: Fix broken links 2022-10-29 20:15:24 +02:00
Etan Kissling ff0e525ecc
Pass blocks to LC data creation functions
Future light client protocol extensions may include data from the block
in addition to data from the state, e.g., `ExecutionPayloadHeader`.
To prepare for this, also pass the block to the corresponding functions.
In practice, blocks access is easier than historic state access, meaning
there are no practical limitations due to this change.
2022-10-28 22:14:25 +02:00
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