4707 Commits

Author SHA1 Message Date
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
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
inphi
dbac7b1582
EIP-4844: Remove shard field from BlobsSidecar 2022-06-13 16:32:18 -04: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
Murphy Law
a3128b8c57
EIP-4844: fix a typo (#2898) 2022-05-31 08:40:06 -06:00
Jacek Sieka
0e6a7cd39a
deprecate BeaconBlocksByRange.step (#2856)
* deprecate `BeaconBlocksByRange.step`

The `step` parameter has not seen much implementation in real life
clients which instead opt to request variations on a few epochs at a
time (instead of interleaving single blocks, entire epochs are
interleaved).

At the same time, supporting `step` on the server side brings several
complications: more complex bounds checking logic, more complex loading
of blocks from linear storage (which presumably stores all blocks and
not just certain increments).

This PR suggests that we deprecate the whole idea. Backwards
compatibility is kept by simply responding with a single block when
`step > 0` - this is allowed by the spec and should thus be handled
gracefully by requesting clients already, should there exist any that
use larger step counts.

Removing `step` now allows simplifying the EL-CL protocol for serving
execution data from the EL to avoid double storage.

* Update specs/phase0/p2p-interface.md

Co-authored-by: Danny Ryan <dannyjryan@gmail.com>

Co-authored-by: Danny Ryan <dannyjryan@gmail.com>
2022-05-20 13:18:24 -06:00
Caspar Schwarz-Schilling
72f7b88f2a
Update PROPOSER_SCORE_BOOST to 40 percent (#2895) 2022-05-20 13:15:40 -06:00
Mikhail Kalinin
d62ebaeaca
Run on_tick before picking the head for proposal (#2897) 2022-05-19 07:56:49 -06:00
Alex Stokes
5337da5dff
use python syntax for bitwise AND operation (#2894) 2022-05-17 07:14:19 -06:00
Jacek Sieka
bab5e402df
Ignore subset aggregates (#2847)
* Ignore subset aggregates

When aggregates are propagated through the network, it is often the case
that a better aggregate has already been seen - in particular, this
happens when an aggregator has not been able to include itself in the
mesh and therefore publishes an aggregate with only its own
attestations.

This new ignore rule allows dropping all aggregates that are
(non-strict) subsets of aggregates that have already been seen on the
network. In particular, it does not mandate dropping aggregates where a
union of previous aggregates would cause it to become a subset).

The logic for allowing this is based on the premise that any aggregate
that has already been seen by a peer will also have been seen by its
neighbours - a subset aggregate (strict or not) brings no new value to
the aggregation algorithm, except in the extreme edge case where you
could combine several such sparse aggregates into a single, more dense
"combined" aggregate and thus use less block space.

Further, as a small benefit, computing the `hash_tree_root` of the full
aggregate is generally not done -however, `hash_tree_root(data)` is
already done for other purposes as this is used as index in the beacon
API.

* add subset ignore rule to sync contributions as well

* typo
2022-05-17 07:05:22 -06:00
Alex Stokes
20a90f1df7
Add new DomainType for application usage (#2884) 2022-05-16 08:08:15 -06:00
Danny Ryan
af1fbab181
Merge pull request #2888 from casparschwa/update-proposer-score-boost
Update proposer score boost
2022-05-16 08:06:59 -06:00
terencechain
ec7bb23697
bellatrix-p2p: fix a typo 2022-05-14 10:30:20 -07:00
Danny Ryan
c0a8178fff
minor patch to bytes formatting in capella 2022-05-10 09:37:01 -06:00
Danny Ryan
242f286f6e
Merge pull request #2878 from michaelsproul/forkchoice-b4-propose
Require fork choice to run before proposal
2022-05-10 09:23:16 -06:00
Caspar Schwarz-Schilling
712a4f9cf1 Fix linting 2022-05-09 15:05:05 +02:00
Caspar Schwarz-Schilling
f5303ca58e Update PROPOSER_SCORE_BOOST to 33 percent 2022-05-09 10:17:24 +02: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
Michael Sproul
3f76792ee3
Require fork choice to run before proposal 2022-05-05 11:21:55 +10: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
Etan Kissling
f125538122
Fix param order in prepare_execution_payload
Documentation on how to call `prepare_execution_payload` had the params
for `safe_block_hash` and `finalized_block` hash flipped compared to the
function definition. Also updated tests for consistency.
2022-04-25 16:49:00 +02:00
Hsiao-Wei Wang
83ac38c183
Merge pull request #2872 from benjaminion/patch-1 2022-04-17 08:00:33 -07:00
Ben Edgington
eca7237b27
Correct typo: BLSCommitment -> KZGCommitment
The consensus chain counterpart to https://github.com/ethereum/EIPs/pull/4992. The same comment from there applies here as well.
2022-04-13 15:04:55 +01:00
Hsiao-Wei Wang
dcf41ef5e2 Merge branch 'dev' into eip4844-typo 2022-04-12 22:14:37 +08:00
Hsiao-Wei Wang
5978c86f3a
Typo fix: ksg_to_version_hash -> kzg_to_versioned_hash 2022-04-10 18:41:49 +08:00
Hsiao-Wei Wang
6576cab612 Fix Capella prepare_execution_payload 2022-04-06 18:13:39 +08:00
Danny Ryan
1bfefe301d
Merge pull request #2858 from mkalinin/justified-to-safe-block
Bellatrix: pass justified as a safe block
2022-03-30 12:19:21 -06:00
Danny Ryan
c87fc48053
minor typo 2022-03-30 12:04:23 -06:00
Mikhail Kalinin
b13a9f0f8a Apply suggestions as per review 2022-03-30 15:36:01 +06:00
terence tsao
eb26a1d74c
EIP4844: fix a minor typo 2022-03-26 08:26:52 -07:00
Danny Ryan
19613ac7cd
Merge pull request #2854 from ralexstokes/update-0x01-creds
Update 0x01 withdrawal credentials.
2022-03-25 16:27:41 -06:00
Mikhail Kalinin
bd66114f4a Clarify names and move get_safe_block_hash to safe-block.md 2022-03-26 02:02:38 +06:00
Mikhail Kalinin
c97cc6f4dc Add separate get_safe_beacon_block function 2022-03-24 17:22:11 +06:00
Mikhail Kalinin
bc95973232
Reorder params
Co-authored-by: Hsiao-Wei Wang <hsiaowei.eth@gmail.com>
2022-03-24 16:35:28 +06: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
Mikhail Kalinin
046eaf2ea0 Bellatrix: remove a comment about safe head stub 2022-03-22 22:53:47 +06:00
Mikhail Kalinin
95a2327800 Bellatrix: add get_safe_block_hash to validator.md 2022-03-22 22:51:45 +06:00
Mikhail Kalinin
d195e066ad Fix toc 2022-03-22 20:41:42 +06:00
Mikhail Kalinin
199398c503 Bellatrix: pass justified as a safe block 2022-03-22 20:26:09 +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
c10d219664
Merge branch 'dev' into withdrawals-push 2022-03-22 08:11:09 -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