Commit Graph

7331 Commits

Author SHA1 Message Date
Jacek Sieka 530c87e30d
typo 2022-03-18 08:50:03 +01:00
Jacek Sieka d5f4c46183
add subset ignore rule to sync contributions as well 2022-03-18 08:48:00 +01:00
Jacek Sieka a0755c2e86
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.
2022-03-03 18:31:09 +01:00
Danny Ryan 0b883a8692
Merge pull request #2844 from sigp/opt-import
Optimistically import any post-merge block
2022-03-03 09:46:15 -07:00
Paul Hauner bf25d323fc
Use merge consistently 2022-03-02 19:03:06 +11:00
Paul Hauner f071931e46
Address indenting 2022-03-01 18:46:39 +11:00
Paul Hauner c2ff09441d
Allow any non-merge block 2022-03-01 18:34:53 +11:00
Danny Ryan 72d4597131
Merge pull request #2828 from ethereum/is_finality_update
Refactoring: add `is_finality_update` helper
2022-02-28 08:39:38 -07:00
Danny Ryan 3f2d5ecda7
Merge pull request #2838 from ethereum/revert-dupe-condition
revert removal of aggregate deduplication condition from #2183
2022-02-28 08:19:45 -07:00
Danny Ryan 22e476b666
Merge pull request #2840 from ethereum/bump-version
bump VERSION.txt to 1.1.10
2022-02-25 11:23:42 -07:00
Danny Ryan 1fb7a95329
bump VERSION.txt to 1.1.10 2022-02-25 11:23:15 -07:00
Danny Ryan bbdb50278c
Merge pull request #2830 from status-im/ignore-atts
Ignore attestations voting for the wrong finalized checkpoint
2022-02-25 11:18:41 -07:00
Danny Ryan 03f0f6762a
revert removal of aggregate deduplication condition from #2183 2022-02-25 10:25:27 -07:00
Danny Ryan f4967bc47e
Merge pull request #2835 from mkalinin/random-to-prevrandao
Bellatrix: random -> prev_randao
2022-02-22 11:47:24 -07:00
Mikhail Kalinin 1280fe2a02 Bellatrix: random -> prev_randao 2022-02-22 17:16:33 +06:00
Jacek Sieka 9fb2dd16c1
Ignore attestations voting for the wrong finalized checkpoint
When nodes are syncing but have not yet reached the canonical `head`,
they cannot determine whether nodes they are connected to serve a valid
history or are making bogus claims in their `Status` advertisement.

Thus, the best course of action that a client can take is to vote for
its "current" best synced head, regardless of whether it's connected to
peers that claim to have other heads or not.

However, in the p2p spec, we penalize such peers with a `REJECT` - this
should be an `IGNORE` instead because this vote is correct per the spec,
albeit "late" according to the validating clients' view of the chain.
2022-02-11 17:12:13 +01:00
Hsiao-Wei Wang 6d11d627f8 Refactoring: add `is_finality_update` helper 2022-02-09 18:13:51 -07:00
Danny Ryan 8ae93b8265
Merge pull request #2826 from ethereum/get_sync_aggregate
Minor refactoring for test_sync_protocol.py
2022-02-09 10:19:10 -07:00
Danny Ryan 5a09b5f8a8
Merge pull request #2814 from etan-status/lc-opt-fin
Ensure light client `optimistic_header` to be at head
2022-02-09 10:06:57 -07:00
Danny Ryan 7879ed58c6
Merge pull request #2827 from terencechain/patch-131
Fix typo justified
2022-02-07 07:16:28 -07:00
terence tsao 7c492ce4ce
Fix typo 2022-02-06 13:32:21 -08:00
Hsiao-Wei Wang 3d7f307020 Refactor test_sync_protocol.py a bit 2022-02-04 17:46:37 -08:00
Danny Ryan 824ff970f5
Merge pull request #2818 from etan-status/err-unavailable
Update reserved libp2p error documentation
2022-02-03 09:00:34 -07:00
Hsiao-Wei Wang f2fd673a66
Merge pull request #2807 from etan-status/compute-sync-period
Consistently use `compute_sync_committee_period`
2022-02-01 16:05:58 -08:00
Danny Ryan adf20c5663
Merge pull request #2822 from ethereum/bump-version
bump version
2022-01-28 06:48:09 -07:00
Danny Ryan 67fcbf22ec
bump version 2022-01-28 06:44:04 -07:00
Danny Ryan 4f73e3af9d
Merge pull request #2820 from sigp/opt-statuses
Add more statuses to opt sync spec
2022-01-28 06:33:00 -07:00
Danny Ryan ccf6f35210
Merge pull request #2821 from ralexstokes/add-bellatrix-random-tests
add randomized tests for bellatrix
2022-01-28 06:30:04 -07:00
Alex Stokes 129d9e28b4
add randomized tests for bellatrix 2022-01-27 19:41:09 -08:00
Etan Kissling 20c8d0d641
Update reserved libp2p error documentation
The spec reserves the libp2p error code range `[3, 127]` for future use
but actually defines error code `3` as `ResourceUnavailable`. This patch
updates the reserved range to `[4, 127]`.
2022-01-28 00:33:38 +01:00
Paul Hauner cbbe6e744a
Add aliases 2022-01-28 09:45:08 +11:00
Paul Hauner 020d72c756
Remove link fragment 2022-01-28 08:43:18 +11:00
Danny Ryan 420ec14713
Merge pull request #2817 from mkalinin/rename-execute-payload
Bellatrix: Rename execute_payload to notify_new_payload
2022-01-27 06:40:17 -07:00
Mikhail Kalinin eb4497fae7 Bellatrix: Rename execute_payload to notify_new_payload 2022-01-27 15:24:53 +06:00
Danny Ryan b517092770
Merge pull request #2812 from tersec/intervals_per_slot
use INTERVALS_PER_SLOT in sync committee specs
2022-01-25 15:18:53 -07:00
Danny Ryan d5e4828aec
Merge pull request #2770 from sigp/opt-sync-2
Optimistic Sync
2022-01-25 10:26:29 -07:00
Etan Kissling 0e9460b8dd
Ensure light client `optimistic_header` to be at head
When a light client updates its `finalized_header` using a forced update
because of the timeout, and the new header was not signed by enough sync
committee participants to pass `get_safety_threshold(store)`, it may
occur that `store.finalized_header.slot > store.optimistic_header.slot`.
This patch ensures that the `optimistic_header` is updated to the latest
`finalized_header` if that happens, so that it always indicates the
latest known and accepted head.
2022-01-25 10:09:10 +01:00
Dustin Brody 182e4496c3
use INTERVALS_PER_SLOT in sync committee specs 2022-01-21 19:01:56 +00:00
Paul Hauner b50bea86a0
Merge pull request #2 from ethereum/build-opt-sync
build opimistic sync file
2022-01-21 09:50:02 +11:00
Danny Ryan a5b3c91f25
build opimistic sync file and fix a minor lint/typing issue 2022-01-20 09:25:02 -07:00
Danny Ryan 2232d76735
Merge pull request #2808 from ethereum/receipts-root
receipt_root -> receipts_root
2022-01-20 08:37:57 -07:00
Alex Stokes 02b32100ed
Merge pull request #2803 from ralexstokes/clean-up-linter
add `pylint` to catch unused args
2022-01-18 09:29:54 -06:00
Danny Ryan f77fc055f8
Update specs/bellatrix/beacon-chain.md
Co-authored-by: Hsiao-Wei Wang <hsiaowei.eth@gmail.com>
2022-01-18 07:19:00 -07:00
Paul Hauner 50b236e5eb
Address TERMINAL_BLOCK_HASH 2022-01-18 14:55:10 +11:00
Paul Hauner be4319a048
Rename `justified_is_verified` 2022-01-18 12:31:36 +11:00
Paul Hauner 24947be7c3
Rename should_optimistically_import... 2022-01-18 12:29:20 +11:00
Paul Hauner bfe4172584
Define `current_slot` 2022-01-18 12:26:30 +11:00
Paul Hauner 0ec61bd195
Clarify liveness 2022-01-18 12:21:34 +11:00
Paul Hauner f4a125c89a
Remove reorg section 2022-01-18 11:36:36 +11:00
Paul Hauner 4ccd38b54e
Tidy tracking note 2022-01-18 11:32:47 +11:00