Potuz 79bb7efbf8 Check init sync before getting payload attributes (#13479)
* Check init sync before getting payload attributes

This PR adds a helper to forkchoice to return the delay of the latest
imported block. It also adds a helper with an heuristic to check if the
node is during init sync. If the highest imported node was imported with
a delay of less than an epoch then the node is considered in regular
sync. If on the other hand, in addition the highest imported node is
more than two epochs old, then the node is considered in init Sync.

The helper to check this only uses forkchoice and therefore requires a
read lock. There are four paths to call this

1) During regular block processing, we defer a function to send the
   second FCU call with attributes. This function may not be called at
all if we are not regularly syncing
2) During regular block processing, we check in the path
   `postBlockProces->getFCUArgs->computePayloadAttributes` the payload
attributes if we are syncing a late block. In this case forkchoice is
already locked and we add a call in `getFCUArgs` to return early if not
regularly syncing
3) During handling of late blocks on `lateBlockTasks` we simply return
   early if not in regular sync (This is the biggest change as it takes
a longer FC lock for lateBlockTasks)
4) On Attestation processing, in UpdateHead, we are already locked so we
   just add a check to not update head on this path if not regularly
syncing.

* fix build

* Fix mocks
2024-01-17 15:39:28 +00:00
2021-11-12 15:55:45 +00:00
2023-08-11 16:39:35 +00:00
2023-08-04 22:05:47 +08:00
2023-12-08 20:37:20 +00:00
2023-09-01 12:51:27 +02:00
2024-01-10 09:38:06 +00:00
2024-01-10 09:38:06 +00:00
2024-01-10 15:34:11 +00:00
2024-01-10 15:34:11 +00:00
2023-03-17 18:52:56 +00:00
2022-12-06 16:01:17 +00:00
2019-07-22 14:10:17 -05:00
2023-01-18 15:21:58 +08:00
2022-11-18 19:12:19 +00:00
2022-05-20 07:16:53 +00:00
2018-07-20 10:23:48 -05:00
2024-01-10 15:34:11 +00:00
2024-01-10 15:34:11 +00:00
2023-10-19 12:23:11 +00:00
2023-12-08 04:07:10 +00:00
2024-01-10 15:34:11 +00:00

Prysm: An Ethereum Consensus Implementation Written in Go

Build status Go Report Card Consensus_Spec_Version 1.3.0 Execution_API_Version 1.0.0-beta.2 Discord GitPOAP Badge

This is the core repository for Prysm, a Golang implementation of the Ethereum Consensus specification, developed by Offchain Labs. See the Changelog for details of the latest releases and upcoming breaking changes.

Getting Started

A detailed set of installation and usage instructions as well as breakdowns of each individual component are available in the official documentation portal. If you still have questions, feel free to stop by our Discord.

Staking on Mainnet

To participate in staking, you can join the official eth2 launchpad. The launchpad is the only recommended way to become a validator on mainnet. You can explore validator rewards/penalties via Bitfly's block explorer: beaconcha.in, and follow the latest blocks added to the chain on beaconscan.

Contributing

Branches

Prysm maintains two permanent branches:

  • master: This points to the latest stable release. It is ideal for most users.
  • develop: This is used for development, it contains the latest PRs. Developers should base their PRs on this branch.

Guide

Want to get involved? Check out our Contribution Guide to learn more!

License

GNU General Public License v3.0

Terms of Use

Description
No description provided
Readme 904 MiB
Languages
Go 95.3%
Starlark 4.1%
Shell 0.4%
Smarty 0.1%