116 Commits

Author SHA1 Message Date
Potuz
22f803a038 name change and increment operator 2022-11-04 07:20:26 -03:00
Potuz
6e913ecbd2 rename to latest_withdrawal_validator_index 2022-11-03 20:23:35 -03:00
Hsiao-Wei Wang
0b1f32ec25
Fix capella/block_processing tests 2022-11-03 16:08:05 -05:00
Potuz
a09d617737 right ret 2022-11-03 15:07:03 -03:00
Potuz
329bafa6e2 dapplion's suggestions 2022-11-03 14:58:55 -03:00
Potuz
12404d0250 fix for loop 2022-11-03 14:56:38 -03:00
Potuz
39e6ec5d14
lint 2022-11-03 11:43:56 -05:00
Potuz
a14479a70f
g11tech review 2022-11-03 11:43:56 -05:00
Potuz
ff1dd90012
fix toc 2022-11-03 11:43:24 -05:00
Potuz
5b92eae08f
type annotation 2022-11-03 11:43:24 -05:00
Potuz
0f74ab5686
type annotation 2022-11-03 11:43:24 -05:00
Potuz
c156ea6adc
linting and typo 2022-11-03 11:43:24 -05:00
Potuz
49a2519da2
lint 2022-11-03 11:43:24 -05:00
Potuz
7dbd50e958
Reviewers' comments
- Implemented many of Alex's comments including reinsertion of the
  withdrawal index in the BeaconState
- Implemented Sean's suggestion of separating the logic for block
  production so that one matches the list in the payload with what
`get_expected_withdrawals` returns
- Changed `get_expected_wihdrawals` to match the current behavior and
  moved it to `beacon-chain.md`
2022-11-03 11:42:31 -05:00
Potuz
d958ed70b4
Implement withdrawals without queues 2022-11-03 11:40:54 -05:00
Mark Mackey
826c20ffc2 Capella: Add Gossip Topic bls_to_execution_change 2022-11-01 12:54:33 -05: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
Hsiao-Wei Wang
9844ea1f30
Merge pull request #3040 from ethereum/capella-test-vectors
Capella test vectors
2022-10-23 06:44:03 +08:00
Hsiao-Wei Wang
53b63cedc5
Merge branch 'dev' into pr3050 2022-10-19 10:21:32 -05:00
Jim McDonald
0345b2284a
Add validator_index to Withdrawal. 2022-10-18 15:35:06 +01:00
Hsiao-Wei Wang
b90436c988
Fix capella random & fork 2022-10-14 23:42:42 -05:00
Alex Stokes
092617ec1e
Remove duplicated definition of Validator 2022-10-09 17:02:50 -05:00
Danny Ryan
eeebd42a95
Merge pull request #2998 from ethereum/remove-withdrawn-epoch
remove withdrawn_epoch
2022-09-26 14:30:25 -06: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
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
Danny Ryan
70f90c5296
rmove withdrawn_epoch 2022-09-19 11:39:46 -06:00
Potuz
2c32fa6473 Do not overload index with WithdrawalIndex and ValidatorIndex 2022-07-26 17:34:02 -03:00
Hsiao-Wei Wang
647e9d0ec0
PR feedback from @ralexstokes 2022-07-18 14:45:00 +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
840733ffd2
Move compute_fork_version to fork.md 2022-06-23 21:03:24 +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
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
Danny Ryan
c0a8178fff
minor patch to bytes formatting in capella 2022-05-10 09:37:01 -06:00
Danny Ryan
c1d0836936
Merge pull request #2855 from ethereum/00-to-01
00 to 01 cred change
2022-05-05 07:31:49 -06:00
Hsiao-Wei Wang
6576cab612 Fix Capella prepare_execution_payload 2022-04-06 18:13:39 +08:00
Danny Ryan
4ac4158b42
move bls chang operation to end of block body 2022-03-23 10:54:40 -06:00
Hsiao-Wei Wang
8a388f2226 toc 2022-03-23 15:38:17 +08:00
Danny Ryan
2017b61265
test address_change 2022-03-22 13:37:17 -06:00
Danny Ryan
38496ba021
toc 2022-03-22 08:23:59 -06:00
Danny Ryan
702ed9f39a
Merge branch 'withdrawals-push' into 00-to-01 2022-03-22 08:23:34 -06:00
Danny Ryan
b469593219
toc 2022-03-22 08:22:35 -06:00
Danny Ryan
0da78ebc4b
Merge branch 'withdrawals-push' into 00-to-01 2022-03-22 08:19:31 -06:00
Danny Ryan
a2db44693b
build 2022-03-22 08:14:38 -06:00
Danny Ryan
43ce98b541
Merge branch 'withdrawals-push' of github.com:ethereum/eth2.0-specs into withdrawals-push 2022-03-22 08:10:53 -06:00
Danny Ryan
03f9503de0
Apply suggestions from code review
Co-authored-by: Alex Stokes <r.alex.stokes@gmail.com>
2022-03-22 08:03:55 -06:00
Danny Ryan
9a8ff4f3ab
topo sort 2022-03-22 08:00:53 -06:00
Danny Ryan
493b169022
refine naming for withdrawals 2022-03-22 07:55:45 -06:00