267d8babc8
## Issue Addressed Resolves #2936 ## Proposed Changes Adds functionality for calling [`validator/prepare_beacon_proposer`](https://ethereum.github.io/beacon-APIs/?urls.primaryName=dev#/Validator/prepareBeaconProposer) in advance. There is a `BeaconChain::prepare_beacon_proposer` method which, which called, computes the proposer for the next slot. If that proposer has been registered via the `validator/prepare_beacon_proposer` API method, then the `beacon_chain.execution_layer` will be provided the `PayloadAttributes` for us in all future forkchoiceUpdated calls. An artificial forkchoiceUpdated call will be created 4s before each slot, when the head updates and when a validator updates their information. Additionally, I added strict ordering for calls from the `BeaconChain` to the `ExecutionLayer`. I'm not certain the `ExecutionLayer` will always maintain this ordering, but it's a good start to have consistency from the `BeaconChain`. There are some deadlock opportunities introduced, they are documented in the code. ## Additional Info - ~~Blocked on #2837~~ Co-authored-by: realbigsean <seananderson33@GMAIL.com>
37 lines
1.2 KiB
TOML
37 lines
1.2 KiB
TOML
[package]
|
|
name = "execution_layer"
|
|
version = "0.1.0"
|
|
edition = "2021"
|
|
|
|
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
|
|
|
[dependencies]
|
|
types = { path = "../../consensus/types"}
|
|
tokio = { version = "1.10.0", features = ["full"] }
|
|
async-trait = "0.1.51"
|
|
slog = "2.5.2"
|
|
futures = "0.3.7"
|
|
sensitive_url = { path = "../../common/sensitive_url" }
|
|
reqwest = { version = "0.11.0", features = ["json","stream"] }
|
|
eth2_serde_utils = "0.1.1"
|
|
serde_json = "1.0.58"
|
|
serde = { version = "1.0.116", features = ["derive"] }
|
|
eth1 = { path = "../eth1" }
|
|
warp = { git = "https://github.com/macladson/warp", rev ="dfa259e", features = ["tls"] }
|
|
jsonwebtoken = "8"
|
|
environment = { path = "../../lighthouse/environment" }
|
|
bytes = "1.1.0"
|
|
task_executor = { path = "../../common/task_executor" }
|
|
hex = "0.4.2"
|
|
eth2_ssz_types = "0.2.2"
|
|
lru = "0.7.1"
|
|
exit-future = "0.2.0"
|
|
tree_hash = "0.4.1"
|
|
tree_hash_derive = { path = "../../consensus/tree_hash_derive"}
|
|
parking_lot = "0.11.0"
|
|
slot_clock = { path = "../../common/slot_clock" }
|
|
tempfile = "3.1.0"
|
|
rand = "0.7.3"
|
|
zeroize = { version = "1.4.2", features = ["zeroize_derive"] }
|
|
lighthouse_metrics = { path = "../../common/lighthouse_metrics" }
|
|
lazy_static = "1.4.0" |