394 Commits

Author SHA1 Message Date
Hsiao-Wei Wang
03ced9c263
Add Capella tests 2022-10-14 23:40:45 -05:00
Danny Ryan
491f14c76f
some capella sanity tests 2022-10-05 10:40:58 -06:00
Danny Ryan
70f90c5296
rmove withdrawn_epoch 2022-09-19 11:39:46 -06:00
Danny Ryan
770a603af9
Merge pull request #2989 from ethereum/deposit-zero-pk
Add `test_process_deposit::test_key_validate_invalid`
2022-09-13 14:05:13 -06:00
Hsiao-Wei Wang
e4407c64e3
Add test_process_deposit::test_key_validate_invalid 2022-09-12 22:31:49 +08:00
Hsiao-Wei Wang
2e73091258
Add get_valid_flag_value helper to determine the valid flag value 2022-09-08 22:42:39 +08:00
Hsiao-Wei Wang
0f8b5ae6bd
Apply PR feedback from @michaelsproul 2022-09-02 20:45:51 +08:00
Hsiao-Wei Wang
ac717b106a
Address PR feedback from @mkalinin 2022-08-31 22:02:47 +08:00
Hsiao-Wei Wang
f8d92c3bd8
Add basic test case 2022-08-24 23:20:31 +08:00
Hsiao-Wei Wang
b3ef9b2b3e
Add invalid fork version tests 2022-08-18 22:49:02 +08:00
Danny Ryan
ccc40e1982
a few more bellatrix tests (#2962)
* Do not overload index with WithdrawalIndex and ValidatorIndex

* a few more bellatrix tests

* use function from other PR

* fix tests

* Update tests/core/pyspec/eth2spec/test/bellatrix/transition/test_transition.py

Co-authored-by: Hsiao-Wei Wang <hsiaowei.eth@gmail.com>

* refactor to reuse bellatrix transitio ntests for all transitions

Co-authored-by: Potuz <potuz@prysmaticlabs.com>
Co-authored-by: Hsiao-Wei Wang <hsiaowei.eth@gmail.com>
2022-08-15 07:49:53 -06:00
Danny Ryan
3d785dad7a
pr feedback from @hwwhww 2022-08-03 08:24:32 -06:00
Hsiao-Wei Wang
1d2ef9f8cb
Merge pull request #2938 from etan-status/lc-testsuite
Add functions for deriving light client data
2022-07-20 14:47:05 +08:00
Hsiao-Wei Wang
0f31fcdee4
[Refactor] remove useless spec param from compute_committee_indices 2022-07-19 22:17:35 +08:00
Etan Kissling
0941114acf
Merge branch 'dev' into lc-testsuite 2022-07-18 18:19:07 +02:00
Hsiao-Wei Wang
a1546fdf4f
Merge branch 'dev' into fix-capella-genesis 2022-07-18 14:48:02 +08:00
Etan Kissling
c9f0927d8b
Merge branch 'dev' into lc-testsuite 2022-07-17 06:34:52 +02:00
Etan Kissling
63816debcc
Merge commit '9c798806355f67a32704a8cd5a98d90deccb8f69' into lc-testsuite 2022-07-15 21:38:18 +02:00
Hsiao-Wei Wang
400e1e54c1
Fix EIP4844 create_genesis_state, EIP4844_FORK_VERSION, and config_fork_epoch_overrides
`config_fork_epoch_overrides`: since Capella and EIP4844 are in parallel, need to check if the field exists

Update `compute_fork_version`
2022-07-16 01:13:25 +08:00
Hsiao-Wei Wang
9c79880635
Fix genesis testing tool and add Capella version initialize_beacon_state_from_eth1 helper 2022-07-15 22:22:19 +08:00
Etan Kissling
86fe93ca96
Add functions for deriving light client data
Adds `create_light_client_bootstrap` and `create_light_client_update`
functions as a reference implementation for serving light client data.
This also enables a new test harness to verify that light client data
gets applied to a `LightClientStore` as expected.
2022-07-14 09:36:09 +02:00
George Kadianakis
567a25f883 EIP-4844: Make the spec executable
- Implement all the required glue code to make things executable
- Implement a dummy KZG trusted setup

Co-authored-by: Hsiao-Wei Wang <hsiaowei.eth@gmail.com>
2022-07-13 13:14:05 +03:00
Etan Kissling
c4dbd241ac
Root next_sync_committee in attested_header
`LightClientUpdate` structures currently use different merkle proof root
depending on the presence of `finalized_header`. By always rooting it in
the same state (the `attested_header.state_root`), logic gets simpler.

Caveats:
- In periods of extended non-finality, `update.finalized_header` may now
  be outdated by several sync committee periods. The old implementation
  rejected such updates as the `next_sync_committee` in them was stale,
  but the new implementation can properly handle this case.
- The `next_sync_committee` can no longer be considered finalized based
  on `is_finality_update`. Instead, waiting until `finalized_header` is
  in the `attested_header`'s sync committee period is now necessary.
- Because `update.finalized_header > store.finalized_header` no longer
  holds (for updates with finality), an `is_better_update` helper is
  added to improve `best_valid_update` tracking (in the past, finalized
  updates with supermajority participation would always directly apply)

This PR builds on prior work from:
- @hwwhww at https://github.com/ethereum/consensus-specs/pull/2829
2022-07-01 14:49:24 -07:00
Etan Kissling
e269b305b9
Cleanup light client tests
Various cleanups and minor fixes:
- Consistent terminology:
  - `signed_block` -> `attested_block`
  - `finalized_block_header` -> `finalized_header`
  - `snapshot_period` -> `store_period`
- Use correct block in finality test (`blocks[-1]` instead of new one)
- Add `signed_block_header` func to get header from `SignedBeaconBlock`
- Remove `block_header` from `get_sync_aggregate` helper arguments
- Use `state_transition_with_full_block` as shortcut for multiple calls
- Have `finalized_header` actually be header instead of full block body
- Consistent ordering of `assert` to match structure definition
2022-06-30 11:09:49 +02:00
Etan Kissling
9a253e437d
create decorator for tests with matching config 2022-06-24 01:05:11 +02:00
Etan Kissling
0b8ab23bd4
Remove fork_version from LightClientUpdate
The `fork_version` field in `LightClientUpdate` can be derived from the
`update.signature_slot` value by consulting the locally configured fork
schedule. The light client already needs access to the fork schedule to
determine the `GeneralizedIndex` values used for merkle proofs, and the
memory layouts of the structures (including `LightClientUpdate`). The
`fork_version` itself is network dependent and doesn't reveal that info.
2022-06-16 17:17:24 +02:00
Hsiao-Wei Wang
8cc008d11c
Merge pull request #2805 from etan-status/lc-period
Allow light client to verify signatures at period boundary
2022-06-16 16:53:12 +02:00
Danny Ryan
74489d5523
Partial withdrawals (#2862)
* t push base design for partial withdrawals

* moor tests

* clean up withdrawals naming

* make partial withdrawal randomized tests better

* Apply suggestions from code review

Co-authored-by: Alex Stokes <r.alex.stokes@gmail.com>
Co-authored-by: Hsiao-Wei Wang <hsiaowei.eth@gmail.com>

* fix mainnet brokn test

* name swap

* lint

Co-authored-by: Alex Stokes <r.alex.stokes@gmail.com>
Co-authored-by: Hsiao-Wei Wang <hsiaowei.eth@gmail.com>
2022-06-08 13:16:12 -06:00
Etan Kissling
5653649ca8
Allow light client to verify signatures at period boundary
As the sync committee signs the previous block, the situation arises at
every sync committee period boundary, that the new sync committee signs
a block in the previous sync committee period. The light client cannot
reliably detect this condition (e.g., assume that this is the case when
it is currently on the last slot of a sync committee period), because
the last couple slots of a sync committee period may not have a block.

For example, when receiving a `LightClientUpdate` that is constructed
as in the following illustration, it is unknown whether `sync_aggregate`
was signed by the current or next sync committee at `attested_header`.

```

        slot N           N + 1   |            N + 2   (slot not sent!)
                                 |
  +-----------------+     \ /    |     +----------------+
  | attested_header | <--- X ----|---- | sync_aggregate |
  +-----------------+     / \    |     +----------------+
                        missed   |
                                 |
                          sync committee
                          period boundary
```

This patch addresses this edge case by including the slot at which the
`sync_aggregate` was created into the `LightClientUpdate` object.

Note that the `signature_slot` cannot be trusted beyond the purpose of
signature verification, as it could be manipulated to any other slot
within the same sync committee period and fork version, without making
the `sync_aggregate` invalid.
2022-05-02 13:08:20 +02:00
Danny Ryan
2017b61265
test address_change 2022-03-22 13:37:17 -06:00
Danny Ryan
b469593219
toc 2022-03-22 08:22:35 -06:00
Danny Ryan
c10d219664
Merge branch 'dev' into withdrawals-push 2022-03-22 08:11:09 -06:00
Danny Ryan
493b169022
refine naming for withdrawals 2022-03-22 07:55:45 -06:00
Danny Ryan
36aae1d848
add tests for process_withdrawals 2022-03-16 13:35:29 -06:00
Danny Ryan
3dd83cf4ee
minor withdrawals renamings 2022-03-10 12:30:51 -07:00
Hsiao-Wei Wang
95c712598a Fix test_discard_equivocations test vectors 2022-03-09 10:16:37 +08:00
Danny Ryan
0a55f062d7
fix execution paylaod tests 2022-02-24 15:38:23 -07:00
Danny Ryan
2026103bb9
Merge branch 'dev' into withdrawals-push 2022-02-23 15:08:29 -07:00
Mikhail Kalinin
1280fe2a02 Bellatrix: random -> prev_randao 2022-02-22 17:16:33 +06:00
Hsiao-Wei Wang
3d7f307020 Refactor test_sync_protocol.py a bit 2022-02-04 17:46:37 -08:00
Danny Ryan
671c4f0e3a
receipt_root -> receipts_root 2022-01-17 13:42:10 -07:00
Hsiao-Wei Wang
171a9ccc81
Resolve conflicts 2021-12-27 18:30:12 +08:00
Hsiao-Wei Wang
8facc0a095
Merge -> Bellatrix 2021-12-23 14:25:43 +08:00
Danny Ryan
180abb90ec
clean up some withdrawal logic and add tests 2021-12-02 11:56:33 -07:00
Danny Ryan
3024dc8ba8
add withdrawn_epoch to capella validators 2021-12-02 10:52:56 -07:00
Danny Ryan
78d55839b9
fix tsts 2021-12-01 16:42:12 -07:00
Danny Ryan
4f24fe455b
basic capella withdrawal in place 2021-12-01 11:37:30 -07:00
Hsiao-Wei Wang
d7f6a42729
[WIP] Add ex-ante fork choice test cases 2021-12-01 02:37:22 +08:00
Danny Ryan
69e7f586ac
Merge pull request #2738 from ethereum/fix-names
is_merge -> is_merge_transition
2021-11-23 14:52:05 -07:00
Danny Ryan
a0d008bb86
is_merge -> is_merge_transition 2021-11-23 14:45:03 -07:00