From a53830fd60a119bf3f659b253360af8027128e83 Mon Sep 17 00:00:00 2001 From: Paul Hauner Date: Sun, 26 Mar 2023 22:39:28 +0000 Subject: [PATCH 01/56] Release v4.0.1 (#4125) ## Issue Addressed NA ## Proposed Changes - Bump versions. - Bump openssl version to resolve various `cargo audit` notices. ## Additional Info - Requires further testing --- Cargo.lock | 16 ++++++++-------- beacon_node/Cargo.toml | 2 +- boot_node/Cargo.toml | 2 +- common/lighthouse_version/src/lib.rs | 4 ++-- lcli/Cargo.toml | 2 +- lighthouse/Cargo.toml | 2 +- 6 files changed, 14 insertions(+), 14 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index eb26414d09..b5ed6497c4 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -618,7 +618,7 @@ dependencies = [ [[package]] name = "beacon_node" -version = "4.0.1-rc.0" +version = "4.0.1" dependencies = [ "beacon_chain", "clap", @@ -786,7 +786,7 @@ dependencies = [ [[package]] name = "boot_node" -version = "4.0.1-rc.0" +version = "4.0.1" dependencies = [ "beacon_node", "clap", @@ -3770,7 +3770,7 @@ checksum = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55" [[package]] name = "lcli" -version = "4.0.1-rc.0" +version = "4.0.1" dependencies = [ "account_utils", "beacon_chain", @@ -4374,7 +4374,7 @@ dependencies = [ [[package]] name = "lighthouse" -version = "4.0.1-rc.0" +version = "4.0.1" dependencies = [ "account_manager", "account_utils", @@ -5333,9 +5333,9 @@ dependencies = [ [[package]] name = "openssl" -version = "0.10.45" +version = "0.10.48" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b102428fd03bc5edf97f62620f7298614c45cedf287c271e7ed450bbaf83f2e1" +checksum = "518915b97df115dd36109bfa429a48b8f737bd05508cf9588977b599648926d2" dependencies = [ "bitflags", "cfg-if", @@ -5374,9 +5374,9 @@ dependencies = [ [[package]] name = "openssl-sys" -version = "0.9.80" +version = "0.9.83" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23bbbf7854cd45b83958ebe919f0e8e516793727652e27fda10a8384cfc790b7" +checksum = "666416d899cf077260dac8698d60a60b435a46d57e82acb1be3d0dad87284e5b" dependencies = [ "autocfg 1.1.0", "cc", diff --git a/beacon_node/Cargo.toml b/beacon_node/Cargo.toml index fed3b96ca1..d8aa42a67e 100644 --- a/beacon_node/Cargo.toml +++ b/beacon_node/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "beacon_node" -version = "4.0.1-rc.0" +version = "4.0.1" authors = ["Paul Hauner ", "Age Manning "] edition = "2021" diff --git a/common/lighthouse_version/src/lib.rs b/common/lighthouse_version/src/lib.rs index f4e19e7962..c1b6333a37 100644 --- a/common/lighthouse_version/src/lib.rs +++ b/common/lighthouse_version/src/lib.rs @@ -17,8 +17,8 @@ pub const VERSION: &str = git_version!( // NOTE: using --match instead of --exclude for compatibility with old Git "--match=thiswillnevermatchlol" ], - prefix = "Lighthouse/v4.0.1-rc.0-", - fallback = "Lighthouse/v4.0.1-rc.0" + prefix = "Lighthouse/v4.0.1-", + fallback = "Lighthouse/v4.0.1" ); /// Returns `VERSION`, but with platform information appended to the end. diff --git a/lcli/Cargo.toml b/lcli/Cargo.toml index 84b66c37d2..22c4ce305f 100644 --- a/lcli/Cargo.toml +++ b/lcli/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "lcli" description = "Lighthouse CLI (modeled after zcli)" -version = "4.0.1-rc.0" +version = "4.0.1" authors = ["Paul Hauner "] edition = "2021" diff --git a/lighthouse/Cargo.toml b/lighthouse/Cargo.toml index 143ca86c30..2b7727ec11 100644 --- a/lighthouse/Cargo.toml +++ b/lighthouse/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "lighthouse" -version = "4.0.1-rc.0" +version = "4.0.1" authors = ["Sigma Prime "] edition = "2021" autotests = false From f4d13f914984549482c8cbaa3e1e192741ea33dd Mon Sep 17 00:00:00 2001 From: Michael Sproul Date: Tue, 28 Mar 2023 16:49:21 +0000 Subject: [PATCH 02/56] Update arbitrary (#4139) ## Proposed Changes To prevent breakages from `cargo update`, this updates the `arbitrary` crate to a new commit from my fork. Unfortunately we still need to use my fork (even though my `bound` change was merged) because of this issue: https://github.com/rust-lang/rust-clippy/issues/10185. In a couple of Rust versions it should be resolved upstream. --- Cargo.lock | 9 ++++----- Cargo.toml | 2 +- 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index b5ed6497c4..92502ca137 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -211,8 +211,8 @@ checksum = "224afbd727c3d6e4b90103ece64b8d1b67fbb1973b1046c2281eed3f3803f800" [[package]] name = "arbitrary" -version = "1.2.2" -source = "git+https://github.com/michaelsproul/arbitrary?rev=a572fd8743012a4f1ada5ee5968b1b3619c427ba#a572fd8743012a4f1ada5ee5968b1b3619c427ba" +version = "1.3.0" +source = "git+https://github.com/michaelsproul/arbitrary?rev=f002b99989b561ddce62e4cf2887b0f8860ae991#f002b99989b561ddce62e4cf2887b0f8860ae991" dependencies = [ "derive_arbitrary", ] @@ -1681,10 +1681,9 @@ dependencies = [ [[package]] name = "derive_arbitrary" -version = "1.2.2" -source = "git+https://github.com/michaelsproul/arbitrary?rev=a572fd8743012a4f1ada5ee5968b1b3619c427ba#a572fd8743012a4f1ada5ee5968b1b3619c427ba" +version = "1.3.0" +source = "git+https://github.com/michaelsproul/arbitrary?rev=f002b99989b561ddce62e4cf2887b0f8860ae991#f002b99989b561ddce62e4cf2887b0f8860ae991" dependencies = [ - "darling 0.14.3", "proc-macro2", "quote", "syn", diff --git a/Cargo.toml b/Cargo.toml index 46852645eb..ba07de0443 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -100,7 +100,7 @@ eth2_hashing = { path = "crypto/eth2_hashing" } tree_hash = { path = "consensus/tree_hash" } tree_hash_derive = { path = "consensus/tree_hash_derive" } eth2_serde_utils = { path = "consensus/serde_utils" } -arbitrary = { git = "https://github.com/michaelsproul/arbitrary", rev="a572fd8743012a4f1ada5ee5968b1b3619c427ba" } +arbitrary = { git = "https://github.com/michaelsproul/arbitrary", rev="f002b99989b561ddce62e4cf2887b0f8860ae991" } [patch."https://github.com/ralexstokes/mev-rs"] mev-rs = { git = "https://github.com/ralexstokes//mev-rs", rev = "7813d4a4a564e0754e9aaab2d95520ba437c3889" } From 65d0f63639b4bd41f3a72345a2ea569b6751b61f Mon Sep 17 00:00:00 2001 From: Jimmy Chen Date: Tue, 28 Mar 2023 22:07:03 +0000 Subject: [PATCH 03/56] Update Rust version in lcli Dockerfile (#4121) ## Issue Addressed The minimum supported Rust version has been set to 1.66 as of Lighthouse v4.0.0. This PR updates Rust to 1.66 in lcli Dockerfile. Co-authored-by: Jimmy Chen --- lcli/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lcli/Dockerfile b/lcli/Dockerfile index feda81d030..079e5c779b 100644 --- a/lcli/Dockerfile +++ b/lcli/Dockerfile @@ -1,7 +1,7 @@ # `lcli` requires the full project to be in scope, so this should be built either: # - from the `lighthouse` dir with the command: `docker build -f ./lcli/Dockerflie .` # - from the current directory with the command: `docker build -f ./Dockerfile ../` -FROM rust:1.65.0-bullseye AS builder +FROM rust:1.66.0-bullseye AS builder RUN apt-get update && apt-get -y upgrade && apt-get install -y cmake libclang-dev protobuf-compiler COPY . lighthouse ARG PORTABLE From d3c20ffa9decf22a351ac0b59162f19c4660948c Mon Sep 17 00:00:00 2001 From: int88 Date: Tue, 28 Mar 2023 22:07:05 +0000 Subject: [PATCH 04/56] improve error message (#4141) ## Issue Addressed NA ## Proposed Changes Not use magic number directly in the error message. ## Additional Info NA --- beacon_node/http_api/src/attestation_performance.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/beacon_node/http_api/src/attestation_performance.rs b/beacon_node/http_api/src/attestation_performance.rs index ca68d4d04c..3e7d8d5e31 100644 --- a/beacon_node/http_api/src/attestation_performance.rs +++ b/beacon_node/http_api/src/attestation_performance.rs @@ -77,8 +77,8 @@ pub fn get_attestation_performance( // query is within permitted bounds to prevent potential OOM errors. if (end_epoch - start_epoch).as_usize() > MAX_REQUEST_RANGE_EPOCHS { return Err(custom_bad_request(format!( - "end_epoch must not exceed start_epoch by more than 100 epochs. start: {}, end: {}", - query.start_epoch, query.end_epoch + "end_epoch must not exceed start_epoch by more than {} epochs. start: {}, end: {}", + MAX_REQUEST_RANGE_EPOCHS, query.start_epoch, query.end_epoch ))); } From 6bb28bc8064c78ca459291bf20a061ae7ce213a9 Mon Sep 17 00:00:00 2001 From: Christopher Chong Date: Wed, 29 Mar 2023 02:56:37 +0000 Subject: [PATCH 05/56] Add debug fork choice api (#4003) ## Issue Addressed Which issue # does this PR address? https://github.com/sigp/lighthouse/issues/3669 ## Proposed Changes Please list or describe the changes introduced by this PR. - A new API to fetch fork choice data, as specified [here](https://github.com/ethereum/beacon-APIs/pull/232) - A new integration test to test the new API ## Additional Info Please provide any additional information. For example, future considerations or information useful for reviewers. - `extra_data` field specified in the beacon-API spec is not implemented, please let me know if I should instead. Co-authored-by: Michael Sproul --- beacon_node/http_api/src/lib.rs | 56 +++++++++++++++++- beacon_node/http_api/tests/tests.rs | 57 ++++++++++++++++++- common/eth2/src/lib.rs | 12 ++++ common/eth2/src/types.rs | 20 +++++++ .../src/proto_array_fork_choice.rs | 16 +++++- 5 files changed, 158 insertions(+), 3 deletions(-) diff --git a/beacon_node/http_api/src/lib.rs b/beacon_node/http_api/src/lib.rs index d3d99c5c9f..b36adc5c08 100644 --- a/beacon_node/http_api/src/lib.rs +++ b/beacon_node/http_api/src/lib.rs @@ -30,7 +30,8 @@ use beacon_chain::{ pub use block_id::BlockId; use directory::DEFAULT_ROOT_DIR; use eth2::types::{ - self as api_types, EndpointVersion, SkipRandaoVerification, ValidatorId, ValidatorStatus, + self as api_types, EndpointVersion, ForkChoice, ForkChoiceNode, SkipRandaoVerification, + ValidatorId, ValidatorStatus, }; use lighthouse_network::{types::SyncState, EnrExt, NetworkGlobals, PeerId, PubsubMessage}; use lighthouse_version::version_with_platform; @@ -2148,6 +2149,58 @@ pub fn serve( }, ); + // GET debug/fork_choice + let get_debug_fork_choice = eth_v1 + .and(warp::path("debug")) + .and(warp::path("fork_choice")) + .and(warp::path::end()) + .and(chain_filter.clone()) + .and_then(|chain: Arc>| { + blocking_json_task(move || { + let beacon_fork_choice = chain.canonical_head.fork_choice_read_lock(); + + let proto_array = beacon_fork_choice.proto_array().core_proto_array(); + + let fork_choice_nodes = proto_array + .nodes + .iter() + .map(|node| { + let execution_status = if node.execution_status.is_execution_enabled() { + Some(node.execution_status.to_string()) + } else { + None + }; + + ForkChoiceNode { + slot: node.slot, + block_root: node.root, + parent_root: node + .parent + .and_then(|index| proto_array.nodes.get(index)) + .map(|parent| parent.root), + justified_epoch: node + .justified_checkpoint + .map(|checkpoint| checkpoint.epoch), + finalized_epoch: node + .finalized_checkpoint + .map(|checkpoint| checkpoint.epoch), + weight: node.weight, + validity: execution_status, + execution_block_hash: node + .execution_status + .block_hash() + .map(|block_hash| block_hash.into_root()), + } + }) + .collect::>(); + Ok(ForkChoice { + justified_checkpoint: proto_array.justified_checkpoint, + finalized_checkpoint: proto_array.finalized_checkpoint, + fork_choice_nodes, + }) + }) + }); + /* * node */ @@ -3676,6 +3729,7 @@ pub fn serve( .uor(get_config_deposit_contract) .uor(get_debug_beacon_states) .uor(get_debug_beacon_heads) + .uor(get_debug_fork_choice) .uor(get_node_identity) .uor(get_node_version) .uor(get_node_syncing) diff --git a/beacon_node/http_api/tests/tests.rs b/beacon_node/http_api/tests/tests.rs index 977c737fd0..1112cc5ae2 100644 --- a/beacon_node/http_api/tests/tests.rs +++ b/beacon_node/http_api/tests/tests.rs @@ -8,7 +8,7 @@ use environment::null_logger; use eth2::{ mixin::{RequestAccept, ResponseForkName, ResponseOptional}, reqwest::RequestBuilder, - types::{BlockId as CoreBlockId, StateId as CoreStateId, *}, + types::{BlockId as CoreBlockId, ForkChoiceNode, StateId as CoreStateId, *}, BeaconNodeHttpClient, Error, StatusCode, Timeouts, }; use execution_layer::test_utils::TestingBuilder; @@ -1679,6 +1679,59 @@ impl ApiTester { self } + pub async fn test_get_debug_fork_choice(self) -> Self { + let result = self.client.get_debug_fork_choice().await.unwrap(); + + let beacon_fork_choice = self.chain.canonical_head.fork_choice_read_lock(); + + let expected_proto_array = beacon_fork_choice.proto_array().core_proto_array(); + + assert_eq!( + result.justified_checkpoint, + expected_proto_array.justified_checkpoint + ); + assert_eq!( + result.finalized_checkpoint, + expected_proto_array.finalized_checkpoint + ); + + let expected_fork_choice_nodes: Vec = expected_proto_array + .nodes + .iter() + .map(|node| { + let execution_status = if node.execution_status.is_execution_enabled() { + Some(node.execution_status.to_string()) + } else { + None + }; + ForkChoiceNode { + slot: node.slot, + block_root: node.root, + parent_root: node + .parent + .and_then(|index| expected_proto_array.nodes.get(index)) + .map(|parent| parent.root), + justified_epoch: node.justified_checkpoint.map(|checkpoint| checkpoint.epoch), + finalized_epoch: node.finalized_checkpoint.map(|checkpoint| checkpoint.epoch), + weight: node.weight, + validity: execution_status, + execution_block_hash: node + .execution_status + .block_hash() + .map(|block_hash| block_hash.into_root()), + } + }) + .collect(); + + assert_eq!(result.fork_choice_nodes, expected_fork_choice_nodes); + + // need to drop beacon_fork_choice here, else borrow checker will complain + // that self cannot be moved out since beacon_fork_choice borrowed self.chain + // and might still live after self is moved out + drop(beacon_fork_choice); + self + } + fn validator_count(&self) -> usize { self.chain.head_snapshot().beacon_state.validators().len() } @@ -4148,6 +4201,8 @@ async fn debug_get() { .test_get_debug_beacon_states() .await .test_get_debug_beacon_heads() + .await + .test_get_debug_fork_choice() .await; } diff --git a/common/eth2/src/lib.rs b/common/eth2/src/lib.rs index 4d74299fff..d00d4aa4b7 100644 --- a/common/eth2/src/lib.rs +++ b/common/eth2/src/lib.rs @@ -1334,6 +1334,18 @@ impl BeaconNodeHttpClient { self.get(path).await } + /// `GET v1/debug/fork_choice` + pub async fn get_debug_fork_choice(&self) -> Result { + let mut path = self.eth_path(V1)?; + + path.path_segments_mut() + .map_err(|()| Error::InvalidUrl(self.server.clone()))? + .push("debug") + .push("fork_choice"); + + self.get(path).await + } + /// `GET validator/duties/proposer/{epoch}` pub async fn get_validator_duties_proposer( &self, diff --git a/common/eth2/src/types.rs b/common/eth2/src/types.rs index 175c7db786..0fddaaab20 100644 --- a/common/eth2/src/types.rs +++ b/common/eth2/src/types.rs @@ -1197,6 +1197,26 @@ pub struct LivenessResponseData { pub is_live: bool, } +#[derive(Debug, Serialize, Deserialize)] +pub struct ForkChoice { + pub justified_checkpoint: Checkpoint, + pub finalized_checkpoint: Checkpoint, + pub fork_choice_nodes: Vec, +} + +#[derive(Debug, Serialize, Deserialize, PartialEq, Eq)] +pub struct ForkChoiceNode { + pub slot: Slot, + pub block_root: Hash256, + pub parent_root: Option, + pub justified_epoch: Option, + pub finalized_epoch: Option, + #[serde(with = "eth2_serde_utils::quoted_u64")] + pub weight: u64, + pub validity: Option, + pub execution_block_hash: Option, +} + #[cfg(test)] mod tests { use super::*; diff --git a/consensus/proto_array/src/proto_array_fork_choice.rs b/consensus/proto_array/src/proto_array_fork_choice.rs index eae54e7342..6db1ac132f 100644 --- a/consensus/proto_array/src/proto_array_fork_choice.rs +++ b/consensus/proto_array/src/proto_array_fork_choice.rs @@ -10,7 +10,10 @@ use crate::{ use serde_derive::{Deserialize, Serialize}; use ssz::{Decode, Encode}; use ssz_derive::{Decode, Encode}; -use std::collections::{BTreeSet, HashMap}; +use std::{ + collections::{BTreeSet, HashMap}, + fmt, +}; use types::{ AttestationShufflingId, ChainSpec, Checkpoint, Epoch, EthSpec, ExecutionBlockHash, Hash256, Slot, @@ -125,6 +128,17 @@ impl ExecutionStatus { } } +impl fmt::Display for ExecutionStatus { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + match self { + ExecutionStatus::Valid(_) => write!(f, "valid"), + ExecutionStatus::Invalid(_) => write!(f, "invalid"), + ExecutionStatus::Optimistic(_) => write!(f, "optimistic"), + ExecutionStatus::Irrelevant(_) => write!(f, "irrelevant"), + } + } +} + /// A block that is to be applied to the fork choice. /// /// A simplified version of `types::BeaconBlock`. From 788a4b718f689be4db611e403fb6a8c7426fe8db Mon Sep 17 00:00:00 2001 From: Maksim Shcherbo Date: Wed, 29 Mar 2023 02:56:39 +0000 Subject: [PATCH 06/56] Optimise `update_validators` by decrypting key cache only when necessary (#4126) ## Title Optimise `update_validators` by decrypting key cache only when necessary ## Issue Addressed Resolves [#3968: Slow performance of validator client PATCH API with hundreds of keys](https://github.com/sigp/lighthouse/issues/3968) ## Proposed Changes 1. Add a check to determine if there is at least one local definition before decrypting the key cache. 2. Assign an empty `KeyCache` when all definitions are of the `Web3Signer` type. 3. Perform cache-related operations (e.g., saving the modified key cache) only if there are local definitions. ## Additional Info This PR addresses the excessive CPU usage and slow performance experienced when using the `PATCH lighthouse/validators/{pubkey}` request with a large number of keys. The issue was caused by the key cache using cryptography to decipher and cipher the cache entities every time the request was made. This operation called `scrypt`, which was very slow and required a lot of memory when there were many concurrent requests. These changes have no impact on the overall functionality but can lead to significant performance improvements when working with remote signers. Importantly, the key cache is never used when there are only `Web3Signer` definitions, avoiding the expensive operation of decrypting the key cache in such cases. Co-authored-by: Maksim Shcherbo --- .../src/initialized_validators.rs | 27 ++++++++++++++++--- 1 file changed, 23 insertions(+), 4 deletions(-) diff --git a/validator_client/src/initialized_validators.rs b/validator_client/src/initialized_validators.rs index 7fe2f5f8ec..468fc2b06b 100644 --- a/validator_client/src/initialized_validators.rs +++ b/validator_client/src/initialized_validators.rs @@ -989,7 +989,23 @@ impl InitializedValidators { let cache = KeyCache::open_or_create(&self.validators_dir).map_err(Error::UnableToOpenKeyCache)?; - let mut key_cache = self.decrypt_key_cache(cache, &mut key_stores).await?; + + // Check if there is at least one local definition. + let has_local_definitions = self.definitions.as_slice().iter().any(|def| { + matches!( + def.signing_definition, + SigningDefinition::LocalKeystore { .. } + ) + }); + + // Only decrypt cache when there is at least one local definition. + // Decrypting cache is a very expensive operation which is never used for web3signer. + let mut key_cache = if has_local_definitions { + self.decrypt_key_cache(cache, &mut key_stores).await? + } else { + // Assign an empty KeyCache if all definitions are of the Web3Signer type. + KeyCache::new() + }; let mut disabled_uuids = HashSet::new(); for def in self.definitions.as_slice() { @@ -1115,13 +1131,16 @@ impl InitializedValidators { ); } } - for uuid in disabled_uuids { - key_cache.remove(&uuid); + + if has_local_definitions { + for uuid in disabled_uuids { + key_cache.remove(&uuid); + } } let validators_dir = self.validators_dir.clone(); let log = self.log.clone(); - if key_cache.is_modified() { + if has_local_definitions && key_cache.is_modified() { tokio::task::spawn_blocking(move || { match key_cache.save(validators_dir) { Err(e) => warn!( From 12205a88110e865e9e2aff9369bded1c8f951f9a Mon Sep 17 00:00:00 2001 From: Age Manning Date: Wed, 29 Mar 2023 23:55:55 +0000 Subject: [PATCH 07/56] Correct log for ENR (#4133) ## Issue Addressed https://github.com/sigp/lighthouse/issues/4080 Fixes a log when displaying the initial ENR. --- beacon_node/lighthouse_network/src/discovery/mod.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/beacon_node/lighthouse_network/src/discovery/mod.rs b/beacon_node/lighthouse_network/src/discovery/mod.rs index dda68aff95..2966644a89 100644 --- a/beacon_node/lighthouse_network/src/discovery/mod.rs +++ b/beacon_node/lighthouse_network/src/discovery/mod.rs @@ -207,7 +207,7 @@ impl Discovery { let local_node_id = local_enr.node_id(); info!(log, "ENR Initialised"; "enr" => local_enr.to_base64(), "seq" => local_enr.seq(), "id"=> %local_enr.node_id(), - "ip4" => ?local_enr.ip4(), "udp4"=> ?local_enr.udp4(), "tcp4" => ?local_enr.tcp6() + "ip4" => ?local_enr.ip4(), "udp4"=> ?local_enr.udp4(), "tcp4" => ?local_enr.tcp4(), "tcp6" => ?local_enr.tcp6(), "udp6" => ?local_enr.udp6() ); let listen_socket = match config.listen_addrs() { crate::listen_addr::ListenAddress::V4(v4_addr) => v4_addr.udp_socket_addr(), From 036b797b2c1831352f937356576b3c78c65220ad Mon Sep 17 00:00:00 2001 From: Daniel Ramirez Chiquillo Date: Thu, 30 Mar 2023 06:08:37 +0000 Subject: [PATCH 08/56] Add `finalized` to HTTP API responses (#3753) ## Issue Addressed #3708 ## Proposed Changes - Add `is_finalized_block` method to `BeaconChain` in `beacon_node/beacon_chain/src/beacon_chain.rs`. - Add `is_finalized_state` method to `BeaconChain` in `beacon_node/beacon_chain/src/beacon_chain.rs`. - Add `fork_and_execution_optimistic_and_finalized` in `beacon_node/http_api/src/state_id.rs`. - Add `ExecutionOptimisticFinalizedForkVersionedResponse` type in `consensus/types/src/fork_versioned_response.rs`. - Add `execution_optimistic_finalized_fork_versioned_response`function in `beacon_node/http_api/src/version.rs`. - Add `ExecutionOptimisticFinalizedResponse` type in `common/eth2/src/types.rs`. - Add `add_execution_optimistic_finalized` method in `common/eth2/src/types.rs`. - Update API response methods to include finalized. - Remove `execution_optimistic_fork_versioned_response` Co-authored-by: Michael Sproul --- Cargo.lock | 769 ++++++++++-------- beacon_node/beacon_chain/src/beacon_chain.rs | 40 + beacon_node/http_api/src/attester_duties.rs | 6 +- beacon_node/http_api/src/block_id.rs | 73 +- beacon_node/http_api/src/lib.rs | 297 +++---- beacon_node/http_api/src/proposer_duties.rs | 4 +- .../http_api/src/standard_block_rewards.rs | 6 +- beacon_node/http_api/src/state_id.rs | 75 +- .../http_api/src/sync_committee_rewards.rs | 6 +- .../http_api/src/validator_inclusion.rs | 2 +- beacon_node/http_api/src/version.rs | 13 +- beacon_node/http_api/tests/tests.rs | 320 +++++++- beacon_node/store/src/hot_cold_store.rs | 2 +- common/eth2/src/lib.rs | 44 +- common/eth2/src/types.rs | 20 + .../types/src/fork_versioned_response.rs | 40 + 16 files changed, 1132 insertions(+), 585 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 92502ca137..c7cdf212bc 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -88,6 +88,16 @@ dependencies = [ "rand_core 0.6.4", ] +[[package]] +name = "aead" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c192eb8f11fc081b0fe4259ba5af04217d4e0faddd02417310a927911abd7c8" +dependencies = [ + "crypto-common", + "generic-array", +] + [[package]] name = "aes" version = "0.6.0" @@ -113,17 +123,14 @@ dependencies = [ ] [[package]] -name = "aes-gcm" -version = "0.8.0" +name = "aes" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5278b5fabbb9bd46e24aa69b2fdea62c99088e0a950a9be40e3e0101298f88da" +checksum = "433cfd6710c9986c576a25ca913c39d66a6474107b406f34f91d4a8923395241" dependencies = [ - "aead 0.3.2", - "aes 0.6.0", - "cipher 0.2.5", - "ctr 0.6.0", - "ghash 0.3.1", - "subtle", + "cfg-if", + "cipher 0.4.4", + "cpufeatures", ] [[package]] @@ -140,6 +147,20 @@ dependencies = [ "subtle", ] +[[package]] +name = "aes-gcm" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "82e1366e0c69c9f927b1fa5ce2c7bf9eafc8f9268c0b9800729e8b267612447c" +dependencies = [ + "aead 0.5.1", + "aes 0.8.2", + "cipher 0.4.4", + "ctr 0.9.2", + "ghash 0.5.0", + "subtle", +] + [[package]] name = "aes-soft" version = "0.6.4" @@ -248,14 +269,14 @@ dependencies = [ "num-traits", "rusticata-macros", "thiserror", - "time 0.3.17", + "time 0.3.20", ] [[package]] name = "asn1-rs" -version = "0.5.1" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf6690c370453db30743b373a60ba498fc0d6d83b11f4abfd87a84a075db5dd4" +checksum = "7f6fd5ddaf0351dff5b8da21b2fb4ff8e08ddd02857f0bf69c47639106c0fff0" dependencies = [ "asn1-rs-derive 0.4.0", "asn1-rs-impl", @@ -264,7 +285,7 @@ dependencies = [ "num-traits", "rusticata-macros", "thiserror", - "time 0.3.17", + "time 0.3.20", ] [[package]] @@ -330,29 +351,29 @@ dependencies = [ [[package]] name = "async-lock" -version = "2.6.0" +version = "2.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8101efe8695a6c17e02911402145357e718ac92d3ff88ae8419e84b1707b685" +checksum = "fa24f727524730b077666307f2734b4a1a1c57acb79193127dcc8914d5242dd7" dependencies = [ "event-listener", - "futures-lite", ] [[package]] name = "async-stream" -version = "0.3.3" +version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dad5c83079eae9969be7fadefe640a1c566901f05ff91ab221de4b6f68d9507e" +checksum = "ad445822218ce64be7a341abfb0b1ea43b5c23aa83902542a4542e78309d8e5e" dependencies = [ "async-stream-impl", "futures-core", + "pin-project-lite 0.2.9", ] [[package]] name = "async-stream-impl" -version = "0.3.3" +version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "10f203db73a71dfa2fb6dd22763990fa26f3d2625a6da2da900d23b87d26be27" +checksum = "e4655ae1a7b0cdf149156f780c5bf3f1352bc53cbd9e0a361a7ef7b22947e965" dependencies = [ "proc-macro2", "quote", @@ -361,9 +382,9 @@ dependencies = [ [[package]] name = "async-trait" -version = "0.1.64" +version = "0.1.66" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1cd7fce9ba8c3c042128ce72d8b2ddbf3a05747efb67ea0313c635e10bda47a2" +checksum = "b84f9ebcc6c1f5b8cb160f6990096a5c127f423fcb6e1ccc46c370cbdfb75dfc" dependencies = [ "proc-macro2", "quote", @@ -537,14 +558,14 @@ checksum = "a4a4ddaa51a5bc52a6948f74c06d20aaaddb71924eab79b8c97a8c556e942d6a" [[package]] name = "base64ct" -version = "1.5.3" +version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b645a089122eccb6111b4f81cbc1a49f5900ac4666bb93ac027feaecf15607bf" +checksum = "8c3c1a368f70d6cf7302d78f8f7093da241fb8e8807c05cc9e51a125895a6d5b" [[package]] name = "beacon-api-client" version = "0.1.0" -source = "git+https://github.com/ralexstokes/beacon-api-client#53690a711e33614d59d4d44fb09762b4699e2a4e" +source = "git+https://github.com/ralexstokes/beacon-api-client#30679e9e25d61731cde54e14cd8a3688a39d8e5b" dependencies = [ "ethereum-consensus", "http", @@ -729,9 +750,9 @@ dependencies = [ [[package]] name = "block-buffer" -version = "0.10.3" +version = "0.10.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "69cce20737498f97b993470a6e536b8523f0af7892a4f928cceb1ac5e52ebe7e" +checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" dependencies = [ "generic-array", ] @@ -965,9 +986,9 @@ dependencies = [ [[package]] name = "chrono" -version = "0.4.23" +version = "0.4.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "16b0a3d9ed01224b22057780a37bb8c5dbfe1be8ba48678e7bf57ec4b385411f" +checksum = "4e3c5919066adf22df73762e50cffcde3a758f2a848b113b586d1f86728b673b" dependencies = [ "iana-time-zone", "js-sys", @@ -997,10 +1018,20 @@ dependencies = [ ] [[package]] -name = "clang-sys" -version = "1.4.0" +name = "cipher" +version = "0.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa2e27ae6ab525c3d369ded447057bca5438d86dc3a68f6faafb8269ba82ebf3" +checksum = "773f3b9af64447d2ce9850330c473515014aa235e6a783b02db81ff39e4a3dad" +dependencies = [ + "crypto-common", + "inout", +] + +[[package]] +name = "clang-sys" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77ed9a53e5d4d9c573ae844bfac6872b159cb1d1585a83b29e7a64b7eef7332a" dependencies = [ "glob", "libc", @@ -1073,7 +1104,7 @@ dependencies = [ "state_processing", "store", "task_executor", - "time 0.3.17", + "time 0.3.20", "timer", "tokio", "types", @@ -1134,9 +1165,9 @@ dependencies = [ [[package]] name = "const-oid" -version = "0.9.1" +version = "0.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cec318a675afcb6a1ea1d4340e2d377e56e47c266f28043ceccbf4412ddfdd3b" +checksum = "520fbf3c07483f94e3e3ca9d0cfd913d7718ef2483d2cfd91c0d9e91474ab913" [[package]] name = "convert_case" @@ -1178,12 +1209,6 @@ dependencies = [ "libc", ] -[[package]] -name = "cpuid-bool" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dcb25d077389e53838a8158c8e99174c5a9d902dee4904320db714f3c653ffba" - [[package]] name = "crc" version = "3.0.1" @@ -1246,9 +1271,9 @@ dependencies = [ [[package]] name = "crossbeam-channel" -version = "0.5.6" +version = "0.5.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c2dd04ddaf88237dc3b8d8f9a3c1004b506b54b3313403944054d23c0870c521" +checksum = "cf2b3e8478797446514c91ef04bafcb59faba183e621ad488df88983cc14128c" dependencies = [ "cfg-if", "crossbeam-utils", @@ -1256,9 +1281,9 @@ dependencies = [ [[package]] name = "crossbeam-deque" -version = "0.8.2" +version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "715e8152b692bba2d374b53d4875445368fdf21a94751410af607a5ac677d1fc" +checksum = "ce6fd6f855243022dcecf8702fef0c297d4338e226845fe067f6341ad9fa0cef" dependencies = [ "cfg-if", "crossbeam-epoch", @@ -1267,22 +1292,22 @@ dependencies = [ [[package]] name = "crossbeam-epoch" -version = "0.9.13" +version = "0.9.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "01a9af1f4c2ef74bb8aa1f7e19706bc72d03598c8a570bb5de72243c7a9d9d5a" +checksum = "46bd5f3f85273295a9d14aedfb86f6aadbff6d8f5295c4a9edb08e819dcf5695" dependencies = [ "autocfg 1.1.0", "cfg-if", "crossbeam-utils", - "memoffset 0.7.1", + "memoffset 0.8.0", "scopeguard", ] [[package]] name = "crossbeam-utils" -version = "0.8.14" +version = "0.8.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4fb766fa798726286dbbb842f174001dab8abc7b627a1dd86e0b7222a95d929f" +checksum = "3c063cd8cc95f5c377ed0d4b49a4b21f632396ff690e8470c29b3359b346984b" dependencies = [ "cfg-if", ] @@ -1312,6 +1337,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" dependencies = [ "generic-array", + "rand_core 0.6.4", "typenum", ] @@ -1325,16 +1351,6 @@ dependencies = [ "subtle", ] -[[package]] -name = "crypto-mac" -version = "0.10.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bff07008ec701e8028e2ceb8f83f0e4274ee62bd2dbdc4fefff2e9a91824081a" -dependencies = [ - "generic-array", - "subtle", -] - [[package]] name = "crypto-mac" version = "0.11.1" @@ -1347,9 +1363,9 @@ dependencies = [ [[package]] name = "csv" -version = "1.2.0" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af91f40b7355f82b0a891f50e70399475945bb0b0da4f1700ce60761c9d3e359" +checksum = "0b015497079b9a9d69c02ad25de6c0a6edef051ea6360a327d0bd05802ef64ad" dependencies = [ "csv-core", "itoa", @@ -1366,15 +1382,6 @@ dependencies = [ "memchr", ] -[[package]] -name = "ctr" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fb4a30d54f7443bf3d6191dcd486aca19e67cb3c49fa7a06a319966346707e7f" -dependencies = [ - "cipher 0.2.5", -] - [[package]] name = "ctr" version = "0.8.0" @@ -1384,6 +1391,15 @@ dependencies = [ "cipher 0.3.0", ] +[[package]] +name = "ctr" +version = "0.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0369ee1ad671834580515889b80f2ea915f23b8be8d0daa4bbaf2ac5c7590835" +dependencies = [ + "cipher 0.4.4", +] + [[package]] name = "ctrlc" version = "3.2.5" @@ -1409,9 +1425,9 @@ dependencies = [ [[package]] name = "curve25519-dalek" -version = "4.0.0-rc.0" +version = "4.0.0-rc.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8da00a7a9a4eb92a0a0f8e75660926d48f0d0f3c537e455c457bcdaa1e16b1ac" +checksum = "8d4ba9852b42210c7538b75484f9daa0655e9a3ac04f693747bb0f02cf3cfe16" dependencies = [ "cfg-if", "fiat-crypto", @@ -1423,9 +1439,9 @@ dependencies = [ [[package]] name = "cxx" -version = "1.0.90" +version = "1.0.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90d59d9acd2a682b4e40605a242f6670eaa58c5957471cbf85e8aa6a0b97a5e8" +checksum = "9a140f260e6f3f79013b8bfc65e7ce630c9ab4388c6a89c71e07226f49487b72" dependencies = [ "cc", "cxxbridge-flags", @@ -1435,9 +1451,9 @@ dependencies = [ [[package]] name = "cxx-build" -version = "1.0.90" +version = "1.0.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ebfa40bda659dd5c864e65f4c9a2b0aff19bea56b017b9b77c73d3766a453a38" +checksum = "da6383f459341ea689374bf0a42979739dc421874f112ff26f829b8040b8e613" dependencies = [ "cc", "codespan-reporting", @@ -1450,15 +1466,15 @@ dependencies = [ [[package]] name = "cxxbridge-flags" -version = "1.0.90" +version = "1.0.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "457ce6757c5c70dc6ecdbda6925b958aae7f959bda7d8fb9bde889e34a09dc03" +checksum = "90201c1a650e95ccff1c8c0bb5a343213bdd317c6e600a93075bca2eff54ec97" [[package]] name = "cxxbridge-macro" -version = "1.0.90" +version = "1.0.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ebf883b7aacd7b2aeb2a7b338648ee19f57c140d4ee8e52c68979c6b2f7f2263" +checksum = "0b75aed41bb2e6367cae39e6326ef817a851db13c13e4f3263714ca3cfb8de56" dependencies = [ "proc-macro2", "quote", @@ -1477,12 +1493,12 @@ dependencies = [ [[package]] name = "darling" -version = "0.14.3" +version = "0.14.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0808e1bd8671fb44a113a14e13497557533369847788fa2ae912b6ebfce9fa8" +checksum = "7b750cb3417fd1b327431a470f388520309479ab0bf5e323505daf0290cd3850" dependencies = [ - "darling_core 0.14.3", - "darling_macro 0.14.3", + "darling_core 0.14.4", + "darling_macro 0.14.4", ] [[package]] @@ -1501,9 +1517,9 @@ dependencies = [ [[package]] name = "darling_core" -version = "0.14.3" +version = "0.14.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "001d80444f28e193f30c2f293455da62dcf9a6b29918a4253152ae2b1de592cb" +checksum = "109c1ca6e6b7f82cc233a97004ea8ed7ca123a9af07a8230878fcfda9b158bf0" dependencies = [ "fnv", "ident_case", @@ -1526,11 +1542,11 @@ dependencies = [ [[package]] name = "darling_macro" -version = "0.14.3" +version = "0.14.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b36230598a2d5de7ec1c6f51f72d8a99a9208daff41de2084d06e3fd3ea56685" +checksum = "a4aab4dbc9f7611d8b55048a3a16d2d010c2c8334e46304b40ac1cc14bf3b48e" dependencies = [ - "darling_core 0.14.3", + "darling_core 0.14.4", "quote", "syn", ] @@ -1656,11 +1672,11 @@ dependencies = [ [[package]] name = "der-parser" -version = "8.1.0" +version = "8.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42d4bc9b0db0a0df9ae64634ac5bdefb7afcb534e182275ca0beadbe486701c1" +checksum = "dbd676fbbab537128ef0278adb5576cf363cff6aa22a7b24effe97347cfab61e" dependencies = [ - "asn1-rs 0.5.1", + "asn1-rs 0.5.2", "displaydoc", "nom 7.1.3", "num-bigint", @@ -1704,7 +1720,7 @@ version = "0.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1f91d4cfa921f1c05904dc3c57b4a32c38aed3340cce209f3a6fd1478babafc4" dependencies = [ - "darling 0.14.3", + "darling 0.14.4", "proc-macro2", "quote", "syn", @@ -1748,7 +1764,7 @@ version = "0.10.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8168378f4e5023e7218c89c891c0fd8ecdb5e5e4f18cb78f38cf245dd021e76f" dependencies = [ - "block-buffer 0.10.3", + "block-buffer 0.10.4", "crypto-common", "subtle", ] @@ -1850,9 +1866,9 @@ dependencies = [ [[package]] name = "dtoa" -version = "1.0.5" +version = "1.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c00704156a7de8df8da0911424e30c2049957b0a714542a44e05fe693dd85313" +checksum = "65d09067bfacaa79114679b279d7f5885b53295b1e2cfb4e79c8e4bd3d633169" [[package]] name = "ecdsa" @@ -2384,7 +2400,7 @@ dependencies = [ "hex", "integer-sqrt", "multiaddr 0.14.0", - "multihash", + "multihash 0.16.3", "rand 0.8.5", "serde", "serde_json", @@ -2616,18 +2632,18 @@ checksum = "ec54ac60a7f2ee9a97cad9946f9bf629a3bc6a7ae59e68983dc9318f5a54b81a" [[package]] name = "fiat-crypto" -version = "0.1.17" +version = "0.1.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a214f5bb88731d436478f3ae1f8a277b62124089ba9fb67f4f93fb100ef73c90" +checksum = "93ace6ec7cc19c8ed33a32eaa9ea692d7faea05006b5356b9e2b668ec4bc3955" [[package]] name = "field-offset" -version = "0.3.4" +version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e1c54951450cbd39f3dbcf1005ac413b49487dabf18a720ad2383eccfeffb92" +checksum = "a3cf3a800ff6e860c863ca6d4b16fd999db8b752819c1606884047b73e468535" dependencies = [ - "memoffset 0.6.5", - "rustc_version 0.3.3", + "memoffset 0.8.0", + "rustc_version 0.4.0", ] [[package]] @@ -2749,9 +2765,9 @@ checksum = "e6d5a32815ae3f33302d95fdcb2ce17862f8c65363dcfd29360480ba1001fc9c" [[package]] name = "futures" -version = "0.3.26" +version = "0.3.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13e2792b0ff0340399d58445b88fd9770e3489eff258a4cbc1523418f12abf84" +checksum = "531ac96c6ff5fd7c62263c5e3c67a603af4fcaee2e1a0ae5565ba3a11e69e549" dependencies = [ "futures-channel", "futures-core", @@ -2764,9 +2780,9 @@ dependencies = [ [[package]] name = "futures-channel" -version = "0.3.26" +version = "0.3.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2e5317663a9089767a1ec00a487df42e0ca174b61b4483213ac24448e4664df5" +checksum = "164713a5a0dcc3e7b4b1ed7d3b433cabc18025386f9339346e8daf15963cf7ac" dependencies = [ "futures-core", "futures-sink", @@ -2774,15 +2790,15 @@ dependencies = [ [[package]] name = "futures-core" -version = "0.3.26" +version = "0.3.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec90ff4d0fe1f57d600049061dc6bb68ed03c7d2fbd697274c41805dcb3f8608" +checksum = "86d7a0c1aa76363dac491de0ee99faf6941128376f1cf96f07db7603b7de69dd" [[package]] name = "futures-executor" -version = "0.3.26" +version = "0.3.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8de0a35a6ab97ec8869e32a2473f4b1324459e14c29275d14b10cb1fd19b50e" +checksum = "1997dd9df74cdac935c76252744c1ed5794fac083242ea4fe77ef3ed60ba0f83" dependencies = [ "futures-core", "futures-task", @@ -2792,9 +2808,9 @@ dependencies = [ [[package]] name = "futures-io" -version = "0.3.26" +version = "0.3.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bfb8371b6fb2aeb2d280374607aeabfc99d95c72edfe51692e42d3d7f0d08531" +checksum = "89d422fa3cbe3b40dca574ab087abb5bc98258ea57eea3fd6f1fa7162c778b91" [[package]] name = "futures-lite" @@ -2813,9 +2829,9 @@ dependencies = [ [[package]] name = "futures-macro" -version = "0.3.26" +version = "0.3.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95a73af87da33b5acf53acfebdc339fe592ecf5357ac7c0a7734ab9d8c876a70" +checksum = "3eb14ed937631bd8b8b8977f2c198443447a8355b6e3ca599f38c975e5a963b6" dependencies = [ "proc-macro2", "quote", @@ -2835,15 +2851,15 @@ dependencies = [ [[package]] name = "futures-sink" -version = "0.3.26" +version = "0.3.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f310820bb3e8cfd46c80db4d7fb8353e15dfff853a127158425f31e0be6c8364" +checksum = "ec93083a4aecafb2a80a885c9de1f0ccae9dbd32c2bb54b0c3a65690e0b8d2f2" [[package]] name = "futures-task" -version = "0.3.26" +version = "0.3.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dcf79a1bf610b10f42aea489289c5a2c478a786509693b80cd39c44ccd936366" +checksum = "fd65540d33b37b16542a0438c12e6aeead10d4ac5d05bd3f805b8f35ab592879" [[package]] name = "futures-timer" @@ -2853,9 +2869,9 @@ checksum = "e64b03909df88034c26dc1547e8970b91f98bdb65165d6a4e9110d94263dbb2c" [[package]] name = "futures-util" -version = "0.3.26" +version = "0.3.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c1d6de3acfef38d2be4b1f543f553131788603495be83da675e180c8d6b7bd1" +checksum = "3ef6b17e481503ec85211fed8f39d1970f128935ca1f814cd32ac4a6842e84ab" dependencies = [ "futures-channel", "futures-core", @@ -2935,16 +2951,6 @@ dependencies = [ "wasm-bindgen", ] -[[package]] -name = "ghash" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97304e4cd182c3846f7575ced3890c53012ce534ad9114046b0a9e00bb30a375" -dependencies = [ - "opaque-debug", - "polyval 0.4.5", -] - [[package]] name = "ghash" version = "0.4.4" @@ -2956,10 +2962,20 @@ dependencies = [ ] [[package]] -name = "gimli" -version = "0.27.1" +name = "ghash" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "221996f774192f0f718773def8201c4ae31f02616a54ccfc2d358bb0e5cefdec" +checksum = "d930750de5717d2dd0b8c0d42c076c0e884c81a73e6cab859bbd2339c71e3e40" +dependencies = [ + "opaque-debug", + "polyval 0.6.0", +] + +[[package]] +name = "gimli" +version = "0.27.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ad0a93d233ebf96623465aad4046a8d3aa4da22d4f4beba5388838c8a434bbb4" [[package]] name = "git-version" @@ -3002,9 +3018,9 @@ dependencies = [ [[package]] name = "h2" -version = "0.3.15" +version = "0.3.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f9f29bc9dda355256b2916cf526ab02ce0aeaaaf2bad60d65ef3f12f11dd0f4" +checksum = "5be7b54589b581f624f566bf5d8eb2bab1db736c51528720b6bd36b96b55924d" dependencies = [ "bytes", "fnv", @@ -3165,16 +3181,6 @@ dependencies = [ "digest 0.9.0", ] -[[package]] -name = "hmac" -version = "0.10.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c1441c6b1e930e2817404b5046f1f989899143a12bf92de603b69f4e0aee1e15" -dependencies = [ - "crypto-mac 0.10.1", - "digest 0.9.0", -] - [[package]] name = "hmac" version = "0.11.0" @@ -3218,9 +3224,9 @@ dependencies = [ [[package]] name = "http" -version = "0.2.8" +version = "0.2.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75f43d41e26995c17e71ee126451dd3941010b0514a81a9d11f3b341debc2399" +checksum = "bd6effc99afb63425aff9b05836f029929e345a6148a14b7ecd5ab67af944482" dependencies = [ "bytes", "fnv", @@ -3331,9 +3337,9 @@ checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4" [[package]] name = "hyper" -version = "0.14.24" +version = "0.14.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e011372fa0b68db8350aa7a248930ecc7839bf46d8485577d69f117a75f164c" +checksum = "cc5e554ff619822309ffd57d8734d77cd5ce6238bc956f037ea06c58238c9899" dependencies = [ "bytes", "futures-channel", @@ -3559,6 +3565,15 @@ dependencies = [ "hashbrown 0.12.3", ] +[[package]] +name = "inout" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a0c10553d664a4d0bcff9f4215d0aac67a639cc68ef660840afe309b807bc9f5" +dependencies = [ + "generic-array", +] + [[package]] name = "instant" version = "0.1.12" @@ -3610,9 +3625,9 @@ dependencies = [ [[package]] name = "io-lifetimes" -version = "1.0.5" +version = "1.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1abeb7a0dd0f8181267ff8adc397075586500b81b28a73e8a0208b00fc170fb3" +checksum = "cfa919a82ea574332e2de6e74b4c36e74d41982b335080fa59d4ef31be20fdf3" dependencies = [ "libc", "windows-sys 0.45.0", @@ -3647,9 +3662,9 @@ dependencies = [ [[package]] name = "itoa" -version = "1.0.5" +version = "1.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fad582f4b9e86b6caa621cabeb0963332d92eea04729ab12892c2533951e6440" +checksum = "453ad9f582a441959e5f0d088b02ce04cfe8d51a8eaf077f12ac6d3e94164ca6" [[package]] name = "jemalloc-ctl" @@ -3829,15 +3844,15 @@ dependencies = [ [[package]] name = "libc" -version = "0.2.139" +version = "0.2.140" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "201de327520df007757c1f0adce6e827fe8562fbc28bfd9c15571c66ca1f5f79" +checksum = "99227334921fae1a979cf0bfdfcc6b3e5ce376ef57e16fb6fb3ea2ed6095f80c" [[package]] name = "libflate" -version = "1.2.0" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05605ab2bce11bcfc0e9c635ff29ef8b2ea83f29be257ee7d730cac3ee373093" +checksum = "97822bf791bd4d5b403713886a5fbe8bf49520fe78e323b0dc480ca1a03e50b0" dependencies = [ "adler32", "crc32fast", @@ -3846,9 +3861,9 @@ dependencies = [ [[package]] name = "libflate_lz77" -version = "1.1.0" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "39a734c0493409afcd49deee13c006a04e3586b9761a03543c6272c9c51f2f5a" +checksum = "a52d3a8bfc85f250440e4424db7d857e241a3aebbbe301f3eb606ab15c39acbf" dependencies = [ "rle-decode-fast", ] @@ -3892,9 +3907,9 @@ dependencies = [ [[package]] name = "libp2p" -version = "0.50.0" +version = "0.50.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2e0a0d2f693675f49ded13c5d510c48b78069e23cbd9108d7ccd59f6dc568819" +checksum = "9c7b0104790be871edcf97db9bd2356604984e623a08d825c3f27852290266b8" dependencies = [ "bytes", "futures", @@ -3940,7 +3955,7 @@ dependencies = [ "libsecp256k1", "log", "multiaddr 0.14.0", - "multihash", + "multihash 0.16.3", "multistream-select 0.11.0", "p256", "parking_lot 0.12.1", @@ -3974,7 +3989,7 @@ dependencies = [ "libsecp256k1", "log", "multiaddr 0.16.0", - "multihash", + "multihash 0.16.3", "multistream-select 0.12.1", "once_cell", "p256", @@ -3993,6 +4008,34 @@ dependencies = [ "zeroize", ] +[[package]] +name = "libp2p-core" +version = "0.39.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b7f8b7d65c070a5a1b5f8f0510648189da08f787b8963f8e21219e0710733af" +dependencies = [ + "either", + "fnv", + "futures", + "futures-timer", + "instant", + "libp2p-identity", + "log", + "multiaddr 0.17.0", + "multihash 0.17.0", + "multistream-select 0.12.1", + "once_cell", + "parking_lot 0.12.1", + "pin-project", + "quick-protobuf", + "rand 0.8.5", + "rw-stream-sink", + "smallvec", + "thiserror", + "unsigned-varint 0.7.1", + "void", +] + [[package]] name = "libp2p-dns" version = "0.38.0" @@ -4058,6 +4101,25 @@ dependencies = [ "void", ] +[[package]] +name = "libp2p-identity" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff6c9cb71e2333d31f18e7556b9a5f1d0a2e013effc9325e36f436be65fe7bd2" +dependencies = [ + "bs58", + "ed25519-dalek", + "log", + "multiaddr 0.17.0", + "multihash 0.17.0", + "prost", + "prost-build", + "quick-protobuf", + "rand 0.8.5", + "thiserror", + "zeroize", +] + [[package]] name = "libp2p-mdns" version = "0.42.0" @@ -4221,13 +4283,14 @@ dependencies = [ [[package]] name = "libp2p-tls" -version = "0.1.0-alpha" +version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f7905ce0d040576634e8a3229a7587cc8beab83f79db6023800f1792895defa8" +checksum = "ff08d13d0dc66e5e9ba6279c1de417b84fa0d0adc3b03e5732928c180ec02781" dependencies = [ "futures", "futures-rustls", - "libp2p-core 0.38.0", + "libp2p-core 0.39.1", + "libp2p-identity", "rcgen 0.10.0", "ring", "rustls 0.20.8", @@ -4253,7 +4316,7 @@ dependencies = [ "libp2p-core 0.38.0", "libp2p-noise", "log", - "multihash", + "multihash 0.16.3", "prost", "prost-build", "prost-codec", @@ -4685,9 +4748,9 @@ dependencies = [ [[package]] name = "memoffset" -version = "0.7.1" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5de893c32cde5f383baa4c04c5d6dbdd735cfd4a794b0debdb2bb1b421da5ff4" +checksum = "d61c719bcfbcf5d62b3a09efa6088de8c54bc0bfcd3ea7ae39fcc186108b8de1" dependencies = [ "autocfg 1.1.0", ] @@ -4835,7 +4898,7 @@ dependencies = [ "bs58", "byteorder", "data-encoding", - "multihash", + "multihash 0.16.3", "percent-encoding", "serde", "static_assertions", @@ -4853,7 +4916,25 @@ dependencies = [ "byteorder", "data-encoding", "multibase", - "multihash", + "multihash 0.16.3", + "percent-encoding", + "serde", + "static_assertions", + "unsigned-varint 0.7.1", + "url", +] + +[[package]] +name = "multiaddr" +version = "0.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b53e0cc5907a5c216ba6584bf74be8ab47d6d6289f72793b2dddbf15dc3bf8c" +dependencies = [ + "arrayref", + "byteorder", + "data-encoding", + "multibase", + "multihash 0.17.0", "percent-encoding", "serde", "static_assertions", @@ -4885,6 +4966,19 @@ dependencies = [ "unsigned-varint 0.7.1", ] +[[package]] +name = "multihash" +version = "0.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "835d6ff01d610179fbce3de1694d007e500bf33a7f29689838941d6bf783ae40" +dependencies = [ + "core2", + "digest 0.10.6", + "multihash-derive", + "sha2 0.10.6", + "unsigned-varint 0.7.1", +] + [[package]] name = "multihash-derive" version = "0.8.1" @@ -5024,9 +5118,9 @@ dependencies = [ [[package]] name = "netlink-sys" -version = "0.8.4" +version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "260e21fbb6f3d253a14df90eb0000a6066780a15dd901a7519ce02d77a94985b" +checksum = "6471bf08e7ac0135876a9581bf3217ef0333c191c128d34878079f42ee150411" dependencies = [ "bytes", "futures", @@ -5277,7 +5371,7 @@ version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9bedf36ffb6ba96c2eb7144ef6270557b52e54b20c0a8e1eb2ff99a6c6959bff" dependencies = [ - "asn1-rs 0.5.1", + "asn1-rs 0.5.2", ] [[package]] @@ -5555,9 +5649,9 @@ dependencies = [ [[package]] name = "paste" -version = "1.0.11" +version = "1.0.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d01a5bd0424d00070b0098dd17ebca6f961a959dead1dbcbbbc1d1cd8d3deeba" +checksum = "9f746c4065a8fa3fe23974dd82f15431cc8d40779821001404d10d2e79ca7d79" [[package]] name = "pbkdf2" @@ -5607,16 +5701,6 @@ version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "478c572c3d73181ff3c2539045f6eb99e5491218eae919370993b890cdbdd98e" -[[package]] -name = "pest" -version = "2.5.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "028accff104c4e513bad663bbcd2ad7cfd5304144404c31ed0a77ac103d00660" -dependencies = [ - "thiserror", - "ucd-trie", -] - [[package]] name = "petgraph" version = "0.6.3" @@ -5733,16 +5817,18 @@ dependencies = [ [[package]] name = "polling" -version = "2.5.2" +version = "2.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22122d5ec4f9fe1b3916419b76be1e80bcb93f618d071d2edf841b137b2a2bd6" +checksum = "7e1f879b2998099c2d69ab9605d145d5b661195627eccc680002c4918a7fb6fa" dependencies = [ "autocfg 1.1.0", + "bitflags", "cfg-if", + "concurrent-queue", "libc", "log", - "wepoll-ffi", - "windows-sys 0.42.0", + "pin-project-lite 0.2.9", + "windows-sys 0.45.0", ] [[package]] @@ -5753,18 +5839,7 @@ checksum = "048aeb476be11a4b6ca432ca569e375810de9294ae78f4774e78ea98a9246ede" dependencies = [ "cpufeatures", "opaque-debug", - "universal-hash", -] - -[[package]] -name = "polyval" -version = "0.4.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eebcc4aa140b9abd2bc40d9c3f7ccec842679cd79045ac3a7ac698c1a064b7cd" -dependencies = [ - "cpuid-bool", - "opaque-debug", - "universal-hash", + "universal-hash 0.4.1", ] [[package]] @@ -5776,7 +5851,19 @@ dependencies = [ "cfg-if", "cpufeatures", "opaque-debug", - "universal-hash", + "universal-hash 0.4.1", +] + +[[package]] +name = "polyval" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ef234e08c11dfcb2e56f79fd70f6f2eb7f025c0ce2333e82f4f0518ecad30c6" +dependencies = [ + "cfg-if", + "cpufeatures", + "opaque-debug", + "universal-hash 0.5.0", ] [[package]] @@ -5787,9 +5874,9 @@ checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" [[package]] name = "prettyplease" -version = "0.1.23" +version = "0.1.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e97e3215779627f01ee256d2fad52f3d95e8e1c11e9fc6fd08f7cd455d5d5c78" +checksum = "4ebcd279d20a4a0a2404a33056388e950504d891c855c7975b9a8fef75f3bf04" dependencies = [ "proc-macro2", "syn", @@ -5864,9 +5951,9 @@ checksum = "dc375e1527247fe1a97d8b7156678dfe7c1af2fc075c9a4db3690ecd2a148068" [[package]] name = "proc-macro2" -version = "1.0.51" +version = "1.0.52" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d727cae5b39d21da60fa540906919ad737832fe0b1c165da3a34d6548c849d6" +checksum = "1d0e1ae9e836cc3beddd63db0df682593d7e2d3d891ae8c9083d2113e1744224" dependencies = [ "unicode-ident", ] @@ -5923,9 +6010,9 @@ dependencies = [ [[package]] name = "prost" -version = "0.11.6" +version = "0.11.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21dc42e00223fc37204bd4aa177e69420c604ca4a183209a8f9de30c6d934698" +checksum = "e48e50df39172a3e7eb17e14642445da64996989bc212b583015435d39a58537" dependencies = [ "bytes", "prost-derive", @@ -5933,9 +6020,9 @@ dependencies = [ [[package]] name = "prost-build" -version = "0.11.6" +version = "0.11.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a3f8ad728fb08fe212df3c05169e940fbb6d9d16a877ddde14644a983ba2012e" +checksum = "2c828f93f5ca4826f97fedcbd3f9a536c16b12cff3dbbb4a007f932bbad95b12" dependencies = [ "bytes", "heck", @@ -5968,9 +6055,9 @@ dependencies = [ [[package]] name = "prost-derive" -version = "0.11.6" +version = "0.11.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8bda8c0881ea9f722eb9629376db3d0b903b462477c1aafcb0566610ac28ac5d" +checksum = "4ea9b0f8cbe5e15a8a042d030bd96668db28ecb567ec37d691971ff5731d2b1b" dependencies = [ "anyhow", "itertools", @@ -5981,11 +6068,10 @@ dependencies = [ [[package]] name = "prost-types" -version = "0.11.6" +version = "0.11.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a5e0526209433e96d83d750dd81a99118edbc55739e7e61a46764fd2ad537788" +checksum = "379119666929a1afd7a043aa6cf96fa67a6dce9af60c88095a4686dbce4c9c88" dependencies = [ - "bytes", "prost", ] @@ -6033,6 +6119,15 @@ version = "1.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0" +[[package]] +name = "quick-protobuf" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d6da84cc204722a989e01ba2f6e1e276e190f22263d0cb6ce8526fcdb0d2e1f" +dependencies = [ + "byteorder", +] + [[package]] name = "quickcheck" version = "0.9.2" @@ -6087,9 +6182,9 @@ dependencies = [ [[package]] name = "quote" -version = "1.0.23" +version = "1.0.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8856d8364d252a14d474036ea1358d63c9e6965c8e5c1885c18f73d70bff9c7b" +checksum = "4424af4bf778aae2051a77b60283332f386554255d722233d09fbfc7e30da2fc" dependencies = [ "proc-macro2", ] @@ -6209,9 +6304,9 @@ dependencies = [ [[package]] name = "rayon" -version = "1.6.1" +version = "1.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6db3a213adf02b3bcfd2d3846bb41cb22857d131789e01df434fb7e7bc0759b7" +checksum = "1d2df5196e37bcc87abebc0053e20787d73847bb33134a69841207dd0a47f03b" dependencies = [ "either", "rayon-core", @@ -6219,9 +6314,9 @@ dependencies = [ [[package]] name = "rayon-core" -version = "1.10.2" +version = "1.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "356a0625f1954f730c0201cdab48611198dc6ce21f4acff55089b5a78e6e835b" +checksum = "4b8f95bd6966f5c87776639160a66bd8ab9895d9d4ab01ddba9fc60661aebe8d" dependencies = [ "crossbeam-channel", "crossbeam-deque", @@ -6237,7 +6332,7 @@ checksum = "6413f3de1edee53342e6138e75b56d32e7bc6e332b3bd62d497b1929d4cfbcdd" dependencies = [ "pem", "ring", - "time 0.3.17", + "time 0.3.20", "x509-parser 0.13.2", "yasna", ] @@ -6250,7 +6345,7 @@ checksum = "ffbe84efe2f38dea12e9bfc1f65377fdf03e53a18cb3b995faedf7934c7e785b" dependencies = [ "pem", "ring", - "time 0.3.17", + "time 0.3.20", "yasna", ] @@ -6498,22 +6593,13 @@ dependencies = [ "semver 0.9.0", ] -[[package]] -name = "rustc_version" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0dfe2087c51c460008730de8b57e6a320782fbfb312e1f4d520e6c6fae155ee" -dependencies = [ - "semver 0.11.0", -] - [[package]] name = "rustc_version" version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366" dependencies = [ - "semver 1.0.16", + "semver 1.0.17", ] [[package]] @@ -6575,9 +6661,9 @@ dependencies = [ [[package]] name = "rustversion" -version = "1.0.11" +version = "1.0.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5583e89e108996506031660fe09baa5011b9dd0341b89029313006d1fb508d70" +checksum = "4f3208ce4d8448b3f3e7d168a73f5e0c43a61e32930de3bceeccedb388b6bf06" [[package]] name = "rw-stream-sink" @@ -6592,9 +6678,9 @@ dependencies = [ [[package]] name = "ryu" -version = "1.0.12" +version = "1.0.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b4b9743ed687d4b4bcedf9ff5eaa7398495ae14e61cba0a295704edbc7decde" +checksum = "f91339c0467de62360649f8d3e185ca8de4224ff281f66000de5eb2a77a79041" [[package]] name = "safe_arith" @@ -6659,9 +6745,9 @@ dependencies = [ [[package]] name = "scheduled-thread-pool" -version = "0.2.6" +version = "0.2.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "977a7519bff143a44f842fd07e80ad1329295bd71686457f18e496736f4bf9bf" +checksum = "3cbc66816425a074528352f5789333ecff06ca41b36b0b0efdfbb29edc391a19" dependencies = [ "parking_lot 0.12.1", ] @@ -6680,9 +6766,9 @@ checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd" [[package]] name = "scratch" -version = "1.0.3" +version = "1.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ddccb15bcce173023b3fedd9436f882a0739b8dfb45e4f6b6002bee5929f61b2" +checksum = "1792db035ce95be60c3f8853017b3999209281c24e2ba5bc8e59bf97a0c590c1" [[package]] name = "scrypt" @@ -6789,23 +6875,14 @@ version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1d7eb9ef2c18661902cc47e535f9bc51b78acd254da71d375c2f6720d9a40403" dependencies = [ - "semver-parser 0.7.0", + "semver-parser", ] [[package]] name = "semver" -version = "0.11.0" +version = "1.0.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f301af10236f6df4160f7c3f04eec6dbc70ace82d23326abad5edee88801c6b6" -dependencies = [ - "semver-parser 0.10.2", -] - -[[package]] -name = "semver" -version = "1.0.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "58bc9567378fc7690d6b2addae4e60ac2eeea07becb2c64b9f218b53865cba2a" +checksum = "bebd363326d05ec3e2f532ab7660680f3b02130d780c299bca73469d521bc0ed" [[package]] name = "semver-parser" @@ -6813,15 +6890,6 @@ version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" -[[package]] -name = "semver-parser" -version = "0.10.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "00b0bef5b7f9e0df16536d3961cfb6e84331c065b4066afb39768d0e319411f7" -dependencies = [ - "pest", -] - [[package]] name = "send_wrapper" version = "0.6.0" @@ -6838,9 +6906,9 @@ dependencies = [ [[package]] name = "serde" -version = "1.0.152" +version = "1.0.155" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb7d1f0d3021d347a83e556fc4683dea2ea09d87bccdf88ff5c12545d89d5efb" +checksum = "71f2b4817415c6d4210bfe1c7bfcf4801b2d904cb4d0e1a8fdb651013c9e86b8" dependencies = [ "serde_derive", ] @@ -6867,9 +6935,9 @@ dependencies = [ [[package]] name = "serde_derive" -version = "1.0.152" +version = "1.0.155" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af487d118eecd09402d70a5d72551860e788df87b464af30e5ea6a38c75c541e" +checksum = "d071a94a3fac4aff69d023a7f411e33f40f3483f8c5190b1953822b6b76d7630" dependencies = [ "proc-macro2", "quote", @@ -6878,9 +6946,9 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.93" +version = "1.0.94" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cad406b69c91885b5107daf2c29572f6c8cdb3c66826821e286c533490c0bc76" +checksum = "1c533a59c9d8a93a09c6ab31f0fd5e5f4dd1b8fc9434804029839884765d04ea" dependencies = [ "itoa", "ryu", @@ -6889,9 +6957,9 @@ dependencies = [ [[package]] name = "serde_repr" -version = "0.1.10" +version = "0.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a5ec9fa74a20ebbe5d9ac23dac1fc96ba0ecfe9f50f2843b52e537b10fbcb4e" +checksum = "395627de918015623b32e7669714206363a7fc00382bf477e72c1f7533e8eafc" dependencies = [ "proc-macro2", "quote", @@ -7068,7 +7136,7 @@ dependencies = [ "num-bigint", "num-traits", "thiserror", - "time 0.3.17", + "time 0.3.20", ] [[package]] @@ -7091,9 +7159,9 @@ dependencies = [ [[package]] name = "slab" -version = "0.4.7" +version = "0.4.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4614a76b2a8be0058caa9dbbaf66d988527d86d003c11a94fbd335d7661edcef" +checksum = "6528351c9bc8ab22353f9d776db39a20288e8d6c37ef8cfe3317cf875eecfc2d" dependencies = [ "autocfg 1.1.0", ] @@ -7194,7 +7262,7 @@ dependencies = [ "serde", "serde_json", "slog", - "time 0.3.17", + "time 0.3.20", ] [[package]] @@ -7239,7 +7307,7 @@ dependencies = [ "slog", "term", "thread_local", - "time 0.3.17", + "time 0.3.20", ] [[package]] @@ -7290,14 +7358,14 @@ checksum = "5e9f0ab6ef7eb7353d9119c170a436d1bf248eea575ac42d19d12f4e34130831" [[package]] name = "snow" -version = "0.9.1" +version = "0.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "12ba5f4d4ff12bdb6a169ed51b7c48c0e0ac4b0b4b31012b2571e97d78d3201d" +checksum = "5ccba027ba85743e09d15c03296797cad56395089b832b48b5a5217880f57733" dependencies = [ "aes-gcm 0.9.4", "blake2", "chacha20poly1305", - "curve25519-dalek 4.0.0-rc.0", + "curve25519-dalek 4.0.0-rc.1", "rand_core 0.6.4", "ring", "rustc_version 0.4.0", @@ -7307,9 +7375,9 @@ dependencies = [ [[package]] name = "socket2" -version = "0.4.7" +version = "0.4.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02e2d2db9033d13a1567121ddd7a095ee144db4e1ca1b1bda3419bc0da294ebd" +checksum = "64a4a911eed85daf18834cfaa86a79b7d266ff93ff5ba14005426219480ed662" dependencies = [ "libc", "winapi", @@ -7548,9 +7616,9 @@ dependencies = [ [[package]] name = "syn" -version = "1.0.107" +version = "1.0.109" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f4064b5b16e03ae50984a5a8ed5d4f8803e6bc1fd170a3cda91a1be4b18e3f5" +checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" dependencies = [ "proc-macro2", "quote", @@ -7722,18 +7790,18 @@ dependencies = [ [[package]] name = "thiserror" -version = "1.0.38" +version = "1.0.39" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a9cd18aa97d5c45c6603caea1da6628790b37f7a34b6ca89522331c5180fed0" +checksum = "a5ab016db510546d856297882807df8da66a16fb8c4101cb8b30054b0d5b2d9c" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.38" +version = "1.0.39" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1fb327af4685e4d03fa8cbcf1716380da910eeb2bb8be417e7f9fd3fb164f36f" +checksum = "5420d42e90af0c38c3290abcca25b9b3bdf379fc9f55c528f53a269d9c9a267e" dependencies = [ "proc-macro2", "quote", @@ -7772,9 +7840,9 @@ dependencies = [ [[package]] name = "time" -version = "0.3.17" +version = "0.3.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a561bf4617eebd33bca6434b988f39ed798e527f51a1e797d0ee4f61c0a38376" +checksum = "cd0cbfecb4d19b5ea75bb31ad904eb5b9fa13f21079c3b92017ebdf4999a5890" dependencies = [ "itoa", "libc", @@ -7792,9 +7860,9 @@ checksum = "2e153e1f1acaef8acc537e68b44906d2db6436e2b35ac2c6b42640fff91f00fd" [[package]] name = "time-macros" -version = "0.2.6" +version = "0.2.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d967f99f534ca7e495c575c62638eebc2898a8c84c119b89e250477bc4ba16b2" +checksum = "fd80a657e71da814b8e5d60d3374fc6d35045062245d80224748ae522dd76f36" dependencies = [ "time-core", ] @@ -7938,9 +8006,9 @@ dependencies = [ [[package]] name = "tokio-stream" -version = "0.1.11" +version = "0.1.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d660770404473ccd7bc9f8b28494a811bc18542b915c0855c51e8f419d5223ce" +checksum = "8fb52b74f05dbf495a8fba459fdc331812b96aa086d9eb78101fa0d4569c3313" dependencies = [ "futures-core", "pin-project-lite 0.2.9", @@ -8368,12 +8436,6 @@ dependencies = [ "tree_hash_derive", ] -[[package]] -name = "ucd-trie" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e79c4d996edb816c91e4308506774452e55e95c3c9de07b6729e17e15a5ef81" - [[package]] name = "uint" version = "0.9.5" @@ -8404,15 +8466,15 @@ dependencies = [ [[package]] name = "unicode-bidi" -version = "0.3.10" +version = "0.3.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d54675592c1dbefd78cbd98db9bacd89886e1ca50692a0692baefffdeb92dd58" +checksum = "524b68aca1d05e03fdf03fcdce2c6c94b6daf6d16861ddaa7e4f2b6638a9052c" [[package]] name = "unicode-ident" -version = "1.0.6" +version = "1.0.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "84a22b9f218b40614adcb3f4ff08b703773ad44fa9423e4e0d346d5db86e4ebc" +checksum = "e5464a87b239f13a63a501f2701565754bae92d243d4bb7eb12f6d57d2269bf4" [[package]] name = "unicode-normalization" @@ -8445,6 +8507,16 @@ dependencies = [ "subtle", ] +[[package]] +name = "universal-hash" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7d3160b73c9a19f7e2939a2fdad446c57c1bbbbf4d919d3213ff1267a580d8b5" +dependencies = [ + "crypto-common", + "subtle", +] + [[package]] name = "unsigned-varint" version = "0.6.0" @@ -8970,7 +9042,7 @@ dependencies = [ "sha2 0.10.6", "stun", "thiserror", - "time 0.3.17", + "time 0.3.20", "tokio", "turn", "url", @@ -9002,22 +9074,22 @@ dependencies = [ [[package]] name = "webrtc-dtls" -version = "0.7.0" +version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7021987ae0a2ed6c8cd33f68e98e49bb6e74ffe9543310267b48a1bbe3900e5f" +checksum = "942be5bd85f072c3128396f6e5a9bfb93ca8c1939ded735d177b7bcba9a13d05" dependencies = [ "aes 0.6.0", - "aes-gcm 0.8.0", + "aes-gcm 0.10.1", "async-trait", "bincode", "block-modes", "byteorder", "ccm", "curve25519-dalek 3.2.0", - "der-parser 8.1.0", + "der-parser 8.2.0", "elliptic-curve", "hkdf", - "hmac 0.10.1", + "hmac 0.12.1", "log", "oid-registry 0.6.1", "p256", @@ -9029,8 +9101,8 @@ dependencies = [ "rustls 0.19.1", "sec1", "serde", - "sha-1 0.9.8", - "sha2 0.9.9", + "sha1", + "sha2 0.10.6", "signature", "subtle", "thiserror", @@ -9156,15 +9228,6 @@ dependencies = [ "winapi", ] -[[package]] -name = "wepoll-ffi" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d743fdedc5c64377b5fc2bc036b01c7fd642205a0d96356034ae3404d49eb7fb" -dependencies = [ - "cc", -] - [[package]] name = "which" version = "4.4.0" @@ -9251,12 +9314,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5a3e1820f08b8513f676f7ab6c1f99ff312fb97b553d30ff4dd86f9f15728aa7" dependencies = [ "windows_aarch64_gnullvm", - "windows_aarch64_msvc 0.42.1", - "windows_i686_gnu 0.42.1", - "windows_i686_msvc 0.42.1", - "windows_x86_64_gnu 0.42.1", + "windows_aarch64_msvc 0.42.2", + "windows_i686_gnu 0.42.2", + "windows_i686_msvc 0.42.2", + "windows_x86_64_gnu 0.42.2", "windows_x86_64_gnullvm", - "windows_x86_64_msvc 0.42.1", + "windows_x86_64_msvc 0.42.2", ] [[package]] @@ -9270,24 +9333,24 @@ dependencies = [ [[package]] name = "windows-targets" -version = "0.42.1" +version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e2522491fbfcd58cc84d47aeb2958948c4b8982e9a2d8a2a35bbaed431390e7" +checksum = "8e5180c00cd44c9b1c88adb3693291f1cd93605ded80c250a75d472756b4d071" dependencies = [ "windows_aarch64_gnullvm", - "windows_aarch64_msvc 0.42.1", - "windows_i686_gnu 0.42.1", - "windows_i686_msvc 0.42.1", - "windows_x86_64_gnu 0.42.1", + "windows_aarch64_msvc 0.42.2", + "windows_i686_gnu 0.42.2", + "windows_i686_msvc 0.42.2", + "windows_x86_64_gnu 0.42.2", "windows_x86_64_gnullvm", - "windows_x86_64_msvc 0.42.1", + "windows_x86_64_msvc 0.42.2", ] [[package]] name = "windows_aarch64_gnullvm" -version = "0.42.1" +version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c9864e83243fdec7fc9c5444389dcbbfd258f745e7853198f365e3c4968a608" +checksum = "597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8" [[package]] name = "windows_aarch64_msvc" @@ -9297,9 +9360,9 @@ checksum = "17cffbe740121affb56fad0fc0e421804adf0ae00891205213b5cecd30db881d" [[package]] name = "windows_aarch64_msvc" -version = "0.42.1" +version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c8b1b673ffc16c47a9ff48570a9d85e25d265735c503681332589af6253c6c7" +checksum = "e08e8864a60f06ef0d0ff4ba04124db8b0fb3be5776a5cd47641e942e58c4d43" [[package]] name = "windows_i686_gnu" @@ -9309,9 +9372,9 @@ checksum = "2564fde759adb79129d9b4f54be42b32c89970c18ebf93124ca8870a498688ed" [[package]] name = "windows_i686_gnu" -version = "0.42.1" +version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "de3887528ad530ba7bdbb1faa8275ec7a1155a45ffa57c37993960277145d640" +checksum = "c61d927d8da41da96a81f029489353e68739737d3beca43145c8afec9a31a84f" [[package]] name = "windows_i686_msvc" @@ -9321,9 +9384,9 @@ checksum = "9cd9d32ba70453522332c14d38814bceeb747d80b3958676007acadd7e166956" [[package]] name = "windows_i686_msvc" -version = "0.42.1" +version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf4d1122317eddd6ff351aa852118a2418ad4214e6613a50e0191f7004372605" +checksum = "44d840b6ec649f480a41c8d80f9c65108b92d89345dd94027bfe06ac444d1060" [[package]] name = "windows_x86_64_gnu" @@ -9333,15 +9396,15 @@ checksum = "cfce6deae227ee8d356d19effc141a509cc503dfd1f850622ec4b0f84428e1f4" [[package]] name = "windows_x86_64_gnu" -version = "0.42.1" +version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c1040f221285e17ebccbc2591ffdc2d44ee1f9186324dd3e84e99ac68d699c45" +checksum = "8de912b8b8feb55c064867cf047dda097f92d51efad5b491dfb98f6bbb70cb36" [[package]] name = "windows_x86_64_gnullvm" -version = "0.42.1" +version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "628bfdf232daa22b0d64fdb62b09fcc36bb01f05a3939e20ab73aaf9470d0463" +checksum = "26d41b46a36d453748aedef1486d5c7a85db22e56aff34643984ea85514e94a3" [[package]] name = "windows_x86_64_msvc" @@ -9351,9 +9414,9 @@ checksum = "d19538ccc21819d01deaf88d6a17eae6596a12e9aafdbb97916fb49896d89de9" [[package]] name = "windows_x86_64_msvc" -version = "0.42.1" +version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "447660ad36a13288b1db4d4248e857b510e8c3a225c822ba4fb748c0aafecffd" +checksum = "9aec5da331524158c6d1a4ac0ab1541149c0b9505fde06423b02f5ef0106b9f0" [[package]] name = "winreg" @@ -9436,7 +9499,7 @@ dependencies = [ "ring", "rusticata-macros", "thiserror", - "time 0.3.17", + "time 0.3.20", ] [[package]] @@ -9445,16 +9508,16 @@ version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e0ecbeb7b67ce215e40e3cc7f2ff902f94a223acf44995934763467e7b1febc8" dependencies = [ - "asn1-rs 0.5.1", + "asn1-rs 0.5.2", "base64 0.13.1", "data-encoding", - "der-parser 8.1.0", + "der-parser 8.2.0", "lazy_static", "nom 7.1.3", "oid-registry 0.6.1", "rusticata-macros", "thiserror", - "time 0.3.17", + "time 0.3.20", ] [[package]] @@ -9501,7 +9564,7 @@ version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "aed2e7a52e3744ab4d0c05c20aa065258e84c49fd4226f5191b2ed29712710b4" dependencies = [ - "time 0.3.17", + "time 0.3.20", ] [[package]] diff --git a/beacon_node/beacon_chain/src/beacon_chain.rs b/beacon_node/beacon_chain/src/beacon_chain.rs index 9802935b22..11eda4dead 100644 --- a/beacon_node/beacon_chain/src/beacon_chain.rs +++ b/beacon_node/beacon_chain/src/beacon_chain.rs @@ -432,6 +432,46 @@ pub struct BeaconChain { type BeaconBlockAndState = (BeaconBlock, BeaconState); impl BeaconChain { + /// Checks if a block is finalized. + /// The finalization check is done with the block slot. The block root is used to verify that + /// the finalized slot is in the canonical chain. + pub fn is_finalized_block( + &self, + block_root: &Hash256, + block_slot: Slot, + ) -> Result { + let finalized_slot = self + .canonical_head + .cached_head() + .finalized_checkpoint() + .epoch + .start_slot(T::EthSpec::slots_per_epoch()); + let is_canonical = self + .block_root_at_slot(block_slot, WhenSlotSkipped::None)? + .map_or(false, |canonical_root| block_root == &canonical_root); + Ok(block_slot <= finalized_slot && is_canonical) + } + + /// Checks if a state is finalized. + /// The finalization check is done with the slot. The state root is used to verify that + /// the finalized state is in the canonical chain. + pub fn is_finalized_state( + &self, + state_root: &Hash256, + state_slot: Slot, + ) -> Result { + let finalized_slot = self + .canonical_head + .cached_head() + .finalized_checkpoint() + .epoch + .start_slot(T::EthSpec::slots_per_epoch()); + let is_canonical = self + .state_root_at_slot(state_slot)? + .map_or(false, |canonical_root| state_root == &canonical_root); + Ok(state_slot <= finalized_slot && is_canonical) + } + /// Persists the head tracker and fork choice. /// /// We do it atomically even though no guarantees need to be made about blocks from diff --git a/beacon_node/http_api/src/attester_duties.rs b/beacon_node/http_api/src/attester_duties.rs index 9febae5b19..5c3e420839 100644 --- a/beacon_node/http_api/src/attester_duties.rs +++ b/beacon_node/http_api/src/attester_duties.rs @@ -114,8 +114,10 @@ fn compute_historic_attester_duties( )?; (state, execution_optimistic) } else { - StateId::from_slot(request_epoch.start_slot(T::EthSpec::slots_per_epoch())) - .state(chain)? + let (state, execution_optimistic, _finalized) = + StateId::from_slot(request_epoch.start_slot(T::EthSpec::slots_per_epoch())) + .state(chain)?; + (state, execution_optimistic) }; // Sanity-check the state lookup. diff --git a/beacon_node/http_api/src/block_id.rs b/beacon_node/http_api/src/block_id.rs index 5c785fe651..f1a42b8744 100644 --- a/beacon_node/http_api/src/block_id.rs +++ b/beacon_node/http_api/src/block_id.rs @@ -4,13 +4,15 @@ use eth2::types::BlockId as CoreBlockId; use std::fmt; use std::str::FromStr; use std::sync::Arc; -use types::{Hash256, SignedBeaconBlock, SignedBlindedBeaconBlock, Slot}; +use types::{EthSpec, Hash256, SignedBeaconBlock, SignedBlindedBeaconBlock, Slot}; /// Wraps `eth2::types::BlockId` and provides a simple way to obtain a block or root for a given /// `BlockId`. #[derive(Debug)] pub struct BlockId(pub CoreBlockId); +type Finalized = bool; + impl BlockId { pub fn from_slot(slot: Slot) -> Self { Self(CoreBlockId::Slot(slot)) @@ -24,7 +26,7 @@ impl BlockId { pub fn root( &self, chain: &BeaconChain, - ) -> Result<(Hash256, ExecutionOptimistic), warp::Rejection> { + ) -> Result<(Hash256, ExecutionOptimistic, Finalized), warp::Rejection> { match &self.0 { CoreBlockId::Head => { let (cached_head, execution_status) = chain @@ -34,22 +36,23 @@ impl BlockId { Ok(( cached_head.head_block_root(), execution_status.is_optimistic_or_invalid(), + false, )) } - CoreBlockId::Genesis => Ok((chain.genesis_block_root, false)), + CoreBlockId::Genesis => Ok((chain.genesis_block_root, false, true)), CoreBlockId::Finalized => { let finalized_checkpoint = chain.canonical_head.cached_head().finalized_checkpoint(); let (_slot, execution_optimistic) = checkpoint_slot_and_execution_optimistic(chain, finalized_checkpoint)?; - Ok((finalized_checkpoint.root, execution_optimistic)) + Ok((finalized_checkpoint.root, execution_optimistic, true)) } CoreBlockId::Justified => { let justified_checkpoint = chain.canonical_head.cached_head().justified_checkpoint(); let (_slot, execution_optimistic) = checkpoint_slot_and_execution_optimistic(chain, justified_checkpoint)?; - Ok((justified_checkpoint.root, execution_optimistic)) + Ok((justified_checkpoint.root, execution_optimistic, false)) } CoreBlockId::Slot(slot) => { let execution_optimistic = chain @@ -66,7 +69,14 @@ impl BlockId { )) }) })?; - Ok((root, execution_optimistic)) + let finalized = *slot + <= chain + .canonical_head + .cached_head() + .finalized_checkpoint() + .epoch + .start_slot(T::EthSpec::slots_per_epoch()); + Ok((root, execution_optimistic, finalized)) } CoreBlockId::Root(root) => { // This matches the behaviour of other consensus clients (e.g. Teku). @@ -88,7 +98,20 @@ impl BlockId { .is_optimistic_or_invalid_block(root) .map_err(BeaconChainError::ForkChoiceError) .map_err(warp_utils::reject::beacon_chain_error)?; - Ok((*root, execution_optimistic)) + let blinded_block = chain + .get_blinded_block(root) + .map_err(warp_utils::reject::beacon_chain_error)? + .ok_or_else(|| { + warp_utils::reject::custom_not_found(format!( + "beacon block with root {}", + root + )) + })?; + let block_slot = blinded_block.slot(); + let finalized = chain + .is_finalized_block(root, block_slot) + .map_err(warp_utils::reject::beacon_chain_error)?; + Ok((*root, execution_optimistic, finalized)) } else { Err(warp_utils::reject::custom_not_found(format!( "beacon block with root {}", @@ -103,7 +126,14 @@ impl BlockId { pub fn blinded_block( &self, chain: &BeaconChain, - ) -> Result<(SignedBlindedBeaconBlock, ExecutionOptimistic), warp::Rejection> { + ) -> Result< + ( + SignedBlindedBeaconBlock, + ExecutionOptimistic, + Finalized, + ), + warp::Rejection, + > { match &self.0 { CoreBlockId::Head => { let (cached_head, execution_status) = chain @@ -113,10 +143,11 @@ impl BlockId { Ok(( cached_head.snapshot.beacon_block.clone_as_blinded(), execution_status.is_optimistic_or_invalid(), + false, )) } CoreBlockId::Slot(slot) => { - let (root, execution_optimistic) = self.root(chain)?; + let (root, execution_optimistic, finalized) = self.root(chain)?; chain .get_blinded_block(&root) .map_err(warp_utils::reject::beacon_chain_error) @@ -128,7 +159,7 @@ impl BlockId { slot ))); } - Ok((block, execution_optimistic)) + Ok((block, execution_optimistic, finalized)) } None => Err(warp_utils::reject::custom_not_found(format!( "beacon block with root {}", @@ -137,7 +168,7 @@ impl BlockId { }) } _ => { - let (root, execution_optimistic) = self.root(chain)?; + let (root, execution_optimistic, finalized) = self.root(chain)?; let block = chain .get_blinded_block(&root) .map_err(warp_utils::reject::beacon_chain_error) @@ -149,7 +180,7 @@ impl BlockId { )) }) })?; - Ok((block, execution_optimistic)) + Ok((block, execution_optimistic, finalized)) } } } @@ -158,7 +189,14 @@ impl BlockId { pub async fn full_block( &self, chain: &BeaconChain, - ) -> Result<(Arc>, ExecutionOptimistic), warp::Rejection> { + ) -> Result< + ( + Arc>, + ExecutionOptimistic, + Finalized, + ), + warp::Rejection, + > { match &self.0 { CoreBlockId::Head => { let (cached_head, execution_status) = chain @@ -168,10 +206,11 @@ impl BlockId { Ok(( cached_head.snapshot.beacon_block.clone(), execution_status.is_optimistic_or_invalid(), + false, )) } CoreBlockId::Slot(slot) => { - let (root, execution_optimistic) = self.root(chain)?; + let (root, execution_optimistic, finalized) = self.root(chain)?; chain .get_block(&root) .await @@ -184,7 +223,7 @@ impl BlockId { slot ))); } - Ok((Arc::new(block), execution_optimistic)) + Ok((Arc::new(block), execution_optimistic, finalized)) } None => Err(warp_utils::reject::custom_not_found(format!( "beacon block with root {}", @@ -193,14 +232,14 @@ impl BlockId { }) } _ => { - let (root, execution_optimistic) = self.root(chain)?; + let (root, execution_optimistic, finalized) = self.root(chain)?; chain .get_block(&root) .await .map_err(warp_utils::reject::beacon_chain_error) .and_then(|block_opt| { block_opt - .map(|block| (Arc::new(block), execution_optimistic)) + .map(|block| (Arc::new(block), execution_optimistic, finalized)) .ok_or_else(|| { warp_utils::reject::custom_not_found(format!( "beacon block with root {}", diff --git a/beacon_node/http_api/src/lib.rs b/beacon_node/http_api/src/lib.rs index b36adc5c08..aa52466e26 100644 --- a/beacon_node/http_api/src/lib.rs +++ b/beacon_node/http_api/src/lib.rs @@ -63,7 +63,7 @@ use types::{ SyncCommitteeMessage, SyncContributionData, }; use version::{ - add_consensus_version_header, execution_optimistic_fork_versioned_response, + add_consensus_version_header, execution_optimistic_finalized_fork_versioned_response, fork_versioned_response, inconsistent_fork_rejection, unsupported_version_rejection, V1, V2, }; use warp::http::StatusCode; @@ -522,12 +522,13 @@ pub fn serve( .and(warp::path::end()) .and_then(|state_id: StateId, chain: Arc>| { blocking_json_task(move || { - let (root, execution_optimistic) = state_id.root(&chain)?; - + let (root, execution_optimistic, finalized) = state_id.root(&chain)?; Ok(root) .map(api_types::RootData::from) .map(api_types::GenericResponse::from) - .map(|resp| resp.add_execution_optimistic(execution_optimistic)) + .map(|resp| { + resp.add_execution_optimistic_finalized(execution_optimistic, finalized) + }) }) }); @@ -538,11 +539,12 @@ pub fn serve( .and(warp::path::end()) .and_then(|state_id: StateId, chain: Arc>| { blocking_json_task(move || { - let (fork, execution_optimistic) = - state_id.fork_and_execution_optimistic(&chain)?; - Ok(api_types::ExecutionOptimisticResponse { + let (fork, execution_optimistic, finalized) = + state_id.fork_and_execution_optimistic_and_finalized(&chain)?; + Ok(api_types::ExecutionOptimisticFinalizedResponse { data: fork, execution_optimistic: Some(execution_optimistic), + finalized: Some(finalized), }) }) }); @@ -554,23 +556,26 @@ pub fn serve( .and(warp::path::end()) .and_then(|state_id: StateId, chain: Arc>| { blocking_json_task(move || { - let (data, execution_optimistic) = state_id.map_state_and_execution_optimistic( - &chain, - |state, execution_optimistic| { - Ok(( - api_types::FinalityCheckpointsData { - previous_justified: state.previous_justified_checkpoint(), - current_justified: state.current_justified_checkpoint(), - finalized: state.finalized_checkpoint(), - }, - execution_optimistic, - )) - }, - )?; + let (data, execution_optimistic, finalized) = state_id + .map_state_and_execution_optimistic_and_finalized( + &chain, + |state, execution_optimistic, finalized| { + Ok(( + api_types::FinalityCheckpointsData { + previous_justified: state.previous_justified_checkpoint(), + current_justified: state.current_justified_checkpoint(), + finalized: state.finalized_checkpoint(), + }, + execution_optimistic, + finalized, + )) + }, + )?; - Ok(api_types::ExecutionOptimisticResponse { + Ok(api_types::ExecutionOptimisticFinalizedResponse { data, execution_optimistic: Some(execution_optimistic), + finalized: Some(finalized), }) }) }); @@ -587,10 +592,10 @@ pub fn serve( query_res: Result| { blocking_json_task(move || { let query = query_res?; - let (data, execution_optimistic) = state_id - .map_state_and_execution_optimistic( + let (data, execution_optimistic, finalized) = state_id + .map_state_and_execution_optimistic_and_finalized( &chain, - |state, execution_optimistic| { + |state, execution_optimistic, finalized| { Ok(( state .validators() @@ -618,13 +623,15 @@ pub fn serve( }) .collect::>(), execution_optimistic, + finalized, )) }, )?; - Ok(api_types::ExecutionOptimisticResponse { + Ok(api_types::ExecutionOptimisticFinalizedResponse { data, execution_optimistic: Some(execution_optimistic), + finalized: Some(finalized), }) }) }, @@ -642,10 +649,10 @@ pub fn serve( query_res: Result| { blocking_json_task(move || { let query = query_res?; - let (data, execution_optimistic) = state_id - .map_state_and_execution_optimistic( + let (data, execution_optimistic, finalized) = state_id + .map_state_and_execution_optimistic_and_finalized( &chain, - |state, execution_optimistic| { + |state, execution_optimistic, finalized| { let epoch = state.current_epoch(); let far_future_epoch = chain.spec.far_future_epoch; @@ -695,13 +702,15 @@ pub fn serve( }) .collect::>(), execution_optimistic, + finalized, )) }, )?; - Ok(api_types::ExecutionOptimisticResponse { + Ok(api_types::ExecutionOptimisticFinalizedResponse { data, execution_optimistic: Some(execution_optimistic), + finalized: Some(finalized), }) }) }, @@ -720,10 +729,10 @@ pub fn serve( .and_then( |state_id: StateId, chain: Arc>, validator_id: ValidatorId| { blocking_json_task(move || { - let (data, execution_optimistic) = state_id - .map_state_and_execution_optimistic( + let (data, execution_optimistic, finalized) = state_id + .map_state_and_execution_optimistic_and_finalized( &chain, - |state, execution_optimistic| { + |state, execution_optimistic, finalized| { let index_opt = match &validator_id { ValidatorId::PublicKey(pubkey) => { state.validators().iter().position(|v| v.pubkey == *pubkey) @@ -757,13 +766,15 @@ pub fn serve( )) })?, execution_optimistic, + finalized, )) }, )?; - Ok(api_types::ExecutionOptimisticResponse { + Ok(api_types::ExecutionOptimisticFinalizedResponse { data, execution_optimistic: Some(execution_optimistic), + finalized: Some(finalized), }) }) }, @@ -778,10 +789,10 @@ pub fn serve( .and_then( |state_id: StateId, chain: Arc>, query: api_types::CommitteesQuery| { blocking_json_task(move || { - let (data, execution_optimistic) = state_id - .map_state_and_execution_optimistic( + let (data, execution_optimistic, finalized) = state_id + .map_state_and_execution_optimistic_and_finalized( &chain, - |state, execution_optimistic| { + |state, execution_optimistic, finalized| { let current_epoch = state.current_epoch(); let epoch = query.epoch.unwrap_or(current_epoch); @@ -937,12 +948,13 @@ pub fn serve( } } - Ok((response, execution_optimistic)) + Ok((response, execution_optimistic, finalized)) }, )?; - Ok(api_types::ExecutionOptimisticResponse { + Ok(api_types::ExecutionOptimisticFinalizedResponse { data, execution_optimistic: Some(execution_optimistic), + finalized: Some(finalized), }) }) }, @@ -959,10 +971,10 @@ pub fn serve( chain: Arc>, query: api_types::SyncCommitteesQuery| { blocking_json_task(move || { - let (sync_committee, execution_optimistic) = state_id - .map_state_and_execution_optimistic( + let (sync_committee, execution_optimistic, finalized) = state_id + .map_state_and_execution_optimistic_and_finalized( &chain, - |state, execution_optimistic| { + |state, execution_optimistic, finalized| { let current_epoch = state.current_epoch(); let epoch = query.epoch.unwrap_or(current_epoch); Ok(( @@ -972,9 +984,10 @@ pub fn serve( .map_err(|e| match e { BeaconStateError::SyncCommitteeNotKnown { .. } => { warp_utils::reject::custom_bad_request(format!( - "state at epoch {} has no sync committee for epoch {}", - current_epoch, epoch - )) + "state at epoch {} has no \ + sync committee for epoch {}", + current_epoch, epoch + )) } BeaconStateError::IncorrectStateVariant => { warp_utils::reject::custom_bad_request(format!( @@ -985,6 +998,7 @@ pub fn serve( e => warp_utils::reject::beacon_state_error(e), })?, execution_optimistic, + finalized, )) }, )?; @@ -1006,7 +1020,7 @@ pub fn serve( }; Ok(api_types::GenericResponse::from(response) - .add_execution_optimistic(execution_optimistic)) + .add_execution_optimistic_finalized(execution_optimistic, finalized)) }) }, ); @@ -1020,23 +1034,23 @@ pub fn serve( .and_then( |state_id: StateId, chain: Arc>, query: api_types::RandaoQuery| { blocking_json_task(move || { - let (randao, execution_optimistic) = state_id - .map_state_and_execution_optimistic( + let (randao, execution_optimistic, finalized) = state_id + .map_state_and_execution_optimistic_and_finalized( &chain, - |state, execution_optimistic| { + |state, execution_optimistic, finalized| { let epoch = query.epoch.unwrap_or_else(|| state.current_epoch()); let randao = *state.get_randao_mix(epoch).map_err(|e| { warp_utils::reject::custom_bad_request(format!( "epoch out of range: {e:?}" )) })?; - Ok((randao, execution_optimistic)) + Ok((randao, execution_optimistic, finalized)) }, )?; Ok( api_types::GenericResponse::from(api_types::RandaoMix { randao }) - .add_execution_optimistic(execution_optimistic), + .add_execution_optimistic_finalized(execution_optimistic, finalized), ) }) }, @@ -1058,72 +1072,73 @@ pub fn serve( .and_then( |query: api_types::HeadersQuery, chain: Arc>| { blocking_json_task(move || { - let (root, block, execution_optimistic) = match (query.slot, query.parent_root) - { - // No query parameters, return the canonical head block. - (None, None) => { - let (cached_head, execution_status) = chain - .canonical_head - .head_and_execution_status() - .map_err(warp_utils::reject::beacon_chain_error)?; - ( - cached_head.head_block_root(), - cached_head.snapshot.beacon_block.clone_as_blinded(), - execution_status.is_optimistic_or_invalid(), - ) - } - // Only the parent root parameter, do a forwards-iterator lookup. - (None, Some(parent_root)) => { - let (parent, execution_optimistic) = - BlockId::from_root(parent_root).blinded_block(&chain)?; - let (root, _slot) = chain - .forwards_iter_block_roots(parent.slot()) - .map_err(warp_utils::reject::beacon_chain_error)? - // Ignore any skip-slots immediately following the parent. - .find(|res| { - res.as_ref().map_or(false, |(root, _)| *root != parent_root) - }) - .transpose() - .map_err(warp_utils::reject::beacon_chain_error)? - .ok_or_else(|| { - warp_utils::reject::custom_not_found(format!( - "child of block with root {}", - parent_root - )) - })?; - - BlockId::from_root(root) - .blinded_block(&chain) - // Ignore this `execution_optimistic` since the first value has - // more information about the original request. - .map(|(block, _execution_optimistic)| { - (root, block, execution_optimistic) - })? - } - // Slot is supplied, search by slot and optionally filter by - // parent root. - (Some(slot), parent_root_opt) => { - let (root, execution_optimistic) = - BlockId::from_slot(slot).root(&chain)?; - // Ignore the second `execution_optimistic`, the first one is the - // most relevant since it knows that we queried by slot. - let (block, _execution_optimistic) = - BlockId::from_root(root).blinded_block(&chain)?; - - // If the parent root was supplied, check that it matches the block - // obtained via a slot lookup. - if let Some(parent_root) = parent_root_opt { - if block.parent_root() != parent_root { - return Err(warp_utils::reject::custom_not_found(format!( - "no canonical block at slot {} with parent root {}", - slot, parent_root - ))); - } + let (root, block, execution_optimistic, finalized) = + match (query.slot, query.parent_root) { + // No query parameters, return the canonical head block. + (None, None) => { + let (cached_head, execution_status) = chain + .canonical_head + .head_and_execution_status() + .map_err(warp_utils::reject::beacon_chain_error)?; + ( + cached_head.head_block_root(), + cached_head.snapshot.beacon_block.clone_as_blinded(), + execution_status.is_optimistic_or_invalid(), + false, + ) } + // Only the parent root parameter, do a forwards-iterator lookup. + (None, Some(parent_root)) => { + let (parent, execution_optimistic, _parent_finalized) = + BlockId::from_root(parent_root).blinded_block(&chain)?; + let (root, _slot) = chain + .forwards_iter_block_roots(parent.slot()) + .map_err(warp_utils::reject::beacon_chain_error)? + // Ignore any skip-slots immediately following the parent. + .find(|res| { + res.as_ref().map_or(false, |(root, _)| *root != parent_root) + }) + .transpose() + .map_err(warp_utils::reject::beacon_chain_error)? + .ok_or_else(|| { + warp_utils::reject::custom_not_found(format!( + "child of block with root {}", + parent_root + )) + })?; - (root, block, execution_optimistic) - } - }; + BlockId::from_root(root) + .blinded_block(&chain) + // Ignore this `execution_optimistic` since the first value has + // more information about the original request. + .map(|(block, _execution_optimistic, finalized)| { + (root, block, execution_optimistic, finalized) + })? + } + // Slot is supplied, search by slot and optionally filter by + // parent root. + (Some(slot), parent_root_opt) => { + let (root, execution_optimistic, finalized) = + BlockId::from_slot(slot).root(&chain)?; + // Ignore the second `execution_optimistic`, the first one is the + // most relevant since it knows that we queried by slot. + let (block, _execution_optimistic, _finalized) = + BlockId::from_root(root).blinded_block(&chain)?; + + // If the parent root was supplied, check that it matches the block + // obtained via a slot lookup. + if let Some(parent_root) = parent_root_opt { + if block.parent_root() != parent_root { + return Err(warp_utils::reject::custom_not_found(format!( + "no canonical block at slot {} with parent root {}", + slot, parent_root + ))); + } + } + + (root, block, execution_optimistic, finalized) + } + }; let data = api_types::BlockHeaderData { root, @@ -1135,7 +1150,7 @@ pub fn serve( }; Ok(api_types::GenericResponse::from(vec![data]) - .add_execution_optimistic(execution_optimistic)) + .add_execution_optimistic_finalized(execution_optimistic, finalized)) }) }, ); @@ -1153,10 +1168,10 @@ pub fn serve( .and(chain_filter.clone()) .and_then(|block_id: BlockId, chain: Arc>| { blocking_json_task(move || { - let (root, execution_optimistic) = block_id.root(&chain)?; + let (root, execution_optimistic, finalized) = block_id.root(&chain)?; // Ignore the second `execution_optimistic` since the first one has more // information about the original request. - let (block, _execution_optimistic) = + let (block, _execution_optimistic, _finalized) = BlockId::from_root(root).blinded_block(&chain)?; let canonical = chain @@ -1173,8 +1188,9 @@ pub fn serve( }, }; - Ok(api_types::ExecutionOptimisticResponse { + Ok(api_types::ExecutionOptimisticFinalizedResponse { execution_optimistic: Some(execution_optimistic), + finalized: Some(finalized), data, }) }) @@ -1263,7 +1279,8 @@ pub fn serve( chain: Arc>, accept_header: Option| { async move { - let (block, execution_optimistic) = block_id.full_block(&chain).await?; + let (block, execution_optimistic, finalized) = + block_id.full_block(&chain).await?; let fork_name = block .fork_name(&chain.spec) .map_err(inconsistent_fork_rejection)?; @@ -1279,10 +1296,11 @@ pub fn serve( e )) }), - _ => execution_optimistic_fork_versioned_response( + _ => execution_optimistic_finalized_fork_versioned_response( endpoint_version, fork_name, execution_optimistic, + finalized, block, ) .map(|res| warp::reply::json(&res).into_response()), @@ -1299,12 +1317,11 @@ pub fn serve( .and(warp::path::end()) .and_then(|block_id: BlockId, chain: Arc>| { blocking_json_task(move || { - let (block, execution_optimistic) = block_id.blinded_block(&chain)?; - + let (block, execution_optimistic, finalized) = block_id.blinded_block(&chain)?; Ok(api_types::GenericResponse::from(api_types::RootData::from( block.canonical_root(), )) - .add_execution_optimistic(execution_optimistic)) + .add_execution_optimistic_finalized(execution_optimistic, finalized)) }) }); @@ -1315,11 +1332,10 @@ pub fn serve( .and(warp::path::end()) .and_then(|block_id: BlockId, chain: Arc>| { blocking_json_task(move || { - let (block, execution_optimistic) = block_id.blinded_block(&chain)?; - + let (block, execution_optimistic, finalized) = block_id.blinded_block(&chain)?; Ok( api_types::GenericResponse::from(block.message().body().attestations().clone()) - .add_execution_optimistic(execution_optimistic), + .add_execution_optimistic_finalized(execution_optimistic, finalized), ) }) }); @@ -1337,7 +1353,8 @@ pub fn serve( chain: Arc>, accept_header: Option| { blocking_response_task(move || { - let (block, execution_optimistic) = block_id.blinded_block(&chain)?; + let (block, execution_optimistic, finalized) = + block_id.blinded_block(&chain)?; let fork_name = block .fork_name(&chain.spec) .map_err(inconsistent_fork_rejection)?; @@ -1355,10 +1372,11 @@ pub fn serve( }), _ => { // Post as a V2 endpoint so we return the fork version. - execution_optimistic_fork_versioned_response( + execution_optimistic_finalized_fork_versioned_response( V2, fork_name, execution_optimistic, + finalized, block, ) .map(|res| warp::reply::json(&res).into_response()) @@ -1899,11 +1917,13 @@ pub fn serve( .and(warp::path::end()) .and_then(|chain: Arc>, block_id: BlockId| { blocking_json_task(move || { - let (rewards, execution_optimistic) = + let (rewards, execution_optimistic, finalized) = standard_block_rewards::compute_beacon_block_rewards(chain, block_id)?; Ok(rewards) .map(api_types::GenericResponse::from) - .map(|resp| resp.add_execution_optimistic(execution_optimistic)) + .map(|resp| { + resp.add_execution_optimistic_finalized(execution_optimistic, finalized) + }) }) }); @@ -1982,14 +2002,16 @@ pub fn serve( validators: Vec, log: Logger| { blocking_json_task(move || { - let (rewards, execution_optimistic) = + let (rewards, execution_optimistic, finalized) = sync_committee_rewards::compute_sync_committee_rewards( chain, block_id, validators, log, )?; Ok(rewards) .map(api_types::GenericResponse::from) - .map(|resp| resp.add_execution_optimistic(execution_optimistic)) + .map(|resp| { + resp.add_execution_optimistic_finalized(execution_optimistic, finalized) + }) }) }, ); @@ -2072,7 +2094,7 @@ pub fn serve( // We can ignore the optimistic status for the "fork" since it's a // specification constant that doesn't change across competing heads of the // beacon chain. - let (state, _execution_optimistic) = state_id.state(&chain)?; + let (state, _execution_optimistic, _finalized) = state_id.state(&chain)?; let fork_name = state .fork_name(&chain.spec) .map_err(inconsistent_fork_rejection)?; @@ -2090,16 +2112,17 @@ pub fn serve( )) }) } - _ => state_id.map_state_and_execution_optimistic( + _ => state_id.map_state_and_execution_optimistic_and_finalized( &chain, - |state, execution_optimistic| { + |state, execution_optimistic, finalized| { let fork_name = state .fork_name(&chain.spec) .map_err(inconsistent_fork_rejection)?; - let res = execution_optimistic_fork_versioned_response( + let res = execution_optimistic_finalized_fork_versioned_response( endpoint_version, fork_name, execution_optimistic, + finalized, &state, )?; Ok(add_consensus_version_header( @@ -3483,7 +3506,7 @@ pub fn serve( .and_then(|state_id: StateId, chain: Arc>| { blocking_response_task(move || { // This debug endpoint provides no indication of optimistic status. - let (state, _execution_optimistic) = state_id.state(&chain)?; + let (state, _execution_optimistic, _finalized) = state_id.state(&chain)?; Response::builder() .status(200) .header("Content-Type", "application/ssz") diff --git a/beacon_node/http_api/src/proposer_duties.rs b/beacon_node/http_api/src/proposer_duties.rs index 877d64e20f..7e946b89e7 100644 --- a/beacon_node/http_api/src/proposer_duties.rs +++ b/beacon_node/http_api/src/proposer_duties.rs @@ -209,7 +209,9 @@ fn compute_historic_proposer_duties( .map_err(warp_utils::reject::beacon_chain_error)?; (state, execution_optimistic) } else { - StateId::from_slot(epoch.start_slot(T::EthSpec::slots_per_epoch())).state(chain)? + let (state, execution_optimistic, _finalized) = + StateId::from_slot(epoch.start_slot(T::EthSpec::slots_per_epoch())).state(chain)?; + (state, execution_optimistic) }; // Ensure the state lookup was correct. diff --git a/beacon_node/http_api/src/standard_block_rewards.rs b/beacon_node/http_api/src/standard_block_rewards.rs index b3c90d08a4..de7e5eb7d3 100644 --- a/beacon_node/http_api/src/standard_block_rewards.rs +++ b/beacon_node/http_api/src/standard_block_rewards.rs @@ -10,8 +10,8 @@ use warp_utils::reject::beacon_chain_error; pub fn compute_beacon_block_rewards( chain: Arc>, block_id: BlockId, -) -> Result<(StandardBlockReward, ExecutionOptimistic), warp::Rejection> { - let (block, execution_optimistic) = block_id.blinded_block(&chain)?; +) -> Result<(StandardBlockReward, ExecutionOptimistic, bool), warp::Rejection> { + let (block, execution_optimistic, finalized) = block_id.blinded_block(&chain)?; let block_ref = block.message(); @@ -23,5 +23,5 @@ pub fn compute_beacon_block_rewards( .compute_beacon_block_reward(block_ref, block_root, &mut state) .map_err(beacon_chain_error)?; - Ok((rewards, execution_optimistic)) + Ok((rewards, execution_optimistic, finalized)) } diff --git a/beacon_node/http_api/src/state_id.rs b/beacon_node/http_api/src/state_id.rs index 44354217bc..9e4aadef17 100644 --- a/beacon_node/http_api/src/state_id.rs +++ b/beacon_node/http_api/src/state_id.rs @@ -10,6 +10,9 @@ use types::{BeaconState, Checkpoint, EthSpec, Fork, Hash256, Slot}; #[derive(Debug)] pub struct StateId(pub CoreStateId); +// More clarity when returning if the state is finalized or not in the root function. +type Finalized = bool; + impl StateId { pub fn from_slot(slot: Slot) -> Self { Self(CoreStateId::Slot(slot)) @@ -19,8 +22,8 @@ impl StateId { pub fn root( &self, chain: &BeaconChain, - ) -> Result<(Hash256, ExecutionOptimistic), warp::Rejection> { - let (slot, execution_optimistic) = match &self.0 { + ) -> Result<(Hash256, ExecutionOptimistic, Finalized), warp::Rejection> { + let (slot, execution_optimistic, finalized) = match &self.0 { CoreStateId::Head => { let (cached_head, execution_status) = chain .canonical_head @@ -29,24 +32,36 @@ impl StateId { return Ok(( cached_head.head_state_root(), execution_status.is_optimistic_or_invalid(), + false, )); } - CoreStateId::Genesis => return Ok((chain.genesis_state_root, false)), + CoreStateId::Genesis => return Ok((chain.genesis_state_root, false, true)), CoreStateId::Finalized => { let finalized_checkpoint = chain.canonical_head.cached_head().finalized_checkpoint(); - checkpoint_slot_and_execution_optimistic(chain, finalized_checkpoint)? + let (slot, execution_optimistic) = + checkpoint_slot_and_execution_optimistic(chain, finalized_checkpoint)?; + (slot, execution_optimistic, true) } CoreStateId::Justified => { let justified_checkpoint = chain.canonical_head.cached_head().justified_checkpoint(); - checkpoint_slot_and_execution_optimistic(chain, justified_checkpoint)? + let (slot, execution_optimistic) = + checkpoint_slot_and_execution_optimistic(chain, justified_checkpoint)?; + (slot, execution_optimistic, false) } CoreStateId::Slot(slot) => ( *slot, chain .is_optimistic_or_invalid_head() .map_err(warp_utils::reject::beacon_chain_error)?, + *slot + <= chain + .canonical_head + .cached_head() + .finalized_checkpoint() + .epoch + .start_slot(T::EthSpec::slots_per_epoch()), ), CoreStateId::Root(root) => { if let Some(hot_summary) = chain @@ -61,7 +76,10 @@ impl StateId { .is_optimistic_or_invalid_block_no_fallback(&hot_summary.latest_block_root) .map_err(BeaconChainError::ForkChoiceError) .map_err(warp_utils::reject::beacon_chain_error)?; - return Ok((*root, execution_optimistic)); + let finalized = chain + .is_finalized_state(root, hot_summary.slot) + .map_err(warp_utils::reject::beacon_chain_error)?; + return Ok((*root, execution_optimistic, finalized)); } else if let Some(_cold_state_slot) = chain .store .load_cold_state_slot(root) @@ -77,7 +95,7 @@ impl StateId { .is_optimistic_or_invalid_block_no_fallback(&finalized_root) .map_err(BeaconChainError::ForkChoiceError) .map_err(warp_utils::reject::beacon_chain_error)?; - return Ok((*root, execution_optimistic)); + return Ok((*root, execution_optimistic, true)); } else { return Err(warp_utils::reject::custom_not_found(format!( "beacon state for state root {}", @@ -94,7 +112,7 @@ impl StateId { warp_utils::reject::custom_not_found(format!("beacon state at slot {}", slot)) })?; - Ok((root, execution_optimistic)) + Ok((root, execution_optimistic, finalized)) } /// Return the `fork` field of the state identified by `self`. @@ -103,9 +121,25 @@ impl StateId { &self, chain: &BeaconChain, ) -> Result<(Fork, bool), warp::Rejection> { - self.map_state_and_execution_optimistic(chain, |state, execution_optimistic| { - Ok((state.fork(), execution_optimistic)) - }) + self.map_state_and_execution_optimistic_and_finalized( + chain, + |state, execution_optimistic, _finalized| Ok((state.fork(), execution_optimistic)), + ) + } + + /// Return the `fork` field of the state identified by `self`. + /// Also returns the `execution_optimistic` value of the state. + /// Also returns the `finalized` value of the state. + pub fn fork_and_execution_optimistic_and_finalized( + &self, + chain: &BeaconChain, + ) -> Result<(Fork, bool, bool), warp::Rejection> { + self.map_state_and_execution_optimistic_and_finalized( + chain, + |state, execution_optimistic, finalized| { + Ok((state.fork(), execution_optimistic, finalized)) + }, + ) } /// Convenience function to compute `fork` when `execution_optimistic` isn't desired. @@ -121,8 +155,8 @@ impl StateId { pub fn state( &self, chain: &BeaconChain, - ) -> Result<(BeaconState, ExecutionOptimistic), warp::Rejection> { - let ((state_root, execution_optimistic), slot_opt) = match &self.0 { + ) -> Result<(BeaconState, ExecutionOptimistic, Finalized), warp::Rejection> { + let ((state_root, execution_optimistic, finalized), slot_opt) = match &self.0 { CoreStateId::Head => { let (cached_head, execution_status) = chain .canonical_head @@ -134,6 +168,7 @@ impl StateId { .beacon_state .clone_with_only_committee_caches(), execution_status.is_optimistic_or_invalid(), + false, )); } CoreStateId::Slot(slot) => (self.root(chain)?, Some(*slot)), @@ -152,24 +187,25 @@ impl StateId { }) })?; - Ok((state, execution_optimistic)) + Ok((state, execution_optimistic, finalized)) } /// Map a function across the `BeaconState` identified by `self`. /// - /// The optimistic status of the requested state is also provided to the `func` closure. + /// The optimistic and finalization status of the requested state is also provided to the `func` + /// closure. /// /// This function will avoid instantiating/copying a new state when `self` points to the head /// of the chain. - pub fn map_state_and_execution_optimistic( + pub fn map_state_and_execution_optimistic_and_finalized( &self, chain: &BeaconChain, func: F, ) -> Result where - F: Fn(&BeaconState, bool) -> Result, + F: Fn(&BeaconState, bool, bool) -> Result, { - let (state, execution_optimistic) = match &self.0 { + let (state, execution_optimistic, finalized) = match &self.0 { CoreStateId::Head => { let (head, execution_status) = chain .canonical_head @@ -178,12 +214,13 @@ impl StateId { return func( &head.snapshot.beacon_state, execution_status.is_optimistic_or_invalid(), + false, ); } _ => self.state(chain)?, }; - func(&state, execution_optimistic) + func(&state, execution_optimistic, finalized) } } diff --git a/beacon_node/http_api/src/sync_committee_rewards.rs b/beacon_node/http_api/src/sync_committee_rewards.rs index cefa98db41..68a06b1ce8 100644 --- a/beacon_node/http_api/src/sync_committee_rewards.rs +++ b/beacon_node/http_api/src/sync_committee_rewards.rs @@ -13,8 +13,8 @@ pub fn compute_sync_committee_rewards( block_id: BlockId, validators: Vec, log: Logger, -) -> Result<(Option>, ExecutionOptimistic), warp::Rejection> { - let (block, execution_optimistic) = block_id.blinded_block(&chain)?; +) -> Result<(Option>, ExecutionOptimistic, bool), warp::Rejection> { + let (block, execution_optimistic, finalized) = block_id.blinded_block(&chain)?; let mut state = get_state_before_applying_block(chain.clone(), &block)?; @@ -44,7 +44,7 @@ pub fn compute_sync_committee_rewards( ) }; - Ok((data, execution_optimistic)) + Ok((data, execution_optimistic, finalized)) } pub fn get_state_before_applying_block( diff --git a/beacon_node/http_api/src/validator_inclusion.rs b/beacon_node/http_api/src/validator_inclusion.rs index 917e85e649..f22ced1e69 100644 --- a/beacon_node/http_api/src/validator_inclusion.rs +++ b/beacon_node/http_api/src/validator_inclusion.rs @@ -18,7 +18,7 @@ fn end_of_epoch_state( let target_slot = epoch.end_slot(T::EthSpec::slots_per_epoch()); // The execution status is not returned, any functions which rely upon this method might return // optimistic information without explicitly declaring so. - let (state, _execution_status) = StateId::from_slot(target_slot).state(chain)?; + let (state, _execution_status, _finalized) = StateId::from_slot(target_slot).state(chain)?; Ok(state) } diff --git a/beacon_node/http_api/src/version.rs b/beacon_node/http_api/src/version.rs index e7fd8910b1..e01ff98220 100644 --- a/beacon_node/http_api/src/version.rs +++ b/beacon_node/http_api/src/version.rs @@ -1,9 +1,8 @@ +use crate::api_types::fork_versioned_response::ExecutionOptimisticFinalizedForkVersionedResponse; use crate::api_types::EndpointVersion; use eth2::CONSENSUS_VERSION_HEADER; use serde::Serialize; -use types::{ - ExecutionOptimisticForkVersionedResponse, ForkName, ForkVersionedResponse, InconsistentFork, -}; +use types::{ForkName, ForkVersionedResponse, InconsistentFork}; use warp::reply::{self, Reply, Response}; pub const V1: EndpointVersion = EndpointVersion(1); @@ -27,12 +26,13 @@ pub fn fork_versioned_response( }) } -pub fn execution_optimistic_fork_versioned_response( +pub fn execution_optimistic_finalized_fork_versioned_response( endpoint_version: EndpointVersion, fork_name: ForkName, execution_optimistic: bool, + finalized: bool, data: T, -) -> Result, warp::reject::Rejection> { +) -> Result, warp::reject::Rejection> { let fork_name = if endpoint_version == V1 { None } else if endpoint_version == V2 { @@ -40,9 +40,10 @@ pub fn execution_optimistic_fork_versioned_response( } else { return Err(unsupported_version_rejection(endpoint_version)); }; - Ok(ExecutionOptimisticForkVersionedResponse { + Ok(ExecutionOptimisticFinalizedForkVersionedResponse { version: fork_name, execution_optimistic: Some(execution_optimistic), + finalized: Some(finalized), data, }) } diff --git a/beacon_node/http_api/tests/tests.rs b/beacon_node/http_api/tests/tests.rs index 1112cc5ae2..2f1d5fd587 100644 --- a/beacon_node/http_api/tests/tests.rs +++ b/beacon_node/http_api/tests/tests.rs @@ -462,6 +462,264 @@ impl ApiTester { self } + // finalization tests + pub async fn test_beacon_states_root_finalized(self) -> Self { + for state_id in self.interesting_state_ids() { + let state_root = state_id.root(&self.chain); + let state = state_id.state(&self.chain); + + // if .root or .state fail, skip the test. those would be errors outside the scope + // of this test, here we're testing the finalized field assuming the call to .is_finalized_state + // occurs after the state_root and state calls, and that the state_root and state calls + // were correct. + if state_root.is_err() || state.is_err() { + continue; + } + + // now that we know the state is valid, we can unwrap() everything we need + let result = self + .client + .get_beacon_states_root(state_id.0) + .await + .unwrap() + .unwrap() + .finalized + .unwrap(); + + let (state_root, _, _) = state_root.unwrap(); + let (state, _, _) = state.unwrap(); + let state_slot = state.slot(); + let expected = self + .chain + .is_finalized_state(&state_root, state_slot) + .unwrap(); + + assert_eq!(result, expected, "{:?}", state_id); + } + + self + } + + pub async fn test_beacon_states_fork_finalized(self) -> Self { + for state_id in self.interesting_state_ids() { + let state_root = state_id.root(&self.chain); + let state = state_id.state(&self.chain); + + // if .root or .state fail, skip the test. those would be errors outside the scope + // of this test, here we're testing the finalized field assuming the call to .is_finalized_state + // occurs after the state_root and state calls, and that the state_root and state calls + // were correct. + if state_root.is_err() || state.is_err() { + continue; + } + + // now that we know the state is valid, we can unwrap() everything we need + let result = self + .client + .get_beacon_states_fork(state_id.0) + .await + .unwrap() + .unwrap() + .finalized + .unwrap(); + + let (state_root, _, _) = state_root.unwrap(); + let (state, _, _) = state.unwrap(); + let state_slot = state.slot(); + let expected = self + .chain + .is_finalized_state(&state_root, state_slot) + .unwrap(); + + assert_eq!(result, expected, "{:?}", state_id); + } + + self + } + + pub async fn test_beacon_states_finality_checkpoints_finalized(self) -> Self { + for state_id in self.interesting_state_ids() { + let state_root = state_id.root(&self.chain); + let state = state_id.state(&self.chain); + + // if .root or .state fail, skip the test. those would be errors outside the scope + // of this test, here we're testing the finalized field assuming the call to .is_finalized_state + // occurs after the state_root and state calls, and that the state_root and state calls + // were correct. + if state_root.is_err() || state.is_err() { + continue; + } + + // now that we know the state is valid, we can unwrap() everything we need + let result = self + .client + .get_beacon_states_finality_checkpoints(state_id.0) + .await + .unwrap() + .unwrap() + .finalized + .unwrap(); + + let (state_root, _, _) = state_root.unwrap(); + let (state, _, _) = state.unwrap(); + let state_slot = state.slot(); + let expected = self + .chain + .is_finalized_state(&state_root, state_slot) + .unwrap(); + + assert_eq!(result, expected, "{:?}", state_id); + } + + self + } + + pub async fn test_beacon_headers_block_id_finalized(self) -> Self { + for block_id in self.interesting_block_ids() { + let block_root = block_id.root(&self.chain); + let block = block_id.full_block(&self.chain).await; + + // if .root or .state fail, skip the test. those would be errors outside the scope + // of this test, here we're testing the finalized field assuming the call to .is_finalized_state + // occurs after the state_root and state calls, and that the state_root and state calls + // were correct. + if block_root.is_err() || block.is_err() { + continue; + } + + // now that we know the block is valid, we can unwrap() everything we need + let result = self + .client + .get_beacon_headers_block_id(block_id.0) + .await + .unwrap() + .unwrap() + .finalized + .unwrap(); + + let (block_root, _, _) = block_root.unwrap(); + let (block, _, _) = block.unwrap(); + let block_slot = block.slot(); + let expected = self + .chain + .is_finalized_block(&block_root, block_slot) + .unwrap(); + + assert_eq!(result, expected, "{:?}", block_id); + } + + self + } + + pub async fn test_beacon_blocks_finalized(self) -> Self { + for block_id in self.interesting_block_ids() { + let block_root = block_id.root(&self.chain); + let block = block_id.full_block(&self.chain).await; + + // if .root or .full_block fail, skip the test. those would be errors outside the scope + // of this test, here we're testing the finalized field assuming the call to .is_finalized_block + // occurs after those calls, and that they were correct. + if block_root.is_err() || block.is_err() { + continue; + } + + // now that we know the block is valid, we can unwrap() everything we need + let result = self + .client + .get_beacon_blocks::(block_id.0) + .await + .unwrap() + .unwrap() + .finalized + .unwrap(); + + let (block_root, _, _) = block_root.unwrap(); + let (block, _, _) = block.unwrap(); + let block_slot = block.slot(); + let expected = self + .chain + .is_finalized_block(&block_root, block_slot) + .unwrap(); + + assert_eq!(result, expected, "{:?}", block_id); + } + + self + } + + pub async fn test_beacon_blinded_blocks_finalized(self) -> Self { + for block_id in self.interesting_block_ids() { + let block_root = block_id.root(&self.chain); + let block = block_id.full_block(&self.chain).await; + + // if .root or .full_block fail, skip the test. those would be errors outside the scope + // of this test, here we're testing the finalized field assuming the call to .is_finalized_block + // occurs after those calls, and that they were correct. + if block_root.is_err() || block.is_err() { + continue; + } + + // now that we know the block is valid, we can unwrap() everything we need + let result = self + .client + .get_beacon_blinded_blocks::(block_id.0) + .await + .unwrap() + .unwrap() + .finalized + .unwrap(); + + let (block_root, _, _) = block_root.unwrap(); + let (block, _, _) = block.unwrap(); + let block_slot = block.slot(); + let expected = self + .chain + .is_finalized_block(&block_root, block_slot) + .unwrap(); + + assert_eq!(result, expected, "{:?}", block_id); + } + + self + } + + pub async fn test_debug_beacon_states_finalized(self) -> Self { + for state_id in self.interesting_state_ids() { + let state_root = state_id.root(&self.chain); + let state = state_id.state(&self.chain); + + // if .root or .state fail, skip the test. those would be errors outside the scope + // of this test, here we're testing the finalized field assuming the call to .is_finalized_state + // occurs after the state_root and state calls, and that the state_root and state calls + // were correct. + if state_root.is_err() || state.is_err() { + continue; + } + + // now that we know the state is valid, we can unwrap() everything we need + let result = self + .client + .get_debug_beacon_states::(state_id.0) + .await + .unwrap() + .unwrap() + .finalized + .unwrap(); + + let (state_root, _, _) = state_root.unwrap(); + let (state, _, _) = state.unwrap(); + let state_slot = state.slot(); + let expected = self + .chain + .is_finalized_state(&state_root, state_slot) + .unwrap(); + + assert_eq!(result, expected, "{:?}", state_id); + } + + self + } + pub async fn test_beacon_states_root(self) -> Self { for state_id in self.interesting_state_ids() { let result = self @@ -474,7 +732,7 @@ impl ApiTester { let expected = state_id .root(&self.chain) .ok() - .map(|(root, _execution_optimistic)| root); + .map(|(root, _execution_optimistic, _finalized)| root); assert_eq!(result, expected, "{:?}", state_id); } @@ -508,15 +766,13 @@ impl ApiTester { .unwrap() .map(|res| res.data); - let expected = - state_id - .state(&self.chain) - .ok() - .map(|(state, _execution_optimistic)| FinalityCheckpointsData { - previous_justified: state.previous_justified_checkpoint(), - current_justified: state.current_justified_checkpoint(), - finalized: state.finalized_checkpoint(), - }); + let expected = state_id.state(&self.chain).ok().map( + |(state, _execution_optimistic, _finalized)| FinalityCheckpointsData { + previous_justified: state.previous_justified_checkpoint(), + current_justified: state.current_justified_checkpoint(), + finalized: state.finalized_checkpoint(), + }, + ); assert_eq!(result, expected, "{:?}", state_id); } @@ -529,7 +785,9 @@ impl ApiTester { for validator_indices in self.interesting_validator_indices() { let state_opt = state_id.state(&self.chain).ok(); let validators: Vec = match state_opt.as_ref() { - Some((state, _execution_optimistic)) => state.validators().clone().into(), + Some((state, _execution_optimistic, _finalized)) => { + state.validators().clone().into() + } None => vec![], }; let validator_index_ids = validator_indices @@ -568,7 +826,7 @@ impl ApiTester { .unwrap() .map(|res| res.data); - let expected = state_opt.map(|(state, _execution_optimistic)| { + let expected = state_opt.map(|(state, _execution_optimistic, _finalized)| { let mut validators = Vec::with_capacity(validator_indices.len()); for i in validator_indices { @@ -598,7 +856,7 @@ impl ApiTester { let state_opt = state_id .state(&self.chain) .ok() - .map(|(state, _execution_optimistic)| state); + .map(|(state, _execution_optimistic, _finalized)| state); let validators: Vec = match state_opt.as_ref() { Some(state) => state.validators().clone().into(), None => vec![], @@ -688,7 +946,7 @@ impl ApiTester { let state_opt = state_id .state(&self.chain) .ok() - .map(|(state, _execution_optimistic)| state); + .map(|(state, _execution_optimistic, _finalized)| state); let validators = match state_opt.as_ref() { Some(state) => state.validators().clone().into(), None => vec![], @@ -743,7 +1001,7 @@ impl ApiTester { let mut state_opt = state_id .state(&self.chain) .ok() - .map(|(state, _execution_optimistic)| state); + .map(|(state, _execution_optimistic, _finalized)| state); let epoch_opt = state_opt.as_ref().map(|state| state.current_epoch()); let results = self @@ -790,7 +1048,7 @@ impl ApiTester { let mut state_opt = state_id .state(&self.chain) .ok() - .map(|(state, _execution_optimistic)| state); + .map(|(state, _execution_optimistic, _finalized)| state); let epoch_opt = state_opt.as_ref().map(|state| state.current_epoch()); let result = self @@ -900,7 +1158,7 @@ impl ApiTester { let block_root_opt = block_id .root(&self.chain) .ok() - .map(|(root, _execution_optimistic)| root); + .map(|(root, _execution_optimistic, _finalized)| root); if let CoreBlockId::Slot(slot) = block_id.0 { if block_root_opt.is_none() { @@ -914,7 +1172,7 @@ impl ApiTester { .full_block(&self.chain) .await .ok() - .map(|(block, _execution_optimistic)| block); + .map(|(block, _execution_optimistic, _finalized)| block); if block_opt.is_none() && result.is_none() { continue; @@ -960,7 +1218,7 @@ impl ApiTester { let expected = block_id .root(&self.chain) .ok() - .map(|(root, _execution_optimistic)| root); + .map(|(root, _execution_optimistic, _finalized)| root); if let CoreBlockId::Slot(slot) = block_id.0 { if expected.is_none() { assert!(SKIPPED_SLOTS.contains(&slot.as_u64())); @@ -1007,7 +1265,7 @@ impl ApiTester { .full_block(&self.chain) .await .ok() - .map(|(block, _execution_optimistic)| block); + .map(|(block, _execution_optimistic, _finalized)| block); if let CoreBlockId::Slot(slot) = block_id.0 { if expected.is_none() { @@ -1091,7 +1349,7 @@ impl ApiTester { let expected = block_id .blinded_block(&self.chain) .ok() - .map(|(block, _execution_optimistic)| block); + .map(|(block, _execution_optimistic, _finalized)| block); if let CoreBlockId::Slot(slot) = block_id.0 { if expected.is_none() { @@ -1172,7 +1430,7 @@ impl ApiTester { .map(|res| res.data); let expected = block_id.full_block(&self.chain).await.ok().map( - |(block, _execution_optimistic)| { + |(block, _execution_optimistic, _finalized)| { block.message().body().attestations().clone().into() }, ); @@ -1593,7 +1851,7 @@ impl ApiTester { let mut expected = state_id .state(&self.chain) .ok() - .map(|(state, _execution_optimistic)| state); + .map(|(state, _execution_optimistic, _finalized)| state); expected.as_mut().map(|state| state.drop_all_caches()); if let (Some(json), Some(expected)) = (&result_json, &expected) { @@ -3657,7 +3915,7 @@ impl ApiTester { let mut expected = state_id .state(&self.chain) .ok() - .map(|(state, _execution_optimistic)| state); + .map(|(state, _execution_optimistic, _finalized)| state); expected.as_mut().map(|state| state.drop_all_caches()); assert_eq!(result, expected, "{:?}", state_id); @@ -4065,6 +4323,20 @@ async fn beacon_get() { .await .test_beacon_genesis() .await + .test_beacon_states_root_finalized() + .await + .test_beacon_states_fork_finalized() + .await + .test_beacon_states_finality_checkpoints_finalized() + .await + .test_beacon_headers_block_id_finalized() + .await + .test_beacon_blocks_finalized::() + .await + .test_beacon_blinded_blocks_finalized::() + .await + .test_debug_beacon_states_finalized() + .await .test_beacon_states_root() .await .test_beacon_states_fork() diff --git a/beacon_node/store/src/hot_cold_store.rs b/beacon_node/store/src/hot_cold_store.rs index 3255006b55..02608f9a0b 100644 --- a/beacon_node/store/src/hot_cold_store.rs +++ b/beacon_node/store/src/hot_cold_store.rs @@ -1741,7 +1741,7 @@ fn no_state_root_iter() -> Option Result>, Error> { + ) -> Result>, Error> { let mut path = self.eth_path(V1)?; path.path_segments_mut() @@ -357,7 +358,7 @@ impl BeaconNodeHttpClient { pub async fn get_beacon_states_fork( &self, state_id: StateId, - ) -> Result>, Error> { + ) -> Result>, Error> { let mut path = self.eth_path(V1)?; path.path_segments_mut() @@ -376,7 +377,7 @@ impl BeaconNodeHttpClient { pub async fn get_beacon_states_finality_checkpoints( &self, state_id: StateId, - ) -> Result>, Error> { + ) -> Result>, Error> { let mut path = self.eth_path(V1)?; path.path_segments_mut() @@ -396,7 +397,8 @@ impl BeaconNodeHttpClient { &self, state_id: StateId, ids: Option<&[ValidatorId]>, - ) -> Result>>, Error> { + ) -> Result>>, Error> + { let mut path = self.eth_path(V1)?; path.path_segments_mut() @@ -426,7 +428,7 @@ impl BeaconNodeHttpClient { state_id: StateId, ids: Option<&[ValidatorId]>, statuses: Option<&[ValidatorStatus]>, - ) -> Result>>, Error> { + ) -> Result>>, Error> { let mut path = self.eth_path(V1)?; path.path_segments_mut() @@ -466,7 +468,7 @@ impl BeaconNodeHttpClient { slot: Option, index: Option, epoch: Option, - ) -> Result>>, Error> { + ) -> Result>>, Error> { let mut path = self.eth_path(V1)?; path.path_segments_mut() @@ -499,7 +501,7 @@ impl BeaconNodeHttpClient { &self, state_id: StateId, epoch: Option, - ) -> Result, Error> { + ) -> Result, Error> { let mut path = self.eth_path(V1)?; path.path_segments_mut() @@ -522,7 +524,7 @@ impl BeaconNodeHttpClient { &self, state_id: StateId, epoch: Option, - ) -> Result>, Error> { + ) -> Result>, Error> { let mut path = self.eth_path(V1)?; path.path_segments_mut() @@ -547,7 +549,7 @@ impl BeaconNodeHttpClient { &self, state_id: StateId, validator_id: &ValidatorId, - ) -> Result>, Error> { + ) -> Result>, Error> { let mut path = self.eth_path(V1)?; path.path_segments_mut() @@ -568,7 +570,7 @@ impl BeaconNodeHttpClient { &self, slot: Option, parent_root: Option, - ) -> Result>>, Error> { + ) -> Result>>, Error> { let mut path = self.eth_path(V1)?; path.path_segments_mut() @@ -595,7 +597,7 @@ impl BeaconNodeHttpClient { pub async fn get_beacon_headers_block_id( &self, block_id: BlockId, - ) -> Result>, Error> { + ) -> Result>, Error> { let mut path = self.eth_path(V1)?; path.path_segments_mut() @@ -675,7 +677,10 @@ impl BeaconNodeHttpClient { pub async fn get_beacon_blocks( &self, block_id: BlockId, - ) -> Result>>, Error> { + ) -> Result< + Option>>, + Error, + > { let path = self.get_beacon_blocks_path(block_id)?; let response = match self.get_response(path, |b| b).await.optional()? { Some(res) => res, @@ -691,8 +696,10 @@ impl BeaconNodeHttpClient { pub async fn get_beacon_blinded_blocks( &self, block_id: BlockId, - ) -> Result>>, Error> - { + ) -> Result< + Option>>, + Error, + > { let path = self.get_beacon_blinded_blocks_path(block_id)?; let response = match self.get_response(path, |b| b).await.optional()? { Some(res) => res, @@ -760,7 +767,7 @@ impl BeaconNodeHttpClient { pub async fn get_beacon_blocks_root( &self, block_id: BlockId, - ) -> Result>, Error> { + ) -> Result>, Error> { let mut path = self.eth_path(V1)?; path.path_segments_mut() @@ -779,7 +786,7 @@ impl BeaconNodeHttpClient { pub async fn get_beacon_blocks_attestations( &self, block_id: BlockId, - ) -> Result>>>, Error> { + ) -> Result>>>, Error> { let mut path = self.eth_path(V1)?; path.path_segments_mut() @@ -1267,7 +1274,8 @@ impl BeaconNodeHttpClient { pub async fn get_debug_beacon_states( &self, state_id: StateId, - ) -> Result>>, Error> { + ) -> Result>>, Error> + { let path = self.get_debug_beacon_states_path(state_id)?; self.get_opt(path).await } @@ -1661,7 +1669,7 @@ impl BeaconNodeHttpClient { &self, epoch: Epoch, indices: &[u64], - ) -> Result>, Error> { + ) -> Result>, Error> { let mut path = self.eth_path(V1)?; path.path_segments_mut() diff --git a/common/eth2/src/types.rs b/common/eth2/src/types.rs index 0fddaaab20..97c7ff34e1 100644 --- a/common/eth2/src/types.rs +++ b/common/eth2/src/types.rs @@ -200,6 +200,14 @@ pub struct ExecutionOptimisticResponse { + pub execution_optimistic: Option, + pub finalized: Option, + pub data: T, +} + #[derive(Debug, PartialEq, Clone, Serialize, Deserialize)] #[serde(bound = "T: Serialize + serde::de::DeserializeOwned")] pub struct GenericResponse { @@ -222,6 +230,18 @@ impl GenericResponse { data: self.data, } } + + pub fn add_execution_optimistic_finalized( + self, + execution_optimistic: bool, + finalized: bool, + ) -> ExecutionOptimisticFinalizedResponse { + ExecutionOptimisticFinalizedResponse { + execution_optimistic: Some(execution_optimistic), + finalized: Some(finalized), + data: self.data, + } + } } #[derive(Debug, PartialEq, Clone, Serialize)] diff --git a/consensus/types/src/fork_versioned_response.rs b/consensus/types/src/fork_versioned_response.rs index 07ff40b27e..45df151eb4 100644 --- a/consensus/types/src/fork_versioned_response.rs +++ b/consensus/types/src/fork_versioned_response.rs @@ -5,6 +5,46 @@ use serde_json::value::Value; use std::sync::Arc; // Deserialize is only implemented for types that implement ForkVersionDeserialize +#[derive(Debug, PartialEq, Clone, Serialize)] +pub struct ExecutionOptimisticFinalizedForkVersionedResponse { + #[serde(skip_serializing_if = "Option::is_none")] + pub version: Option, + pub execution_optimistic: Option, + pub finalized: Option, + pub data: T, +} + +impl<'de, F> serde::Deserialize<'de> for ExecutionOptimisticFinalizedForkVersionedResponse +where + F: ForkVersionDeserialize, +{ + fn deserialize(deserializer: D) -> Result + where + D: Deserializer<'de>, + { + #[derive(Deserialize)] + struct Helper { + version: Option, + execution_optimistic: Option, + finalized: Option, + data: serde_json::Value, + } + + let helper = Helper::deserialize(deserializer)?; + let data = match helper.version { + Some(fork_name) => F::deserialize_by_fork::<'de, D>(helper.data, fork_name)?, + None => serde_json::from_value(helper.data).map_err(serde::de::Error::custom)?, + }; + + Ok(ExecutionOptimisticFinalizedForkVersionedResponse { + version: helper.version, + execution_optimistic: helper.execution_optimistic, + finalized: helper.finalized, + data, + }) + } +} + #[derive(Debug, PartialEq, Clone, Serialize)] pub struct ExecutionOptimisticForkVersionedResponse { #[serde(skip_serializing_if = "Option::is_none")] From d351cc8d8d138a93c6c0b28b1bc128325ce9c662 Mon Sep 17 00:00:00 2001 From: Jimmy Chen Date: Thu, 30 Mar 2023 06:08:38 +0000 Subject: [PATCH 09/56] Test failing CI tests due to port conflicts (#4134) ## Issue Addressed #4127. PR to test port conflicts in CI tests . ## Proposed Changes See issue for more details, potential solution could be adding a cache bound by time to the `unused_port` function. --- Cargo.lock | 5 +++++ common/unused_port/Cargo.toml | 3 +++ common/unused_port/src/lib.rs | 27 ++++++++++++++++++++++++++- 3 files changed, 34 insertions(+), 1 deletion(-) diff --git a/Cargo.lock b/Cargo.lock index c7cdf212bc..214f3baa35 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -8546,6 +8546,11 @@ checksum = "a156c684c91ea7d62626509bce3cb4e1d9ed5c4d978f7b4352658f96a4c26b4a" [[package]] name = "unused_port" version = "0.1.0" +dependencies = [ + "lazy_static", + "lru_cache", + "parking_lot 0.12.1", +] [[package]] name = "url" diff --git a/common/unused_port/Cargo.toml b/common/unused_port/Cargo.toml index 06c1ca8f58..2dd041ff07 100644 --- a/common/unused_port/Cargo.toml +++ b/common/unused_port/Cargo.toml @@ -6,3 +6,6 @@ edition = "2021" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [dependencies] +lru_cache = { path = "../lru_cache" } +lazy_static = "1.4.0" +parking_lot = "0.12.0" diff --git a/common/unused_port/src/lib.rs b/common/unused_port/src/lib.rs index a5d0817211..386f08a739 100644 --- a/common/unused_port/src/lib.rs +++ b/common/unused_port/src/lib.rs @@ -1,4 +1,8 @@ -use std::net::{TcpListener, UdpSocket}; +use lazy_static::lazy_static; +use lru_cache::LRUTimeCache; +use parking_lot::Mutex; +use std::net::{SocketAddr, TcpListener, UdpSocket}; +use std::time::Duration; #[derive(Copy, Clone)] pub enum Transport { @@ -12,6 +16,13 @@ pub enum IpVersion { Ipv6, } +pub const CACHED_PORTS_TTL: Duration = Duration::from_secs(300); + +lazy_static! { + static ref FOUND_PORTS_CACHE: Mutex> = + Mutex::new(LRUTimeCache::new(CACHED_PORTS_TTL)); +} + /// A convenience wrapper over [`zero_port`]. pub fn unused_tcp4_port() -> Result { zero_port(Transport::Tcp, IpVersion::Ipv4) @@ -48,6 +59,20 @@ pub fn zero_port(transport: Transport, ipv: IpVersion) -> Result { IpVersion::Ipv6 => std::net::Ipv6Addr::LOCALHOST.into(), }; let socket_addr = std::net::SocketAddr::new(localhost, 0); + let mut unused_port: u16; + loop { + unused_port = find_unused_port(transport, socket_addr)?; + let mut cache_lock = FOUND_PORTS_CACHE.lock(); + if !cache_lock.contains(&unused_port) { + cache_lock.insert(unused_port); + break; + } + } + + Ok(unused_port) +} + +fn find_unused_port(transport: Transport, socket_addr: SocketAddr) -> Result { let local_addr = match transport { Transport::Tcp => { let listener = TcpListener::bind(socket_addr).map_err(|e| { From 56911231538da05248d3672bef5d772ab987fc8b Mon Sep 17 00:00:00 2001 From: int88 Date: Thu, 30 Mar 2023 10:14:07 +0000 Subject: [PATCH 10/56] update README of local_testnet (#4114) ## Issue Addressed NA ## Proposed Changes update the descriptions of README in `scripts/local_testnet`. ## Additional Info NA --- scripts/local_testnet/README.md | 2 +- scripts/local_testnet/start_local_testnet.sh | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/scripts/local_testnet/README.md b/scripts/local_testnet/README.md index c9fb387681..c4050ac934 100644 --- a/scripts/local_testnet/README.md +++ b/scripts/local_testnet/README.md @@ -20,7 +20,7 @@ Modify `vars.env` as desired. Start a local eth1 ganache server plus boot node along with `BN_COUNT` number of beacon nodes and `VC_COUNT` validator clients. -The `start_local_testnet.sh` script takes three options `-v VC_COUNT`, `-d DEBUG_LEVEL` and `-h` for help. +The `start_local_testnet.sh` script takes four options `-v VC_COUNT`, `-d DEBUG_LEVEL`, `-p` to enable builder proposals and `-h` for help. The options may be in any order or absent in which case they take the default value specified. - VC_COUNT: the number of validator clients to create, default: `BN_COUNT` - DEBUG_LEVEL: one of { error, warn, info, debug, trace }, default: `info` diff --git a/scripts/local_testnet/start_local_testnet.sh b/scripts/local_testnet/start_local_testnet.sh index dcc0a5382a..e3aba5c3ad 100755 --- a/scripts/local_testnet/start_local_testnet.sh +++ b/scripts/local_testnet/start_local_testnet.sh @@ -28,7 +28,7 @@ while getopts "v:d:ph" flag; do echo "Options:" echo " -v: VC_COUNT default: $VC_COUNT" echo " -d: DEBUG_LEVEL default: info" - echo " -p: enable private tx proposals" + echo " -p: enable builder proposals" echo " -h: this help" exit ;; From c5383e393acee152e92641ce4699d05913953e70 Mon Sep 17 00:00:00 2001 From: chonghe Date: Fri, 31 Mar 2023 05:00:50 +0000 Subject: [PATCH 11/56] Update database-migrations.md (#4149) ## Issue Addressed Update the database-migrations to include v4.0.1 for database version v16: ## Proposed Changes Update the table by adding a row ## Additional Info Please provide any additional information. For example, future considerations or information useful for reviewers. --- book/src/database-migrations.md | 1 + 1 file changed, 1 insertion(+) diff --git a/book/src/database-migrations.md b/book/src/database-migrations.md index ef7e95cc7a..d2b7b518d7 100644 --- a/book/src/database-migrations.md +++ b/book/src/database-migrations.md @@ -28,6 +28,7 @@ validator client or the slasher**. | v3.3.0 | Nov 2022 | v13 | yes | | v3.4.0 | Jan 2023 | v13 | yes | | v3.5.0 | Feb 2023 | v15 | yes before Capella | +| v4.0.1 | Mar 2023 | v16 | yes before Capella | > **Note**: All point releases (e.g. v2.3.1) are schema-compatible with the prior minor release > (e.g. v2.3.0). From 2de34510114da8c817c80c201dcf7a1610d61336 Mon Sep 17 00:00:00 2001 From: Jimmy Chen Date: Mon, 3 Apr 2023 03:02:55 +0000 Subject: [PATCH 12/56] Rate limiting backfill sync (#3936) ## Issue Addressed #3212 ## Proposed Changes - Introduce a new `rate_limiting_backfill_queue` - any new inbound backfill work events gets immediately sent to this FIFO queue **without any processing** - Spawn a `backfill_scheduler` routine that pops a backfill event from the FIFO queue at specified intervals (currently halfway through a slot, or at 6s after slot start for 12s slots) and sends the event to `BeaconProcessor` via a `scheduled_backfill_work_tx` channel - This channel gets polled last in the `InboundEvents`, and work event received is wrapped in a `InboundEvent::ScheduledBackfillWork` enum variant, which gets processed immediately or queued by the `BeaconProcessor` (existing logic applies from here) Diagram comparing backfill processing with / without rate-limiting: https://github.com/sigp/lighthouse/issues/3212#issuecomment-1386249922 See this comment for @paulhauner's explanation and solution: https://github.com/sigp/lighthouse/issues/3212#issuecomment-1384674956 ## Additional Info I've compared this branch (with backfill processing rate limited to to 1 and 3 batches per slot) against the latest stable version. The CPU usage during backfill sync is reduced by ~5% - 20%, more details on this page: https://hackmd.io/@jimmygchen/SJuVpJL3j The above testing is done on Goerli (as I don't currently have hardware for Mainnet), I'm guessing the differences are likely to be bigger on mainnet due to block size. ### TODOs - [x] Experiment with processing multiple batches per slot. (need to think about how to do this for different slot durations) - [x] Add option to disable rate-limiting, enabed by default. - [x] (No longer required now we're reusing the reprocessing queue) Complete the `backfill_scheduler` task when backfill sync is completed or not required --- beacon_node/beacon_chain/src/beacon_chain.rs | 4 +- beacon_node/beacon_chain/src/chain_config.rs | 3 + .../network/src/beacon_processor/mod.rs | 84 ++++++-- .../network/src/beacon_processor/tests.rs | 65 +++++- .../work_reprocessing_queue.rs | 204 ++++++++++++++++++ beacon_node/src/cli.rs | 8 + beacon_node/src/config.rs | 4 + common/slot_clock/src/lib.rs | 17 +- lighthouse/tests/beacon_node.rs | 13 ++ testing/ef_tests/src/cases/fork_choice.rs | 2 +- 10 files changed, 380 insertions(+), 24 deletions(-) diff --git a/beacon_node/beacon_chain/src/beacon_chain.rs b/beacon_node/beacon_chain/src/beacon_chain.rs index 11eda4dead..d3c391e4ed 100644 --- a/beacon_node/beacon_chain/src/beacon_chain.rs +++ b/beacon_node/beacon_chain/src/beacon_chain.rs @@ -2893,7 +2893,7 @@ impl BeaconChain { metrics::start_timer(&metrics::FORK_CHOICE_PROCESS_BLOCK_TIMES); let block_delay = self .slot_clock - .seconds_from_current_slot_start(self.spec.seconds_per_slot) + .seconds_from_current_slot_start() .ok_or(Error::UnableToComputeTimeAtSlot)?; fork_choice @@ -3746,7 +3746,7 @@ impl BeaconChain { let slot_delay = self .slot_clock - .seconds_from_current_slot_start(self.spec.seconds_per_slot) + .seconds_from_current_slot_start() .or_else(|| { warn!( self.log, diff --git a/beacon_node/beacon_chain/src/chain_config.rs b/beacon_node/beacon_chain/src/chain_config.rs index 1a53942562..c72c3d2cd4 100644 --- a/beacon_node/beacon_chain/src/chain_config.rs +++ b/beacon_node/beacon_chain/src/chain_config.rs @@ -68,6 +68,8 @@ pub struct ChainConfig { /// /// This is useful for block builders and testing. pub always_prepare_payload: bool, + /// Whether backfill sync processing should be rate-limited. + pub enable_backfill_rate_limiting: bool, } impl Default for ChainConfig { @@ -94,6 +96,7 @@ impl Default for ChainConfig { optimistic_finalized_sync: true, shuffling_cache_size: crate::shuffling_cache::DEFAULT_CACHE_SIZE, always_prepare_payload: false, + enable_backfill_rate_limiting: true, } } } diff --git a/beacon_node/network/src/beacon_processor/mod.rs b/beacon_node/network/src/beacon_processor/mod.rs index 61e3367e2f..9603205228 100644 --- a/beacon_node/network/src/beacon_processor/mod.rs +++ b/beacon_node/network/src/beacon_processor/mod.rs @@ -61,6 +61,7 @@ use std::time::Duration; use std::{cmp, collections::HashSet}; use task_executor::TaskExecutor; use tokio::sync::mpsc; +use tokio::sync::mpsc::error::TrySendError; use types::{ Attestation, AttesterSlashing, Hash256, LightClientFinalityUpdate, LightClientOptimisticUpdate, ProposerSlashing, SignedAggregateAndProof, SignedBeaconBlock, SignedBlsToExecutionChange, @@ -77,7 +78,9 @@ mod tests; mod work_reprocessing_queue; mod worker; -use crate::beacon_processor::work_reprocessing_queue::QueuedGossipBlock; +use crate::beacon_processor::work_reprocessing_queue::{ + QueuedBackfillBatch, QueuedGossipBlock, ReprocessQueueMessage, +}; pub use worker::{ChainSegmentProcessId, GossipAggregatePackage, GossipAttestationPackage}; /// The maximum size of the channel for work events to the `BeaconProcessor`. @@ -218,6 +221,7 @@ pub const GOSSIP_LIGHT_CLIENT_FINALITY_UPDATE: &str = "light_client_finality_upd pub const GOSSIP_LIGHT_CLIENT_OPTIMISTIC_UPDATE: &str = "light_client_optimistic_update"; pub const RPC_BLOCK: &str = "rpc_block"; pub const CHAIN_SEGMENT: &str = "chain_segment"; +pub const CHAIN_SEGMENT_BACKFILL: &str = "chain_segment_backfill"; pub const STATUS_PROCESSING: &str = "status_processing"; pub const BLOCKS_BY_RANGE_REQUEST: &str = "blocks_by_range_request"; pub const BLOCKS_BY_ROOTS_REQUEST: &str = "blocks_by_roots_request"; @@ -738,6 +742,9 @@ impl std::convert::From> for WorkEvent { seen_timestamp, }, }, + ReadyWork::BackfillSync(QueuedBackfillBatch { process_id, blocks }) => { + WorkEvent::chain_segment(process_id, blocks) + } } } } @@ -893,6 +900,10 @@ impl Work { Work::GossipLightClientFinalityUpdate { .. } => GOSSIP_LIGHT_CLIENT_FINALITY_UPDATE, Work::GossipLightClientOptimisticUpdate { .. } => GOSSIP_LIGHT_CLIENT_OPTIMISTIC_UPDATE, Work::RpcBlock { .. } => RPC_BLOCK, + Work::ChainSegment { + process_id: ChainSegmentProcessId::BackSyncBatchId { .. }, + .. + } => CHAIN_SEGMENT_BACKFILL, Work::ChainSegment { .. } => CHAIN_SEGMENT, Work::Status { .. } => STATUS_PROCESSING, Work::BlocksByRangeRequest { .. } => BLOCKS_BY_RANGE_REQUEST, @@ -1054,23 +1065,23 @@ impl BeaconProcessor { FifoQueue::new(MAX_BLS_TO_EXECUTION_CHANGE_QUEUE_LEN); let mut lcbootstrap_queue = FifoQueue::new(MAX_LIGHT_CLIENT_BOOTSTRAP_QUEUE_LEN); + + let chain = match self.beacon_chain.upgrade() { + Some(chain) => chain, + // No need to proceed any further if the beacon chain has been dropped, the client + // is shutting down. + None => return, + }; + // Channels for sending work to the re-process scheduler (`work_reprocessing_tx`) and to // receive them back once they are ready (`ready_work_rx`). let (ready_work_tx, ready_work_rx) = mpsc::channel(MAX_SCHEDULED_WORK_QUEUE_LEN); - let work_reprocessing_tx = { - if let Some(chain) = self.beacon_chain.upgrade() { - spawn_reprocess_scheduler( - ready_work_tx, - &self.executor, - chain.slot_clock.clone(), - self.log.clone(), - ) - } else { - // No need to proceed any further if the beacon chain has been dropped, the client - // is shutting down. - return; - } - }; + let work_reprocessing_tx = spawn_reprocess_scheduler( + ready_work_tx, + &self.executor, + chain.slot_clock.clone(), + self.log.clone(), + ); let executor = self.executor.clone(); @@ -1083,12 +1094,55 @@ impl BeaconProcessor { reprocess_work_rx: ready_work_rx, }; + let enable_backfill_rate_limiting = chain.config.enable_backfill_rate_limiting; + loop { let work_event = match inbound_events.next().await { Some(InboundEvent::WorkerIdle) => { self.current_workers = self.current_workers.saturating_sub(1); None } + Some(InboundEvent::WorkEvent(event)) if enable_backfill_rate_limiting => { + match QueuedBackfillBatch::try_from(event) { + Ok(backfill_batch) => { + match work_reprocessing_tx + .try_send(ReprocessQueueMessage::BackfillSync(backfill_batch)) + { + Err(e) => { + warn!( + self.log, + "Unable to queue backfill work event. Will try to process now."; + "error" => %e + ); + match e { + TrySendError::Full(reprocess_queue_message) + | TrySendError::Closed(reprocess_queue_message) => { + match reprocess_queue_message { + ReprocessQueueMessage::BackfillSync( + backfill_batch, + ) => Some(backfill_batch.into()), + other => { + crit!( + self.log, + "Unexpected queue message type"; + "message_type" => other.as_ref() + ); + // This is an unhandled exception, drop the message. + continue; + } + } + } + } + } + Ok(..) => { + // backfill work sent to "reprocessing" queue. Process the next event. + continue; + } + } + } + Err(event) => Some(event), + } + } Some(InboundEvent::WorkEvent(event)) | Some(InboundEvent::ReprocessingWork(event)) => Some(event), None => { diff --git a/beacon_node/network/src/beacon_processor/tests.rs b/beacon_node/network/src/beacon_processor/tests.rs index eb66e434c9..b7c102ae11 100644 --- a/beacon_node/network/src/beacon_processor/tests.rs +++ b/beacon_node/network/src/beacon_processor/tests.rs @@ -9,7 +9,7 @@ use crate::{service::NetworkMessage, sync::SyncMessage}; use beacon_chain::test_utils::{ AttestationStrategy, BeaconChainHarness, BlockStrategy, EphemeralHarnessType, }; -use beacon_chain::{BeaconChain, MAXIMUM_GOSSIP_CLOCK_DISPARITY}; +use beacon_chain::{BeaconChain, ChainConfig, MAXIMUM_GOSSIP_CLOCK_DISPARITY}; use lighthouse_network::{ discv5::enr::{CombinedKey, EnrBuilder}, rpc::methods::{MetaData, MetaDataV2}, @@ -23,8 +23,8 @@ use std::sync::Arc; use std::time::Duration; use tokio::sync::mpsc; use types::{ - Attestation, AttesterSlashing, EthSpec, MainnetEthSpec, ProposerSlashing, SignedBeaconBlock, - SignedVoluntaryExit, SubnetId, + Attestation, AttesterSlashing, Epoch, EthSpec, MainnetEthSpec, ProposerSlashing, + SignedBeaconBlock, SignedVoluntaryExit, SubnetId, }; type E = MainnetEthSpec; @@ -70,6 +70,10 @@ impl Drop for TestRig { impl TestRig { pub async fn new(chain_length: u64) -> Self { + Self::new_with_chain_config(chain_length, ChainConfig::default()).await + } + + pub async fn new_with_chain_config(chain_length: u64, chain_config: ChainConfig) -> Self { // This allows for testing voluntary exits without building out a massive chain. let mut spec = E::default_spec(); spec.shard_committee_period = 2; @@ -78,6 +82,7 @@ impl TestRig { .spec(spec) .deterministic_keypairs(VALIDATOR_COUNT) .fresh_ephemeral_store() + .chain_config(chain_config) .build(); harness.advance_slot(); @@ -261,6 +266,14 @@ impl TestRig { self.beacon_processor_tx.try_send(event).unwrap(); } + pub fn enqueue_backfill_batch(&self) { + let event = WorkEvent::chain_segment( + ChainSegmentProcessId::BackSyncBatchId(Epoch::default()), + Vec::default(), + ); + self.beacon_processor_tx.try_send(event).unwrap(); + } + pub fn enqueue_unaggregated_attestation(&self) { let (attestation, subnet_id) = self.attestations.first().unwrap().clone(); self.beacon_processor_tx @@ -873,3 +886,49 @@ async fn test_rpc_block_reprocessing() { // cache handle was dropped. assert_eq!(next_block_root, rig.head_root()); } + +/// Ensure that backfill batches get rate-limited and processing is scheduled at specified intervals. +#[tokio::test] +async fn test_backfill_sync_processing() { + let mut rig = TestRig::new(SMALL_CHAIN).await; + // Note: to verify the exact event times in an integration test is not straight forward here + // (not straight forward to manipulate `TestingSlotClock` due to cloning of `SlotClock` in code) + // and makes the test very slow, hence timing calculation is unit tested separately in + // `work_reprocessing_queue`. + for _ in 0..1 { + rig.enqueue_backfill_batch(); + // ensure queued batch is not processed until later + rig.assert_no_events_for(Duration::from_millis(100)).await; + // A new batch should be processed within a slot. + rig.assert_event_journal_with_timeout( + &[CHAIN_SEGMENT_BACKFILL, WORKER_FREED, NOTHING_TO_DO], + rig.chain.slot_clock.slot_duration(), + ) + .await; + } +} + +/// Ensure that backfill batches get processed as fast as they can when rate-limiting is disabled. +#[tokio::test] +async fn test_backfill_sync_processing_rate_limiting_disabled() { + let chain_config = ChainConfig { + enable_backfill_rate_limiting: false, + ..Default::default() + }; + let mut rig = TestRig::new_with_chain_config(SMALL_CHAIN, chain_config).await; + + for _ in 0..3 { + rig.enqueue_backfill_batch(); + } + + // ensure all batches are processed + rig.assert_event_journal_with_timeout( + &[ + CHAIN_SEGMENT_BACKFILL, + CHAIN_SEGMENT_BACKFILL, + CHAIN_SEGMENT_BACKFILL, + ], + Duration::from_millis(100), + ) + .await; +} diff --git a/beacon_node/network/src/beacon_processor/work_reprocessing_queue.rs b/beacon_node/network/src/beacon_processor/work_reprocessing_queue.rs index 21fc2b6416..9f04d99725 100644 --- a/beacon_node/network/src/beacon_processor/work_reprocessing_queue.rs +++ b/beacon_node/network/src/beacon_processor/work_reprocessing_queue.rs @@ -11,21 +11,25 @@ //! Aggregated and unaggregated attestations that failed verification due to referencing an unknown //! block will be re-queued until their block is imported, or until they expire. use super::MAX_SCHEDULED_WORK_QUEUE_LEN; +use crate::beacon_processor::{ChainSegmentProcessId, Work, WorkEvent}; use crate::metrics; use crate::sync::manager::BlockProcessType; use beacon_chain::{BeaconChainTypes, GossipVerifiedBlock, MAXIMUM_GOSSIP_CLOCK_DISPARITY}; use fnv::FnvHashMap; use futures::task::Poll; use futures::{Stream, StreamExt}; +use itertools::Itertools; use lighthouse_network::{MessageId, PeerId}; use logging::TimeLatch; use slog::{crit, debug, error, trace, warn, Logger}; use slot_clock::SlotClock; use std::collections::{HashMap, HashSet}; +use std::future::Future; use std::pin::Pin; use std::sync::Arc; use std::task::Context; use std::time::Duration; +use strum::AsRefStr; use task_executor::TaskExecutor; use tokio::sync::mpsc::{self, Receiver, Sender}; use tokio::time::error::Error as TimeError; @@ -65,7 +69,21 @@ const MAXIMUM_QUEUED_ATTESTATIONS: usize = 16_384; /// How many light client updates we keep before new ones get dropped. const MAXIMUM_QUEUED_LIGHT_CLIENT_UPDATES: usize = 128; +// Process backfill batch 50%, 60%, 80% through each slot. +// +// Note: use caution to set these fractions in a way that won't cause panic-y +// arithmetic. +pub const BACKFILL_SCHEDULE_IN_SLOT: [(u32, u32); 3] = [ + // One half: 6s on mainnet, 2.5s on Gnosis. + (1, 2), + // Three fifths: 7.2s on mainnet, 3s on Gnosis. + (3, 5), + // Four fifths: 9.6s on mainnet, 4s on Gnosis. + (4, 5), +]; + /// Messages that the scheduler can receive. +#[derive(AsRefStr)] pub enum ReprocessQueueMessage { /// A block that has been received early and we should queue for later processing. EarlyBlock(QueuedGossipBlock), @@ -84,6 +102,8 @@ pub enum ReprocessQueueMessage { UnknownBlockAggregate(QueuedAggregate), /// A light client optimistic update that references a parent root that has not been seen as a parent. UnknownLightClientOptimisticUpdate(QueuedLightClientUpdate), + /// A new backfill batch that needs to be scheduled for processing. + BackfillSync(QueuedBackfillBatch), } /// Events sent by the scheduler once they are ready for re-processing. @@ -93,6 +113,7 @@ pub enum ReadyWork { Unaggregate(QueuedUnaggregate), Aggregate(QueuedAggregate), LightClientUpdate(QueuedLightClientUpdate), + BackfillSync(QueuedBackfillBatch), } /// An Attestation for which the corresponding block was not seen while processing, queued for @@ -144,6 +165,40 @@ pub struct QueuedRpcBlock { pub should_process: bool, } +/// A backfill batch work that has been queued for processing later. +#[derive(Clone)] +pub struct QueuedBackfillBatch { + pub process_id: ChainSegmentProcessId, + pub blocks: Vec>>, +} + +impl TryFrom> for QueuedBackfillBatch { + type Error = WorkEvent; + + fn try_from(event: WorkEvent) -> Result> { + match event { + WorkEvent { + work: + Work::ChainSegment { + process_id: process_id @ ChainSegmentProcessId::BackSyncBatchId(_), + blocks, + }, + .. + } => Ok(QueuedBackfillBatch { process_id, blocks }), + _ => Err(event), + } + } +} + +impl From> for WorkEvent { + fn from(queued_backfill_batch: QueuedBackfillBatch) -> WorkEvent { + WorkEvent::chain_segment( + queued_backfill_batch.process_id, + queued_backfill_batch.blocks, + ) + } +} + /// Unifies the different messages processed by the block delay queue. enum InboundEvent { /// A gossip block that was queued for later processing and is ready for import. @@ -155,6 +210,8 @@ enum InboundEvent { ReadyAttestation(QueuedAttestationId), /// A light client update that is ready for re-processing. ReadyLightClientUpdate(QueuedLightClientUpdateId), + /// A backfill batch that was queued is ready for processing. + ReadyBackfillSync(QueuedBackfillBatch), /// A `DelayQueue` returned an error. DelayQueueError(TimeError, &'static str), /// A message sent to the `ReprocessQueue` @@ -191,6 +248,8 @@ struct ReprocessQueue { queued_lc_updates: FnvHashMap, DelayKey)>, /// Light Client Updates per parent_root. awaiting_lc_updates_per_parent_root: HashMap>, + /// Queued backfill batches + queued_backfill_batches: Vec>, /* Aux */ /// Next attestation id, used for both aggregated and unaggregated attestations @@ -200,6 +259,8 @@ struct ReprocessQueue { rpc_block_debounce: TimeLatch, attestation_delay_debounce: TimeLatch, lc_update_delay_debounce: TimeLatch, + next_backfill_batch_event: Option>>, + slot_clock: Pin>, } pub type QueuedLightClientUpdateId = usize; @@ -287,6 +348,20 @@ impl Stream for ReprocessQueue { Poll::Ready(None) | Poll::Pending => (), } + if let Some(next_backfill_batch_event) = self.next_backfill_batch_event.as_mut() { + match next_backfill_batch_event.as_mut().poll(cx) { + Poll::Ready(_) => { + let maybe_batch = self.queued_backfill_batches.pop(); + self.recompute_next_backfill_batch_event(); + + if let Some(batch) = maybe_batch { + return Poll::Ready(Some(InboundEvent::ReadyBackfillSync(batch))); + } + } + Poll::Pending => (), + } + } + // Last empty the messages channel. match self.work_reprocessing_rx.poll_recv(cx) { Poll::Ready(Some(message)) => return Poll::Ready(Some(InboundEvent::Msg(message))), @@ -323,12 +398,15 @@ pub fn spawn_reprocess_scheduler( queued_unaggregates: FnvHashMap::default(), awaiting_attestations_per_root: HashMap::new(), awaiting_lc_updates_per_parent_root: HashMap::new(), + queued_backfill_batches: Vec::new(), next_attestation: 0, next_lc_update: 0, early_block_debounce: TimeLatch::default(), rpc_block_debounce: TimeLatch::default(), attestation_delay_debounce: TimeLatch::default(), lc_update_delay_debounce: TimeLatch::default(), + next_backfill_batch_event: None, + slot_clock: Box::pin(slot_clock.clone()), }; executor.spawn( @@ -679,6 +757,14 @@ impl ReprocessQueue { } } } + InboundEvent::Msg(BackfillSync(queued_backfill_batch)) => { + self.queued_backfill_batches + .insert(0, queued_backfill_batch); + // only recompute if there is no `next_backfill_batch_event` already scheduled + if self.next_backfill_batch_event.is_none() { + self.recompute_next_backfill_batch_event(); + } + } // A block that was queued for later processing is now ready to be processed. InboundEvent::ReadyGossipBlock(ready_block) => { let block_root = ready_block.block.block_root; @@ -786,6 +872,33 @@ impl ReprocessQueue { } } } + InboundEvent::ReadyBackfillSync(queued_backfill_batch) => { + let millis_from_slot_start = slot_clock + .millis_from_current_slot_start() + .map_or("null".to_string(), |duration| { + duration.as_millis().to_string() + }); + + debug!( + log, + "Sending scheduled backfill work"; + "millis_from_slot_start" => millis_from_slot_start + ); + + if self + .ready_work_tx + .try_send(ReadyWork::BackfillSync(queued_backfill_batch.clone())) + .is_err() + { + error!( + log, + "Failed to send scheduled backfill work"; + "info" => "sending work back to queue" + ); + self.queued_backfill_batches + .insert(0, queued_backfill_batch); + } + } } metrics::set_gauge_vec( @@ -809,4 +922,95 @@ impl ReprocessQueue { self.lc_updates_delay_queue.len() as i64, ); } + + fn recompute_next_backfill_batch_event(&mut self) { + // only recompute the `next_backfill_batch_event` if there are backfill batches in the queue + if !self.queued_backfill_batches.is_empty() { + self.next_backfill_batch_event = Some(Box::pin(tokio::time::sleep( + ReprocessQueue::::duration_until_next_backfill_batch_event(&self.slot_clock), + ))); + } else { + self.next_backfill_batch_event = None + } + } + + /// Returns duration until the next scheduled processing time. The schedule ensure that backfill + /// processing is done in windows of time that aren't critical + fn duration_until_next_backfill_batch_event(slot_clock: &T::SlotClock) -> Duration { + let slot_duration = slot_clock.slot_duration(); + slot_clock + .millis_from_current_slot_start() + .and_then(|duration_from_slot_start| { + BACKFILL_SCHEDULE_IN_SLOT + .into_iter() + // Convert fractions to seconds from slot start. + .map(|(multiplier, divisor)| (slot_duration / divisor) * multiplier) + .find_or_first(|&event_duration_from_slot_start| { + event_duration_from_slot_start > duration_from_slot_start + }) + .map(|next_event_time| { + if duration_from_slot_start >= next_event_time { + // event is in the next slot, add duration to next slot + let duration_to_next_slot = slot_duration - duration_from_slot_start; + duration_to_next_slot + next_event_time + } else { + next_event_time - duration_from_slot_start + } + }) + }) + // If we can't read the slot clock, just wait another slot. + .unwrap_or(slot_duration) + } +} + +#[cfg(test)] +mod tests { + use super::*; + use beacon_chain::builder::Witness; + use beacon_chain::eth1_chain::CachingEth1Backend; + use slot_clock::TestingSlotClock; + use store::MemoryStore; + use types::MainnetEthSpec as E; + use types::Slot; + + type TestBeaconChainType = + Witness, E, MemoryStore, MemoryStore>; + + #[test] + fn backfill_processing_schedule_calculation() { + let slot_duration = Duration::from_secs(12); + let slot_clock = TestingSlotClock::new(Slot::new(0), Duration::from_secs(0), slot_duration); + let current_slot_start = slot_clock.start_of(Slot::new(100)).unwrap(); + slot_clock.set_current_time(current_slot_start); + + let event_times = BACKFILL_SCHEDULE_IN_SLOT + .map(|(multiplier, divisor)| (slot_duration / divisor) * multiplier); + + for &event_duration_from_slot_start in event_times.iter() { + let duration_to_next_event = + ReprocessQueue::::duration_until_next_backfill_batch_event( + &slot_clock, + ); + + let current_time = slot_clock.millis_from_current_slot_start().unwrap(); + + assert_eq!( + duration_to_next_event, + event_duration_from_slot_start - current_time + ); + + slot_clock.set_current_time(current_slot_start + event_duration_from_slot_start) + } + + // check for next event beyond the current slot + let duration_to_next_slot = slot_clock.duration_to_next_slot().unwrap(); + let duration_to_next_event = + ReprocessQueue::::duration_until_next_backfill_batch_event( + &slot_clock, + ); + assert_eq!( + duration_to_next_event, + duration_to_next_slot + event_times[0] + ); + } } diff --git a/beacon_node/src/cli.rs b/beacon_node/src/cli.rs index 1e18493474..71d7d68c45 100644 --- a/beacon_node/src/cli.rs +++ b/beacon_node/src/cli.rs @@ -261,6 +261,14 @@ pub fn cli_app<'a, 'b>() -> App<'a, 'b> { .min_values(0) .hidden(true) ) + .arg( + Arg::with_name("disable-backfill-rate-limiting") + .long("disable-backfill-rate-limiting") + .help("Disable the backfill sync rate-limiting. This allow users to just sync the entire chain as fast \ + as possible, however it can result in resource contention which degrades staking performance. Stakers \ + should generally choose to avoid this flag since backfill sync is not required for staking.") + .takes_value(false), + ) /* REST API related arguments */ .arg( Arg::with_name("http") diff --git a/beacon_node/src/config.rs b/beacon_node/src/config.rs index c77fa49b12..8799bdeeec 100644 --- a/beacon_node/src/config.rs +++ b/beacon_node/src/config.rs @@ -759,6 +759,10 @@ pub fn get_config( client_config.always_prefer_builder_payload = true; } + // Backfill sync rate-limiting + client_config.chain.enable_backfill_rate_limiting = + !cli_args.is_present("disable-backfill-rate-limiting"); + Ok(client_config) } diff --git a/common/slot_clock/src/lib.rs b/common/slot_clock/src/lib.rs index 183f5c9313..1c8813ca2f 100644 --- a/common/slot_clock/src/lib.rs +++ b/common/slot_clock/src/lib.rs @@ -104,12 +104,23 @@ pub trait SlotClock: Send + Sync + Sized + Clone { self.slot_duration() * 2 / INTERVALS_PER_SLOT as u32 } - /// Returns the `Duration` since the start of the current `Slot`. Useful in determining whether to apply proposer boosts. - fn seconds_from_current_slot_start(&self, seconds_per_slot: u64) -> Option { + /// Returns the `Duration` since the start of the current `Slot` at seconds precision. Useful in determining whether to apply proposer boosts. + fn seconds_from_current_slot_start(&self) -> Option { self.now_duration() .and_then(|now| now.checked_sub(self.genesis_duration())) .map(|duration_into_slot| { - Duration::from_secs(duration_into_slot.as_secs() % seconds_per_slot) + Duration::from_secs(duration_into_slot.as_secs() % self.slot_duration().as_secs()) + }) + } + + /// Returns the `Duration` since the start of the current `Slot` at milliseconds precision. + fn millis_from_current_slot_start(&self) -> Option { + self.now_duration() + .and_then(|now| now.checked_sub(self.genesis_duration())) + .map(|duration_into_slot| { + Duration::from_millis( + (duration_into_slot.as_millis() % self.slot_duration().as_millis()) as u64, + ) }) } diff --git a/lighthouse/tests/beacon_node.rs b/lighthouse/tests/beacon_node.rs index 078bca95ef..a61d9cbf74 100644 --- a/lighthouse/tests/beacon_node.rs +++ b/lighthouse/tests/beacon_node.rs @@ -1052,6 +1052,19 @@ fn disable_upnp_flag() { .with_config(|config| assert!(!config.network.upnp_enabled)); } #[test] +fn disable_backfill_rate_limiting_flag() { + CommandLineTest::new() + .flag("disable-backfill-rate-limiting", None) + .run_with_zero_port() + .with_config(|config| assert!(!config.chain.enable_backfill_rate_limiting)); +} +#[test] +fn default_backfill_rate_limiting_flag() { + CommandLineTest::new() + .run_with_zero_port() + .with_config(|config| assert!(config.chain.enable_backfill_rate_limiting)); +} +#[test] fn default_boot_nodes() { let mainnet = vec![ // Lighthouse Team (Sigma Prime) diff --git a/testing/ef_tests/src/cases/fork_choice.rs b/testing/ef_tests/src/cases/fork_choice.rs index 7c3154a328..4f5d998301 100644 --- a/testing/ef_tests/src/cases/fork_choice.rs +++ b/testing/ef_tests/src/cases/fork_choice.rs @@ -425,7 +425,7 @@ impl Tester { .harness .chain .slot_clock - .seconds_from_current_slot_start(self.spec.seconds_per_slot) + .seconds_from_current_slot_start() .unwrap(); let result = self From e2c68c8893ac66c33ba42fcf8c2b40bd4574c5a0 Mon Sep 17 00:00:00 2001 From: Jimmy Chen Date: Mon, 3 Apr 2023 03:02:56 +0000 Subject: [PATCH 13/56] Add new validator API for voluntary exit (#4119) ## Issue Addressed Addresses #4117 ## Proposed Changes See https://github.com/ethereum/keymanager-APIs/pull/58 for proposed API specification. ## TODO - [x] ~~Add submission to BN~~ - removed, see discussion in [keymanager API](https://github.com/ethereum/keymanager-APIs/pull/58) - [x] ~~Add flag to allow voluntary exit via the API~~ - no longer needed now the VC doesn't submit exit directly - [x] ~~Additional verification / checks, e.g. if validator on same network as BN~~ - to be done on client side - [x] ~~Potentially wait for the message to propagate and return some exit information in the response~~ - not required - [x] Update http tests - [x] ~~Update lighthouse book~~ - not required if this endpoint makes it to the standard keymanager API Co-authored-by: Paul Hauner Co-authored-by: Jimmy Chen --- common/eth2/src/lighthouse_vc/http_client.rs | 24 +++++++ common/eth2/src/lighthouse_vc/types.rs | 5 ++ .../http_api/create_signed_voluntary_exit.rs | 69 +++++++++++++++++++ validator_client/src/http_api/mod.rs | 47 +++++++++++++ validator_client/src/http_api/tests.rs | 67 ++++++++++++++++-- validator_client/src/http_metrics/metrics.rs | 5 ++ validator_client/src/lib.rs | 5 +- validator_client/src/signing_method.rs | 3 + .../src/signing_method/web3signer.rs | 1 - validator_client/src/validator_store.rs | 39 ++++++++++- 10 files changed, 256 insertions(+), 9 deletions(-) create mode 100644 validator_client/src/http_api/create_signed_voluntary_exit.rs diff --git a/common/eth2/src/lighthouse_vc/http_client.rs b/common/eth2/src/lighthouse_vc/http_client.rs index 88b5b68401..90c128751d 100644 --- a/common/eth2/src/lighthouse_vc/http_client.rs +++ b/common/eth2/src/lighthouse_vc/http_client.rs @@ -642,6 +642,30 @@ impl ValidatorClientHttpClient { let url = self.make_gas_limit_url(pubkey)?; self.delete_with_raw_response(url, &()).await } + + /// `POST /eth/v1/validator/{pubkey}/voluntary_exit` + pub async fn post_validator_voluntary_exit( + &self, + pubkey: &PublicKeyBytes, + epoch: Option, + ) -> Result { + let mut path = self.server.full.clone(); + + path.path_segments_mut() + .map_err(|()| Error::InvalidUrl(self.server.clone()))? + .push("eth") + .push("v1") + .push("validator") + .push(&pubkey.to_string()) + .push("voluntary_exit"); + + if let Some(epoch) = epoch { + path.query_pairs_mut() + .append_pair("epoch", &epoch.to_string()); + } + + self.post(path, &()).await + } } /// Returns `Ok(response)` if the response is a `200 OK` response or a diff --git a/common/eth2/src/lighthouse_vc/types.rs b/common/eth2/src/lighthouse_vc/types.rs index 92439337f6..fa5d4ae119 100644 --- a/common/eth2/src/lighthouse_vc/types.rs +++ b/common/eth2/src/lighthouse_vc/types.rs @@ -144,3 +144,8 @@ pub struct UpdateGasLimitRequest { #[serde(with = "eth2_serde_utils::quoted_u64")] pub gas_limit: u64, } + +#[derive(Deserialize)] +pub struct VoluntaryExitQuery { + pub epoch: Option, +} diff --git a/validator_client/src/http_api/create_signed_voluntary_exit.rs b/validator_client/src/http_api/create_signed_voluntary_exit.rs new file mode 100644 index 0000000000..b777d15806 --- /dev/null +++ b/validator_client/src/http_api/create_signed_voluntary_exit.rs @@ -0,0 +1,69 @@ +use crate::validator_store::ValidatorStore; +use bls::{PublicKey, PublicKeyBytes}; +use slog::{info, Logger}; +use slot_clock::SlotClock; +use std::sync::Arc; +use types::{Epoch, EthSpec, SignedVoluntaryExit, VoluntaryExit}; + +pub async fn create_signed_voluntary_exit( + pubkey: PublicKey, + maybe_epoch: Option, + validator_store: Arc>, + slot_clock: T, + log: Logger, +) -> Result { + let epoch = match maybe_epoch { + Some(epoch) => epoch, + None => get_current_epoch::(slot_clock).ok_or_else(|| { + warp_utils::reject::custom_server_error("Unable to determine current epoch".to_string()) + })?, + }; + + let pubkey_bytes = PublicKeyBytes::from(pubkey); + if !validator_store.has_validator(&pubkey_bytes) { + return Err(warp_utils::reject::custom_not_found(format!( + "{} is disabled or not managed by this validator client", + pubkey_bytes.as_hex_string() + ))); + } + + let validator_index = validator_store + .validator_index(&pubkey_bytes) + .ok_or_else(|| { + warp_utils::reject::custom_not_found(format!( + "The validator index for {} is not known. The validator client \ + may still be initializing or the validator has not yet had a \ + deposit processed.", + pubkey_bytes.as_hex_string() + )) + })?; + + let voluntary_exit = VoluntaryExit { + epoch, + validator_index, + }; + + info!( + log, + "Signing voluntary exit"; + "validator" => pubkey_bytes.as_hex_string(), + "epoch" => epoch + ); + + let signed_voluntary_exit = validator_store + .sign_voluntary_exit(pubkey_bytes, voluntary_exit) + .await + .map_err(|e| { + warp_utils::reject::custom_server_error(format!( + "Failed to sign voluntary exit: {:?}", + e + )) + })?; + + Ok(signed_voluntary_exit) +} + +/// Calculates the current epoch from the genesis time and current time. +fn get_current_epoch(slot_clock: T) -> Option { + slot_clock.now().map(|s| s.epoch(E::slots_per_epoch())) +} diff --git a/validator_client/src/http_api/mod.rs b/validator_client/src/http_api/mod.rs index b87bb08381..15b3f9fe09 100644 --- a/validator_client/src/http_api/mod.rs +++ b/validator_client/src/http_api/mod.rs @@ -1,9 +1,11 @@ mod api_secret; +mod create_signed_voluntary_exit; mod create_validator; mod keystores; mod remotekeys; mod tests; +use crate::http_api::create_signed_voluntary_exit::create_signed_voluntary_exit; use crate::{determine_graffiti, GraffitiFile, ValidatorStore}; use account_utils::{ mnemonic_from_phrase, @@ -71,6 +73,7 @@ pub struct Context { pub spec: ChainSpec, pub config: Config, pub log: Logger, + pub slot_clock: T, pub _phantom: PhantomData, } @@ -189,6 +192,9 @@ pub fn serve( let inner_ctx = ctx.clone(); let log_filter = warp::any().map(move || inner_ctx.log.clone()); + let inner_slot_clock = ctx.slot_clock.clone(); + let slot_clock_filter = warp::any().map(move || inner_slot_clock.clone()); + let inner_spec = Arc::new(ctx.spec.clone()); let spec_filter = warp::any().map(move || inner_spec.clone()); @@ -904,6 +910,46 @@ pub fn serve( ) .map(|reply| warp::reply::with_status(reply, warp::http::StatusCode::NO_CONTENT)); + // POST /eth/v1/validator/{pubkey}/voluntary_exit + let post_validators_voluntary_exits = eth_v1 + .and(warp::path("validator")) + .and(warp::path::param::()) + .and(warp::path("voluntary_exit")) + .and(warp::query::()) + .and(warp::path::end()) + .and(validator_store_filter.clone()) + .and(slot_clock_filter) + .and(log_filter.clone()) + .and(signer.clone()) + .and(task_executor_filter.clone()) + .and_then( + |pubkey: PublicKey, + query: api_types::VoluntaryExitQuery, + validator_store: Arc>, + slot_clock: T, + log, + signer, + task_executor: TaskExecutor| { + blocking_signed_json_task(signer, move || { + if let Some(handle) = task_executor.handle() { + let signed_voluntary_exit = + handle.block_on(create_signed_voluntary_exit( + pubkey, + query.epoch, + validator_store, + slot_clock, + log, + ))?; + Ok(signed_voluntary_exit) + } else { + Err(warp_utils::reject::custom_server_error( + "Lighthouse shutting down".into(), + )) + } + }) + }, + ); + // GET /eth/v1/keystores let get_std_keystores = std_keystores .and(signer.clone()) @@ -1001,6 +1047,7 @@ pub fn serve( .or(post_validators_keystore) .or(post_validators_mnemonic) .or(post_validators_web3signer) + .or(post_validators_voluntary_exits) .or(post_fee_recipient) .or(post_gas_limit) .or(post_std_keystores) diff --git a/validator_client/src/http_api/tests.rs b/validator_client/src/http_api/tests.rs index d453d7038a..df0e480444 100644 --- a/validator_client/src/http_api/tests.rs +++ b/validator_client/src/http_api/tests.rs @@ -45,6 +45,7 @@ struct ApiTester { initialized_validators: Arc>, validator_store: Arc>, url: SensitiveUrl, + slot_clock: TestingSlotClock, _server_shutdown: oneshot::Sender<()>, _validator_dir: TempDir, _runtime_shutdown: exit_future::Signal, @@ -90,8 +91,12 @@ impl ApiTester { let slashing_db_path = config.validator_dir.join(SLASHING_PROTECTION_FILENAME); let slashing_protection = SlashingDatabase::open_or_create(&slashing_db_path).unwrap(); - let slot_clock = - TestingSlotClock::new(Slot::new(0), Duration::from_secs(0), Duration::from_secs(1)); + let genesis_time: u64 = 0; + let slot_clock = TestingSlotClock::new( + Slot::new(0), + Duration::from_secs(genesis_time), + Duration::from_secs(1), + ); let (runtime_shutdown, exit) = exit_future::signal(); let (shutdown_tx, _) = futures::channel::mpsc::channel(1); @@ -101,9 +106,9 @@ impl ApiTester { initialized_validators, slashing_protection, Hash256::repeat_byte(42), - spec, + spec.clone(), Some(Arc::new(DoppelgangerService::new(log.clone()))), - slot_clock, + slot_clock.clone(), &config, executor.clone(), log.clone(), @@ -129,7 +134,8 @@ impl ApiTester { listen_port: 0, allow_origin: None, }, - log, + log: log.clone(), + slot_clock: slot_clock.clone(), _phantom: PhantomData, }); let ctx = context.clone(); @@ -156,6 +162,7 @@ impl ApiTester { initialized_validators, validator_store, url, + slot_clock, _server_shutdown: shutdown_tx, _validator_dir: validator_dir, _runtime_shutdown: runtime_shutdown, @@ -494,6 +501,33 @@ impl ApiTester { self } + pub async fn test_sign_voluntary_exits(self, index: usize, maybe_epoch: Option) -> Self { + let validator = &self.client.get_lighthouse_validators().await.unwrap().data[index]; + // manually setting validator index in `ValidatorStore` + self.initialized_validators + .write() + .set_index(&validator.voting_pubkey, 0); + + let expected_exit_epoch = maybe_epoch.unwrap_or_else(|| self.get_current_epoch()); + + let resp = self + .client + .post_validator_voluntary_exit(&validator.voting_pubkey, maybe_epoch) + .await; + + assert!(resp.is_ok()); + assert_eq!(resp.unwrap().message.epoch, expected_exit_epoch); + + self + } + + fn get_current_epoch(&self) -> Epoch { + self.slot_clock + .now() + .map(|s| s.epoch(E::slots_per_epoch())) + .unwrap() + } + pub async fn set_validator_enabled(self, index: usize, enabled: bool) -> Self { let validator = &self.client.get_lighthouse_validators().await.unwrap().data[index]; @@ -778,6 +812,29 @@ fn hd_validator_creation() { }); } +#[test] +fn validator_exit() { + let runtime = build_runtime(); + let weak_runtime = Arc::downgrade(&runtime); + runtime.block_on(async { + ApiTester::new(weak_runtime) + .await + .create_hd_validators(HdValidatorScenario { + count: 2, + specify_mnemonic: false, + key_derivation_path_offset: 0, + disabled: vec![], + }) + .await + .assert_enabled_validators_count(2) + .assert_validators_count(2) + .test_sign_voluntary_exits(0, None) + .await + .test_sign_voluntary_exits(0, Some(Epoch::new(256))) + .await; + }); +} + #[test] fn validator_enabling() { let runtime = build_runtime(); diff --git a/validator_client/src/http_metrics/metrics.rs b/validator_client/src/http_metrics/metrics.rs index b4e400c3e7..8a52a4d35e 100644 --- a/validator_client/src/http_metrics/metrics.rs +++ b/validator_client/src/http_metrics/metrics.rs @@ -88,6 +88,11 @@ lazy_static::lazy_static! { "Total count of attempted SyncSelectionProof signings", &["status"] ); + pub static ref SIGNED_VOLUNTARY_EXITS_TOTAL: Result = try_create_int_counter_vec( + "vc_signed_voluntary_exits_total", + "Total count of VoluntaryExit signings", + &["status"] + ); pub static ref SIGNED_VALIDATOR_REGISTRATIONS_TOTAL: Result = try_create_int_counter_vec( "builder_validator_registrations_total", "Total count of ValidatorRegistrationData signings", diff --git a/validator_client/src/lib.rs b/validator_client/src/lib.rs index 82cacccc60..556fdef26b 100644 --- a/validator_client/src/lib.rs +++ b/validator_client/src/lib.rs @@ -94,6 +94,7 @@ pub struct ProductionValidatorClient { doppelganger_service: Option>, preparation_service: PreparationService, validator_store: Arc>, + slot_clock: SystemTimeSlotClock, http_api_listen_addr: Option, config: Config, } @@ -461,7 +462,7 @@ impl ProductionValidatorClient { let sync_committee_service = SyncCommitteeService::new( duties_service.clone(), validator_store.clone(), - slot_clock, + slot_clock.clone(), beacon_nodes.clone(), context.service_context("sync_committee".into()), ); @@ -482,6 +483,7 @@ impl ProductionValidatorClient { preparation_service, validator_store, config, + slot_clock, http_api_listen_addr: None, }) } @@ -544,6 +546,7 @@ impl ProductionValidatorClient { graffiti_flag: self.config.graffiti, spec: self.context.eth2_config.spec.clone(), config: self.config.http_api.clone(), + slot_clock: self.slot_clock.clone(), log: log.clone(), _phantom: PhantomData, }); diff --git a/validator_client/src/signing_method.rs b/validator_client/src/signing_method.rs index ae9df08096..0de2f2f54f 100644 --- a/validator_client/src/signing_method.rs +++ b/validator_client/src/signing_method.rs @@ -47,6 +47,7 @@ pub enum SignableMessage<'a, T: EthSpec, Payload: AbstractExecPayload = FullP }, SignedContributionAndProof(&'a ContributionAndProof), ValidatorRegistration(&'a ValidatorRegistrationData), + VoluntaryExit(&'a VoluntaryExit), } impl<'a, T: EthSpec, Payload: AbstractExecPayload> SignableMessage<'a, T, Payload> { @@ -67,6 +68,7 @@ impl<'a, T: EthSpec, Payload: AbstractExecPayload> SignableMessage<'a, T, Pay } => beacon_block_root.signing_root(domain), SignableMessage::SignedContributionAndProof(c) => c.signing_root(domain), SignableMessage::ValidatorRegistration(v) => v.signing_root(domain), + SignableMessage::VoluntaryExit(exit) => exit.signing_root(domain), } } } @@ -203,6 +205,7 @@ impl SigningMethod { SignableMessage::ValidatorRegistration(v) => { Web3SignerObject::ValidatorRegistration(v) } + SignableMessage::VoluntaryExit(e) => Web3SignerObject::VoluntaryExit(e), }; // Determine the Web3Signer message type. diff --git a/validator_client/src/signing_method/web3signer.rs b/validator_client/src/signing_method/web3signer.rs index 17e780304e..e907126faf 100644 --- a/validator_client/src/signing_method/web3signer.rs +++ b/validator_client/src/signing_method/web3signer.rs @@ -62,7 +62,6 @@ pub enum Web3SignerObject<'a, T: EthSpec, Payload: AbstractExecPayload> { RandaoReveal { epoch: Epoch, }, - #[allow(dead_code)] VoluntaryExit(&'a VoluntaryExit), SyncCommitteeMessage { beacon_block_root: Hash256, diff --git a/validator_client/src/validator_store.rs b/validator_client/src/validator_store.rs index 36a0d05734..73843579a2 100644 --- a/validator_client/src/validator_store.rs +++ b/validator_client/src/validator_store.rs @@ -22,8 +22,9 @@ use types::{ AggregateAndProof, Attestation, BeaconBlock, BlindedPayload, ChainSpec, ContributionAndProof, Domain, Epoch, EthSpec, Fork, Graffiti, Hash256, Keypair, PublicKeyBytes, SelectionProof, Signature, SignedAggregateAndProof, SignedBeaconBlock, SignedContributionAndProof, SignedRoot, - SignedValidatorRegistrationData, Slot, SyncAggregatorSelectionData, SyncCommitteeContribution, - SyncCommitteeMessage, SyncSelectionProof, SyncSubnetId, ValidatorRegistrationData, + SignedValidatorRegistrationData, SignedVoluntaryExit, Slot, SyncAggregatorSelectionData, + SyncCommitteeContribution, SyncCommitteeMessage, SyncSelectionProof, SyncSubnetId, + ValidatorRegistrationData, VoluntaryExit, }; use validator_dir::ValidatorDir; @@ -155,6 +156,14 @@ impl ValidatorStore { self.validators.clone() } + /// Indicates if the `voting_public_key` exists in self and is enabled. + pub fn has_validator(&self, voting_public_key: &PublicKeyBytes) -> bool { + self.validators + .read() + .validator(voting_public_key) + .is_some() + } + /// Insert a new validator to `self`, where the validator is represented by an EIP-2335 /// keystore on the filesystem. #[allow(clippy::too_many_arguments)] @@ -616,6 +625,32 @@ impl ValidatorStore { } } + pub async fn sign_voluntary_exit( + &self, + validator_pubkey: PublicKeyBytes, + voluntary_exit: VoluntaryExit, + ) -> Result { + let signing_epoch = voluntary_exit.epoch; + let signing_context = self.signing_context(Domain::VoluntaryExit, signing_epoch); + let signing_method = self.doppelganger_bypassed_signing_method(validator_pubkey)?; + + let signature = signing_method + .get_signature::>( + SignableMessage::VoluntaryExit(&voluntary_exit), + signing_context, + &self.spec, + &self.task_executor, + ) + .await?; + + metrics::inc_counter_vec(&metrics::SIGNED_VOLUNTARY_EXITS_TOTAL, &[metrics::SUCCESS]); + + Ok(SignedVoluntaryExit { + message: voluntary_exit, + signature, + }) + } + pub async fn sign_validator_registration_data( &self, validator_registration_data: ValidatorRegistrationData, From 311e69db65f0133fb3f9ce980d3f88202cea042d Mon Sep 17 00:00:00 2001 From: Age Manning Date: Mon, 3 Apr 2023 03:02:57 +0000 Subject: [PATCH 14/56] Ban peer race condition (#4140) It is possible that when we go to ban a peer, there is already an unbanned message in the queue. It could lead to the case that we ban and immediately unban a peer leaving us in a state where a should-be banned peer is unbanned. If this banned peer connects to us in this faulty state, we currently do not attempt to re-ban it. This PR does correct this also, so if we do see this error, it will now self-correct (although we shouldn't see the error in the first place). I have also incremented the severity of not supporting protocols as I see peers ultimately get banned in a few steps and it seems to make sense to just ban them outright, rather than have them linger. --- .../src/peer_manager/mod.rs | 23 +++++++++++++------ .../src/peer_manager/network_behaviour.rs | 4 +++- .../lighthouse_network/src/service/mod.rs | 2 +- 3 files changed, 20 insertions(+), 9 deletions(-) diff --git a/beacon_node/lighthouse_network/src/peer_manager/mod.rs b/beacon_node/lighthouse_network/src/peer_manager/mod.rs index 3d5c862e8b..a461a12e53 100644 --- a/beacon_node/lighthouse_network/src/peer_manager/mod.rs +++ b/beacon_node/lighthouse_network/src/peer_manager/mod.rs @@ -290,11 +290,20 @@ impl PeerManager { // If a peer is being banned, this trumps any temporary ban the peer might be // under. We no longer track it in the temporary ban list. - self.temporary_banned_peers.raw_remove(peer_id); - - // Inform the Swarm to ban the peer - self.events - .push(PeerManagerEvent::Banned(*peer_id, banned_ips)); + if !self.temporary_banned_peers.raw_remove(peer_id) { + // If the peer is not already banned, inform the Swarm to ban the peer + self.events + .push(PeerManagerEvent::Banned(*peer_id, banned_ips)); + // If the peer was in the process of being un-banned, remove it (a rare race + // condition) + self.events.retain(|event| { + if let PeerManagerEvent::UnBanned(unbanned_peer_id, _) = event { + unbanned_peer_id != peer_id // Remove matching peer ids + } else { + true + } + }); + } } } } @@ -552,8 +561,8 @@ impl PeerManager { Protocol::BlocksByRoot => return, Protocol::Goodbye => return, Protocol::LightClientBootstrap => return, - Protocol::MetaData => PeerAction::LowToleranceError, - Protocol::Status => PeerAction::LowToleranceError, + Protocol::MetaData => PeerAction::Fatal, + Protocol::Status => PeerAction::Fatal, } } RPCError::StreamTimeout => match direction { diff --git a/beacon_node/lighthouse_network/src/peer_manager/network_behaviour.rs b/beacon_node/lighthouse_network/src/peer_manager/network_behaviour.rs index a29f243c9e..24de83a61d 100644 --- a/beacon_node/lighthouse_network/src/peer_manager/network_behaviour.rs +++ b/beacon_node/lighthouse_network/src/peer_manager/network_behaviour.rs @@ -156,8 +156,10 @@ impl PeerManager { BanResult::BadScore => { // This is a faulty state error!(self.log, "Connected to a banned peer. Re-banning"; "peer_id" => %peer_id); - // Reban the peer + // Disconnect the peer. self.goodbye_peer(&peer_id, GoodbyeReason::Banned, ReportSource::PeerManager); + // Re-ban the peer to prevent repeated errors. + self.events.push(PeerManagerEvent::Banned(peer_id, vec![])); return; } BanResult::BannedIp(ip_addr) => { diff --git a/beacon_node/lighthouse_network/src/service/mod.rs b/beacon_node/lighthouse_network/src/service/mod.rs index 5cdcdeaf85..dc9b44849f 100644 --- a/beacon_node/lighthouse_network/src/service/mod.rs +++ b/beacon_node/lighthouse_network/src/service/mod.rs @@ -1119,7 +1119,7 @@ impl Network { debug!(self.log, "Peer does not support gossipsub"; "peer_id" => %peer_id); self.peer_manager_mut().report_peer( &peer_id, - PeerAction::LowToleranceError, + PeerAction::Fatal, ReportSource::Gossipsub, Some(GoodbyeReason::Unknown), "does_not_support_gossipsub", From 1e029ce5384e911390a513e2d1885532f34a8b2b Mon Sep 17 00:00:00 2001 From: int88 Date: Mon, 3 Apr 2023 03:02:58 +0000 Subject: [PATCH 15/56] remove dup log (#4155) ## Issue Addressed NA ## Proposed Changes remove duplicate log message. ## Additional Info NA --- beacon_node/client/src/builder.rs | 6 ------ 1 file changed, 6 deletions(-) diff --git a/beacon_node/client/src/builder.rs b/beacon_node/client/src/builder.rs index 5fa2fddc3e..d4b785cb11 100644 --- a/beacon_node/client/src/builder.rs +++ b/beacon_node/client/src/builder.rs @@ -347,12 +347,6 @@ where while block.slot() % slots_per_epoch != 0 { block_slot = (block_slot / slots_per_epoch - 1) * slots_per_epoch; - debug!( - context.log(), - "Searching for aligned checkpoint block"; - "block_slot" => block_slot, - ); - debug!( context.log(), "Searching for aligned checkpoint block"; From 8630ddfec4305789135b64ce4d78bd3e5a1c12ff Mon Sep 17 00:00:00 2001 From: Mac L Date: Mon, 3 Apr 2023 05:35:11 +0000 Subject: [PATCH 16/56] Add `beacon.watch` (#3362) > This is currently a WIP and all features are subject to alteration or removal at any time. ## Overview The successor to #2873. Contains the backbone of `beacon.watch` including syncing code, the initial API, and several core database tables. See `watch/README.md` for more information, requirements and usage. --- Cargo.lock | 699 ++++++--- Cargo.toml | 2 + beacon_node/http_api/Cargo.toml | 8 +- beacon_node/http_api/src/lib.rs | 1 + .../{tests/common.rs => src/test_utils.rs} | 10 +- beacon_node/http_api/tests/fork_tests.rs | 2 +- .../http_api/tests/interactive_tests.rs | 2 +- beacon_node/http_api/tests/main.rs | 1 - beacon_node/http_api/tests/tests.rs | 6 +- common/eth2/src/lib.rs | 2 +- common/eth2/src/lighthouse.rs | 71 +- watch/.gitignore | 1 + watch/Cargo.toml | 45 + watch/README.md | 460 ++++++ watch/config.yaml.default | 49 + watch/diesel.toml | 5 + watch/migrations/.gitkeep | 0 .../down.sql | 6 + .../up.sql | 36 + .../down.sql | 1 + .../2022-01-01-000000_canonical_slots/up.sql | 6 + .../2022-01-01-000001_beacon_blocks/down.sql | 1 + .../2022-01-01-000001_beacon_blocks/up.sql | 7 + .../2022-01-01-000002_validators/down.sql | 1 + .../2022-01-01-000002_validators/up.sql | 7 + .../2022-01-01-000003_proposer_info/down.sql | 1 + .../2022-01-01-000003_proposer_info/up.sql | 5 + .../2022-01-01-000004_active_config/down.sql | 1 + .../2022-01-01-000004_active_config/up.sql | 5 + .../2022-01-01-000010_blockprint/down.sql | 1 + .../2022-01-01-000010_blockprint/up.sql | 4 + .../2022-01-01-000011_block_rewards/down.sql | 1 + .../2022-01-01-000011_block_rewards/up.sql | 6 + .../2022-01-01-000012_block_packing/down.sql | 1 + .../2022-01-01-000012_block_packing/up.sql | 6 + .../down.sql | 1 + .../up.sql | 8 + .../2022-01-01-000020_capella/down.sql | 2 + .../2022-01-01-000020_capella/up.sql | 3 + watch/postgres_docker_compose/compose.yml | 16 + watch/src/block_packing/database.rs | 140 ++ watch/src/block_packing/mod.rs | 38 + watch/src/block_packing/server.rs | 31 + watch/src/block_packing/updater.rs | 211 +++ watch/src/block_rewards/database.rs | 137 ++ watch/src/block_rewards/mod.rs | 38 + watch/src/block_rewards/server.rs | 31 + watch/src/block_rewards/updater.rs | 157 +++ watch/src/blockprint/config.rs | 40 + watch/src/blockprint/database.rs | 224 +++ watch/src/blockprint/mod.rs | 149 ++ watch/src/blockprint/server.rs | 31 + watch/src/blockprint/updater.rs | 172 +++ watch/src/cli.rs | 55 + watch/src/client.rs | 178 +++ watch/src/config.rs | 50 + watch/src/database/compat.rs | 49 + watch/src/database/config.rs | 74 + watch/src/database/error.rs | 55 + watch/src/database/mod.rs | 782 ++++++++++ watch/src/database/models.rs | 67 + watch/src/database/schema.rs | 102 ++ watch/src/database/utils.rs | 29 + watch/src/database/watch_types.rs | 119 ++ watch/src/lib.rs | 12 + watch/src/logger.rs | 24 + watch/src/main.rs | 41 + watch/src/server/config.rs | 28 + watch/src/server/error.rs | 50 + watch/src/server/handler.rs | 266 ++++ watch/src/server/mod.rs | 134 ++ watch/src/suboptimal_attestations/database.rs | 224 +++ watch/src/suboptimal_attestations/mod.rs | 56 + watch/src/suboptimal_attestations/server.rs | 299 ++++ watch/src/suboptimal_attestations/updater.rs | 236 ++++ watch/src/updater/config.rs | 65 + watch/src/updater/error.rs | 56 + watch/src/updater/handler.rs | 471 +++++++ watch/src/updater/mod.rs | 234 +++ watch/tests/tests.rs | 1254 +++++++++++++++++ 80 files changed, 7663 insertions(+), 236 deletions(-) rename beacon_node/http_api/{tests/common.rs => src/test_utils.rs} (96%) create mode 100644 watch/.gitignore create mode 100644 watch/Cargo.toml create mode 100644 watch/README.md create mode 100644 watch/config.yaml.default create mode 100644 watch/diesel.toml create mode 100644 watch/migrations/.gitkeep create mode 100644 watch/migrations/00000000000000_diesel_initial_setup/down.sql create mode 100644 watch/migrations/00000000000000_diesel_initial_setup/up.sql create mode 100644 watch/migrations/2022-01-01-000000_canonical_slots/down.sql create mode 100644 watch/migrations/2022-01-01-000000_canonical_slots/up.sql create mode 100644 watch/migrations/2022-01-01-000001_beacon_blocks/down.sql create mode 100644 watch/migrations/2022-01-01-000001_beacon_blocks/up.sql create mode 100644 watch/migrations/2022-01-01-000002_validators/down.sql create mode 100644 watch/migrations/2022-01-01-000002_validators/up.sql create mode 100644 watch/migrations/2022-01-01-000003_proposer_info/down.sql create mode 100644 watch/migrations/2022-01-01-000003_proposer_info/up.sql create mode 100644 watch/migrations/2022-01-01-000004_active_config/down.sql create mode 100644 watch/migrations/2022-01-01-000004_active_config/up.sql create mode 100644 watch/migrations/2022-01-01-000010_blockprint/down.sql create mode 100644 watch/migrations/2022-01-01-000010_blockprint/up.sql create mode 100644 watch/migrations/2022-01-01-000011_block_rewards/down.sql create mode 100644 watch/migrations/2022-01-01-000011_block_rewards/up.sql create mode 100644 watch/migrations/2022-01-01-000012_block_packing/down.sql create mode 100644 watch/migrations/2022-01-01-000012_block_packing/up.sql create mode 100644 watch/migrations/2022-01-01-000013_suboptimal_attestations/down.sql create mode 100644 watch/migrations/2022-01-01-000013_suboptimal_attestations/up.sql create mode 100644 watch/migrations/2022-01-01-000020_capella/down.sql create mode 100644 watch/migrations/2022-01-01-000020_capella/up.sql create mode 100644 watch/postgres_docker_compose/compose.yml create mode 100644 watch/src/block_packing/database.rs create mode 100644 watch/src/block_packing/mod.rs create mode 100644 watch/src/block_packing/server.rs create mode 100644 watch/src/block_packing/updater.rs create mode 100644 watch/src/block_rewards/database.rs create mode 100644 watch/src/block_rewards/mod.rs create mode 100644 watch/src/block_rewards/server.rs create mode 100644 watch/src/block_rewards/updater.rs create mode 100644 watch/src/blockprint/config.rs create mode 100644 watch/src/blockprint/database.rs create mode 100644 watch/src/blockprint/mod.rs create mode 100644 watch/src/blockprint/server.rs create mode 100644 watch/src/blockprint/updater.rs create mode 100644 watch/src/cli.rs create mode 100644 watch/src/client.rs create mode 100644 watch/src/config.rs create mode 100644 watch/src/database/compat.rs create mode 100644 watch/src/database/config.rs create mode 100644 watch/src/database/error.rs create mode 100644 watch/src/database/mod.rs create mode 100644 watch/src/database/models.rs create mode 100644 watch/src/database/schema.rs create mode 100644 watch/src/database/utils.rs create mode 100644 watch/src/database/watch_types.rs create mode 100644 watch/src/lib.rs create mode 100644 watch/src/logger.rs create mode 100644 watch/src/main.rs create mode 100644 watch/src/server/config.rs create mode 100644 watch/src/server/error.rs create mode 100644 watch/src/server/handler.rs create mode 100644 watch/src/server/mod.rs create mode 100644 watch/src/suboptimal_attestations/database.rs create mode 100644 watch/src/suboptimal_attestations/mod.rs create mode 100644 watch/src/suboptimal_attestations/server.rs create mode 100644 watch/src/suboptimal_attestations/updater.rs create mode 100644 watch/src/updater/config.rs create mode 100644 watch/src/updater/error.rs create mode 100644 watch/src/updater/handler.rs create mode 100644 watch/src/updater/mod.rs create mode 100644 watch/tests/tests.rs diff --git a/Cargo.lock b/Cargo.lock index 214f3baa35..7a67b77bf9 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -90,9 +90,9 @@ dependencies = [ [[package]] name = "aead" -version = "0.5.1" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c192eb8f11fc081b0fe4259ba5af04217d4e0faddd02417310a927911abd7c8" +checksum = "d122413f284cf2d62fb1b7db97e02edb8cda96d769b16e443a4f6195e35662b0" dependencies = [ "crypto-common", "generic-array", @@ -153,7 +153,7 @@ version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "82e1366e0c69c9f927b1fa5ce2c7bf9eafc8f9268c0b9800729e8b267612447c" dependencies = [ - "aead 0.5.1", + "aead 0.5.2", "aes 0.8.2", "cipher 0.4.4", "ctr 0.9.2", @@ -226,9 +226,9 @@ dependencies = [ [[package]] name = "anyhow" -version = "1.0.69" +version = "1.0.70" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "224afbd727c3d6e4b90103ece64b8d1b67fbb1973b1046c2281eed3f3803f800" +checksum = "7de8ce5e0f9f8d88245311066a578d72b7af3e7088f32783804676302df237e4" [[package]] name = "arbitrary" @@ -246,9 +246,9 @@ checksum = "bddcadddf5e9015d310179a59bb28c4d4b9920ad0f11e8e14dbadf654890c9a6" [[package]] name = "arrayref" -version = "0.3.6" +version = "0.3.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4c527152e37cf757a3f78aae5a06fbeefdb07ccc535c980a3208ee3060dd544" +checksum = "6b4930d2cb77ce62f89ee5d5289b4ac049559b1c45539271f5ed4fdc7db34545" [[package]] name = "arrayvec" @@ -296,7 +296,7 @@ checksum = "db8b7511298d5b7784b40b092d9e9dcd3a627a5707e4b5e507931ab0d44eeebf" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 1.0.109", "synstructure", ] @@ -308,7 +308,7 @@ checksum = "726535892e8eae7e70657b4c8ea93d26b8553afb1ce617caee529ef96d7dee6c" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 1.0.109", "synstructure", ] @@ -320,7 +320,7 @@ checksum = "2777730b2039ac0f95f093556e61b6d26cebed5393ca6f152717777cec3a42ed" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 1.0.109", ] [[package]] @@ -331,22 +331,22 @@ checksum = "e22d1f4b888c298a027c99dc9048015fac177587de20fc30232a057dfbe24a21" [[package]] name = "async-io" -version = "1.12.0" +version = "1.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c374dda1ed3e7d8f0d9ba58715f924862c63eae6849c92d3a18e7fbde9e2794" +checksum = "0fc5b45d93ef0529756f812ca52e44c221b35341892d3dcc34132ac02f3dd2af" dependencies = [ "async-lock", "autocfg 1.1.0", + "cfg-if", "concurrent-queue", "futures-lite", - "libc", "log", "parking", "polling", + "rustix", "slab", - "socket2", + "socket2 0.4.9", "waker-fn", - "windows-sys 0.42.0", ] [[package]] @@ -377,18 +377,18 @@ checksum = "e4655ae1a7b0cdf149156f780c5bf3f1352bc53cbd9e0a361a7ef7b22947e965" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 1.0.109", ] [[package]] name = "async-trait" -version = "0.1.66" +version = "0.1.68" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b84f9ebcc6c1f5b8cb160f6990096a5c127f423fcb6e1ccc46c370cbdfb75dfc" +checksum = "b9ccdd8f2a161be9bd5c023df56f1b2a0bd1d83872ae53b71a84a12c9bf6e842" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.13", ] [[package]] @@ -452,7 +452,7 @@ dependencies = [ "proc-macro-error", "proc-macro2", "quote", - "syn", + "syn 1.0.109", ] [[package]] @@ -805,6 +805,17 @@ dependencies = [ "zeroize", ] +[[package]] +name = "bollard-stubs" +version = "1.41.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed2f2e73fffe9455141e170fb9c1feb0ac521ec7e7dcd47a7cab72a658490fb8" +dependencies = [ + "chrono", + "serde", + "serde_with", +] + [[package]] name = "boot_node" version = "4.0.1" @@ -994,6 +1005,7 @@ dependencies = [ "js-sys", "num-integer", "num-traits", + "serde", "time 0.1.45", "wasm-bindgen", "winapi", @@ -1029,9 +1041,9 @@ dependencies = [ [[package]] name = "clang-sys" -version = "1.6.0" +version = "1.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77ed9a53e5d4d9c573ae844bfac6872b159cb1d1585a83b29e7a64b7eef7332a" +checksum = "c688fc74432808e3eb684cae8830a86be1d66a2bd58e1f248ed0960a590baf6f" dependencies = [ "glob", "libc", @@ -1112,9 +1124,9 @@ dependencies = [ [[package]] name = "cmake" -version = "0.1.49" +version = "0.1.50" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db34956e100b30725f2eb215f90d4871051239535632f84fea3bc92722c66b7c" +checksum = "a31c789563b815f77f4250caee12365734369f942439b7defd71e18a48197130" dependencies = [ "cc", ] @@ -1141,7 +1153,7 @@ name = "compare_fields_derive" version = "0.2.0" dependencies = [ "quote", - "syn", + "syn 1.0.109", ] [[package]] @@ -1187,9 +1199,9 @@ dependencies = [ [[package]] name = "core-foundation-sys" -version = "0.8.3" +version = "0.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5827cebf4670468b8772dd191856768aedcb1b0278a04f989f7766351917b9dc" +checksum = "e496a50fda8aacccc86d7529e2c1e0892dbd0f898a6b5645b5561b89c3210efa" [[package]] name = "core2" @@ -1202,9 +1214,9 @@ dependencies = [ [[package]] name = "cpufeatures" -version = "0.2.5" +version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "28d997bd5e24a5928dd43e46dc529867e207907fe0b239c3477d924f7f2ca320" +checksum = "280a9f2d8b3a38871a3c8a46fb80db65e5e5ed97da80c4d08bf27fb63e35e181" dependencies = [ "libc", ] @@ -1425,9 +1437,9 @@ dependencies = [ [[package]] name = "curve25519-dalek" -version = "4.0.0-rc.1" +version = "4.0.0-rc.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8d4ba9852b42210c7538b75484f9daa0655e9a3ac04f693747bb0f02cf3cfe16" +checksum = "03d928d978dbec61a1167414f5ec534f24bea0d7a0d24dd9b6233d3d8223e585" dependencies = [ "cfg-if", "fiat-crypto", @@ -1439,9 +1451,9 @@ dependencies = [ [[package]] name = "cxx" -version = "1.0.92" +version = "1.0.94" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a140f260e6f3f79013b8bfc65e7ce630c9ab4388c6a89c71e07226f49487b72" +checksum = "f61f1b6389c3fe1c316bf8a4dccc90a38208354b330925bce1f74a6c4756eb93" dependencies = [ "cc", "cxxbridge-flags", @@ -1451,9 +1463,9 @@ dependencies = [ [[package]] name = "cxx-build" -version = "1.0.92" +version = "1.0.94" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da6383f459341ea689374bf0a42979739dc421874f112ff26f829b8040b8e613" +checksum = "12cee708e8962df2aeb38f594aae5d827c022b6460ac71a7a3e2c3c2aae5a07b" dependencies = [ "cc", "codespan-reporting", @@ -1461,24 +1473,24 @@ dependencies = [ "proc-macro2", "quote", "scratch", - "syn", + "syn 2.0.13", ] [[package]] name = "cxxbridge-flags" -version = "1.0.92" +version = "1.0.94" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90201c1a650e95ccff1c8c0bb5a343213bdd317c6e600a93075bca2eff54ec97" +checksum = "7944172ae7e4068c533afbb984114a56c46e9ccddda550499caa222902c7f7bb" [[package]] name = "cxxbridge-macro" -version = "1.0.92" +version = "1.0.94" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b75aed41bb2e6367cae39e6326ef817a851db13c13e4f3263714ca3cfb8de56" +checksum = "2345488264226bf682893e25de0769f3360aac9957980ec49361b083ddaa5bc5" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.13", ] [[package]] @@ -1512,7 +1524,7 @@ dependencies = [ "proc-macro2", "quote", "strsim 0.10.0", - "syn", + "syn 1.0.109", ] [[package]] @@ -1526,7 +1538,7 @@ dependencies = [ "proc-macro2", "quote", "strsim 0.10.0", - "syn", + "syn 1.0.109", ] [[package]] @@ -1537,7 +1549,7 @@ checksum = "9c972679f83bdf9c42bd905396b6c3588a843a17f0f16dfcfa3e2c5d57441835" dependencies = [ "darling_core 0.13.4", "quote", - "syn", + "syn 1.0.109", ] [[package]] @@ -1548,7 +1560,7 @@ checksum = "a4aab4dbc9f7611d8b55048a3a16d2d010c2c8334e46304b40ac1cc14bf3b48e" dependencies = [ "darling_core 0.14.4", "quote", - "syn", + "syn 1.0.109", ] [[package]] @@ -1594,7 +1606,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a5bbed42daaa95e780b60a50546aa345b8413a1e46f9a40a12907d3598f038db" dependencies = [ "data-encoding", - "syn", + "syn 1.0.109", ] [[package]] @@ -1692,7 +1704,7 @@ checksum = "fcc3dd5e9e9c0b295d6e1e4d811fb6f157d5ffd784b8d202fc62eac8035a770b" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 1.0.109", ] [[package]] @@ -1702,7 +1714,7 @@ source = "git+https://github.com/michaelsproul/arbitrary?rev=f002b99989b561ddce6 dependencies = [ "proc-macro2", "quote", - "syn", + "syn 1.0.109", ] [[package]] @@ -1723,7 +1735,7 @@ dependencies = [ "darling 0.14.4", "proc-macro2", "quote", - "syn", + "syn 1.0.109", ] [[package]] @@ -1733,7 +1745,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8f0314b72bed045f3a68671b3c86328386762c93f82d98c65c3cb5e5f573dd68" dependencies = [ "derive_builder_core", - "syn", + "syn 1.0.109", ] [[package]] @@ -1746,7 +1758,44 @@ dependencies = [ "proc-macro2", "quote", "rustc_version 0.4.0", - "syn", + "syn 1.0.109", +] + +[[package]] +name = "diesel" +version = "2.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4391a22b19c916e50bec4d6140f29bdda3e3bb187223fe6e3ea0b6e4d1021c04" +dependencies = [ + "bitflags", + "byteorder", + "diesel_derives", + "itoa", + "pq-sys", + "r2d2", +] + +[[package]] +name = "diesel_derives" +version = "2.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ad74fdcf086be3d4fdd142f67937678fe60ed431c3b2f08599e7687269410c4" +dependencies = [ + "proc-macro-error", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "diesel_migrations" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e9ae22beef5e9d6fab9225ddb073c1c6c1a7a6ded5019d5da11d1e5c5adc34e2" +dependencies = [ + "diesel", + "migrations_internals", + "migrations_macros", ] [[package]] @@ -1843,7 +1892,7 @@ dependencies = [ "rand 0.8.5", "rlp", "smallvec", - "socket2", + "socket2 0.4.9", "tokio", "tokio-stream", "tokio-util 0.6.10", @@ -1861,7 +1910,7 @@ checksum = "3bf95dc3f046b9da4f2d51833c0d3547d8564ef6910f5c1ed130306a75b92886" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 1.0.109", ] [[package]] @@ -2021,7 +2070,7 @@ dependencies = [ "heck", "proc-macro2", "quote", - "syn", + "syn 1.0.109", ] [[package]] @@ -2071,13 +2120,13 @@ dependencies = [ [[package]] name = "errno" -version = "0.2.8" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f639046355ee4f37944e44f60642c6f3a7efa3cf6b78c78a0d989a8ce6c396a1" +checksum = "50d6a0976c999d473fe89ad888d5a284e55366d9dc9038b1ba2aa15128c4afa0" dependencies = [ "errno-dragonfly", "libc", - "winapi", + "windows-sys 0.45.0", ] [[package]] @@ -2283,7 +2332,7 @@ dependencies = [ "eth2_ssz", "proc-macro2", "quote", - "syn", + "syn 1.0.109", ] [[package]] @@ -2632,9 +2681,9 @@ checksum = "ec54ac60a7f2ee9a97cad9946f9bf629a3bc6a7ae59e68983dc9318f5a54b81a" [[package]] name = "fiat-crypto" -version = "0.1.19" +version = "0.1.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93ace6ec7cc19c8ed33a32eaa9ea692d7faea05006b5356b9e2b668ec4bc3955" +checksum = "e825f6987101665dea6ec934c09ec6d721de7bc1bf92248e1d5810c8cd636b77" [[package]] name = "field-offset" @@ -2765,9 +2814,9 @@ checksum = "e6d5a32815ae3f33302d95fdcb2ce17862f8c65363dcfd29360480ba1001fc9c" [[package]] name = "futures" -version = "0.3.27" +version = "0.3.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "531ac96c6ff5fd7c62263c5e3c67a603af4fcaee2e1a0ae5565ba3a11e69e549" +checksum = "23342abe12aba583913b2e62f22225ff9c950774065e4bfb61a19cd9770fec40" dependencies = [ "futures-channel", "futures-core", @@ -2780,9 +2829,9 @@ dependencies = [ [[package]] name = "futures-channel" -version = "0.3.27" +version = "0.3.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "164713a5a0dcc3e7b4b1ed7d3b433cabc18025386f9339346e8daf15963cf7ac" +checksum = "955518d47e09b25bbebc7a18df10b81f0c766eaf4c4f1cccef2fca5f2a4fb5f2" dependencies = [ "futures-core", "futures-sink", @@ -2790,15 +2839,15 @@ dependencies = [ [[package]] name = "futures-core" -version = "0.3.27" +version = "0.3.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "86d7a0c1aa76363dac491de0ee99faf6941128376f1cf96f07db7603b7de69dd" +checksum = "4bca583b7e26f571124fe5b7561d49cb2868d79116cfa0eefce955557c6fee8c" [[package]] name = "futures-executor" -version = "0.3.27" +version = "0.3.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1997dd9df74cdac935c76252744c1ed5794fac083242ea4fe77ef3ed60ba0f83" +checksum = "ccecee823288125bd88b4d7f565c9e58e41858e47ab72e8ea2d64e93624386e0" dependencies = [ "futures-core", "futures-task", @@ -2808,9 +2857,9 @@ dependencies = [ [[package]] name = "futures-io" -version = "0.3.27" +version = "0.3.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89d422fa3cbe3b40dca574ab087abb5bc98258ea57eea3fd6f1fa7162c778b91" +checksum = "4fff74096e71ed47f8e023204cfd0aa1289cd54ae5430a9523be060cdb849964" [[package]] name = "futures-lite" @@ -2829,13 +2878,13 @@ dependencies = [ [[package]] name = "futures-macro" -version = "0.3.27" +version = "0.3.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3eb14ed937631bd8b8b8977f2c198443447a8355b6e3ca599f38c975e5a963b6" +checksum = "89ca545a94061b6365f2c7355b4b32bd20df3ff95f02da9329b34ccc3bd6ee72" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.13", ] [[package]] @@ -2851,15 +2900,15 @@ dependencies = [ [[package]] name = "futures-sink" -version = "0.3.27" +version = "0.3.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec93083a4aecafb2a80a885c9de1f0ccae9dbd32c2bb54b0c3a65690e0b8d2f2" +checksum = "f43be4fe21a13b9781a69afa4985b0f6ee0e1afab2c6f454a8cf30e2b2237b6e" [[package]] name = "futures-task" -version = "0.3.27" +version = "0.3.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd65540d33b37b16542a0438c12e6aeead10d4ac5d05bd3f805b8f35ab592879" +checksum = "76d3d132be6c0e6aa1534069c705a74a5997a356c0dc2f86a47765e5617c5b65" [[package]] name = "futures-timer" @@ -2869,9 +2918,9 @@ checksum = "e64b03909df88034c26dc1547e8970b91f98bdb65165d6a4e9110d94263dbb2c" [[package]] name = "futures-util" -version = "0.3.27" +version = "0.3.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3ef6b17e481503ec85211fed8f39d1970f128935ca1f814cd32ac4a6842e84ab" +checksum = "26b01e40b772d54cf6c6d721c1d1abd0647a0106a12ecaa1c186273392a69533" dependencies = [ "futures-channel", "futures-core", @@ -2896,9 +2945,9 @@ dependencies = [ [[package]] name = "generic-array" -version = "0.14.6" +version = "0.14.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bff49e947297f3312447abdca79f45f4738097cc82b06e72054d2223f601f1b9" +checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" dependencies = [ "typenum", "version_check", @@ -2996,7 +3045,7 @@ dependencies = [ "proc-macro-hack", "proc-macro2", "quote", - "syn", + "syn 1.0.109", ] [[package]] @@ -3150,6 +3199,12 @@ dependencies = [ "libc", ] +[[package]] +name = "hermit-abi" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fed44880c466736ef9a5c5b5facefb5ed0785676d0c02d612db14e54f0d84286" + [[package]] name = "hex" version = "0.4.3" @@ -3352,7 +3407,7 @@ dependencies = [ "httpdate", "itoa", "pin-project-lite 0.2.9", - "socket2", + "socket2 0.4.9", "tokio", "tower-service", "tracing", @@ -3387,16 +3442,16 @@ dependencies = [ [[package]] name = "iana-time-zone" -version = "0.1.53" +version = "0.1.54" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64c122667b287044802d6ce17ee2ddf13207ed924c712de9a66a5814d5b64765" +checksum = "0c17cc76786e99f8d2f055c11159e7f0091c42474dcc3189fbab96072e873e6d" dependencies = [ "android_system_properties", "core-foundation-sys", "iana-time-zone-haiku", "js-sys", "wasm-bindgen", - "winapi", + "windows 0.46.0", ] [[package]] @@ -3469,9 +3524,9 @@ dependencies = [ [[package]] name = "if-watch" -version = "3.0.0" +version = "3.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba7abdbb86e485125dad06c2691e1e393bf3b08c7b743b43aa162a00fd39062e" +checksum = "a9465340214b296cd17a0009acdb890d6160010b8adf8f78a00d0d7ab270f79f" dependencies = [ "async-io", "core-foundation", @@ -3483,7 +3538,7 @@ dependencies = [ "rtnetlink", "system-configuration", "tokio", - "windows", + "windows 0.34.0", ] [[package]] @@ -3552,14 +3607,14 @@ checksum = "11d7a9f6330b71fea57921c9b61c47ee6e84f72d394754eff6163ae67e7395eb" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 1.0.109", ] [[package]] name = "indexmap" -version = "1.9.2" +version = "1.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1885e79c1fc4b10f0e172c475f458b7f7b93061064d98c3293e98c5ba0c8b399" +checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" dependencies = [ "autocfg 1.1.0", "hashbrown 0.12.3", @@ -3625,10 +3680,11 @@ dependencies = [ [[package]] name = "io-lifetimes" -version = "1.0.6" +version = "1.0.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cfa919a82ea574332e2de6e74b4c36e74d41982b335080fa59d4ef31be20fdf3" +checksum = "09270fd4fa1111bc614ed2246c7ef56239a3063d5be0d1ec3b589c505d400aeb" dependencies = [ + "hermit-abi 0.3.1", "libc", "windows-sys 0.45.0", ] @@ -3639,7 +3695,7 @@ version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bd302af1b90f2463a98fa5ad469fc212c8e3175a41c3068601bfa2727591c5be" dependencies = [ - "socket2", + "socket2 0.4.9", "widestring 0.5.1", "winapi", "winreg", @@ -3647,9 +3703,9 @@ dependencies = [ [[package]] name = "ipnet" -version = "2.7.1" +version = "2.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30e22bd8629359895450b59ea7a776c850561b96a3b1d31321c1949d9e6c9146" +checksum = "12b6ee2129af8d4fb011108c73d99a1b83a85977f23b82460c0ae2e25bb4b57f" [[package]] name = "itertools" @@ -3723,11 +3779,11 @@ dependencies = [ [[package]] name = "jsonwebtoken" -version = "8.2.0" +version = "8.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09f4f04699947111ec1733e71778d763555737579e44b85844cae8e1940a1828" +checksum = "6971da4d9c3aa03c3d8f3ff0f4155b534aad021292003895a469716b2a230378" dependencies = [ - "base64 0.13.1", + "base64 0.21.0", "pem", "ring", "serde", @@ -4021,7 +4077,7 @@ dependencies = [ "instant", "libp2p-identity", "log", - "multiaddr 0.17.0", + "multiaddr 0.17.1", "multihash 0.17.0", "multistream-select 0.12.1", "once_cell", @@ -4103,17 +4159,16 @@ dependencies = [ [[package]] name = "libp2p-identity" -version = "0.1.0" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff6c9cb71e2333d31f18e7556b9a5f1d0a2e013effc9325e36f436be65fe7bd2" +checksum = "8a8ea433ae0cea7e3315354305237b9897afe45278b2118a7a57ca744e70fd27" dependencies = [ "bs58", "ed25519-dalek", "log", - "multiaddr 0.17.0", + "multiaddr 0.17.1", "multihash 0.17.0", "prost", - "prost-build", "quick-protobuf", "rand 0.8.5", "thiserror", @@ -4134,7 +4189,7 @@ dependencies = [ "log", "rand 0.8.5", "smallvec", - "socket2", + "socket2 0.4.9", "tokio", "trust-dns-proto", "void", @@ -4262,7 +4317,7 @@ checksum = "9d527d5827582abd44a6d80c07ff8b50b4ee238a8979e05998474179e79dc400" dependencies = [ "heck", "quote", - "syn", + "syn 1.0.109", ] [[package]] @@ -4277,7 +4332,7 @@ dependencies = [ "libc", "libp2p-core 0.38.0", "log", - "socket2", + "socket2 0.4.9", "tokio", ] @@ -4560,9 +4615,9 @@ checksum = "0717cef1bc8b636c6e1c1bbdefc09e6322da8a9321966e8928ef80d20f7f770f" [[package]] name = "linux-raw-sys" -version = "0.1.4" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f051f77a7c8e6957c0696eac88f26b0117e54f52d3fc682ab19397a8812846a4" +checksum = "d59d8c75012853d2e872fb56bc8a2e53718e2cafe1a4c823143141c6d90c322f" [[package]] name = "lmdb-rkv" @@ -4787,7 +4842,7 @@ dependencies = [ "proc-macro2", "quote", "smallvec", - "syn", + "syn 1.0.109", ] [[package]] @@ -4807,6 +4862,27 @@ dependencies = [ "tracing", ] +[[package]] +name = "migrations_internals" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c493c09323068c01e54c685f7da41a9ccf9219735c3766fbfd6099806ea08fbc" +dependencies = [ + "serde", + "toml", +] + +[[package]] +name = "migrations_macros" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a8ff27a350511de30cdabb77147501c36ef02e0451d957abea2f30caffb2b58" +dependencies = [ + "migrations_internals", + "proc-macro2", + "quote", +] + [[package]] name = "milagro_bls" version = "1.4.2" @@ -4821,9 +4897,9 @@ dependencies = [ [[package]] name = "mime" -version = "0.3.16" +version = "0.3.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a60c7ce501c71e03a9c9c0d35b861413ae925bd979cc7a4e30d060069aaac8d" +checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" [[package]] name = "mime_guess" @@ -4926,13 +5002,14 @@ dependencies = [ [[package]] name = "multiaddr" -version = "0.17.0" +version = "0.17.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b53e0cc5907a5c216ba6584bf74be8ab47d6d6289f72793b2dddbf15dc3bf8c" +checksum = "2b36f567c7099511fa8612bbbb52dda2419ce0bdbacf31714e3a5ffdb766d3bd" dependencies = [ "arrayref", "byteorder", "data-encoding", + "log", "multibase", "multihash 0.17.0", "percent-encoding", @@ -4989,7 +5066,7 @@ dependencies = [ "proc-macro-error", "proc-macro2", "quote", - "syn", + "syn 1.0.109", "synstructure", ] @@ -5421,14 +5498,14 @@ dependencies = [ "bytes", "proc-macro2", "quote", - "syn", + "syn 1.0.109", ] [[package]] name = "openssl" -version = "0.10.48" +version = "0.10.49" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "518915b97df115dd36109bfa429a48b8f737bd05508cf9588977b599648926d2" +checksum = "4d2f106ab837a24e03672c59b1239669a0596406ff657c3c0835b6b7f0f35a33" dependencies = [ "bitflags", "cfg-if", @@ -5441,13 +5518,13 @@ dependencies = [ [[package]] name = "openssl-macros" -version = "0.1.0" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b501e44f11665960c7e7fcf062c7d96a14ade4aa98116c004b2e37b5be7d736c" +checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.13", ] [[package]] @@ -5458,20 +5535,19 @@ checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" [[package]] name = "openssl-src" -version = "111.25.1+1.1.1t" +version = "111.25.2+1.1.1t" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ef9a9cc6ea7d9d5e7c4a913dc4b48d0e359eddf01af1dfec96ba7064b4aba10" +checksum = "320708a054ad9b3bf314688b5db87cf4d6683d64cfc835e2337924ae62bf4431" dependencies = [ "cc", ] [[package]] name = "openssl-sys" -version = "0.9.83" +version = "0.9.84" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "666416d899cf077260dac8698d60a60b435a46d57e82acb1be3d0dad87284e5b" +checksum = "3a20eace9dc2d82904039cb76dcf50fb1a0bba071cfd1629720b5d6f1ddba0fa" dependencies = [ - "autocfg 1.1.0", "cc", "libc", "openssl-src", @@ -5578,7 +5654,7 @@ dependencies = [ "proc-macro-crate", "proc-macro2", "quote", - "syn", + "syn 1.0.109", ] [[package]] @@ -5590,7 +5666,7 @@ dependencies = [ "proc-macro-crate", "proc-macro2", "quote", - "syn", + "syn 1.0.109", ] [[package]] @@ -5629,7 +5705,7 @@ dependencies = [ "cfg-if", "instant", "libc", - "redox_syscall", + "redox_syscall 0.2.16", "smallvec", "winapi", ] @@ -5642,7 +5718,7 @@ checksum = "9069cbb9f99e3a5083476ccb29ceb1de18b9118cafa53e90c9551235de2b9521" dependencies = [ "cfg-if", "libc", - "redox_syscall", + "redox_syscall 0.2.16", "smallvec", "windows-sys 0.45.0", ] @@ -5721,6 +5797,24 @@ dependencies = [ "rustc_version 0.4.0", ] +[[package]] +name = "phf" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "928c6535de93548188ef63bb7c4036bd415cd8f36ad25af44b9789b2ee72a48c" +dependencies = [ + "phf_shared", +] + +[[package]] +name = "phf_shared" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e1fb5f6f826b772a8d4c0394209441e7d37cbbb967ae9c7e0e8134365c9ee676" +dependencies = [ + "siphasher", +] + [[package]] name = "pin-project" version = "1.0.12" @@ -5738,7 +5832,7 @@ checksum = "069bdb1e05adc7a8990dce9cc75370895fbe4e3d58b9b73bf1aee56359344a55" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 1.0.109", ] [[package]] @@ -5866,6 +5960,35 @@ dependencies = [ "universal-hash 0.5.0", ] +[[package]] +name = "postgres-protocol" +version = "0.6.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78b7fa9f396f51dffd61546fd8573ee20592287996568e6175ceb0f8699ad75d" +dependencies = [ + "base64 0.21.0", + "byteorder", + "bytes", + "fallible-iterator", + "hmac 0.12.1", + "md-5", + "memchr", + "rand 0.8.5", + "sha2 0.10.6", + "stringprep", +] + +[[package]] +name = "postgres-types" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f028f05971fe20f512bcc679e2c10227e57809a3af86a7606304435bc8896cd6" +dependencies = [ + "bytes", + "fallible-iterator", + "postgres-protocol", +] + [[package]] name = "ppv-lite86" version = "0.2.17" @@ -5873,13 +5996,22 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" [[package]] -name = "prettyplease" -version = "0.1.24" +name = "pq-sys" +version = "0.4.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ebcd279d20a4a0a2404a33056388e950504d891c855c7975b9a8fef75f3bf04" +checksum = "3b845d6d8ec554f972a2c5298aad68953fd64e7441e846075450b44656a016d1" +dependencies = [ + "vcpkg", +] + +[[package]] +name = "prettyplease" +version = "0.1.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c8646e95016a7a6c4adea95bafa8a16baab64b583356217f2c85db4a39d9a86" dependencies = [ "proc-macro2", - "syn", + "syn 1.0.109", ] [[package]] @@ -5928,7 +6060,7 @@ dependencies = [ "proc-macro-error-attr", "proc-macro2", "quote", - "syn", + "syn 1.0.109", "version_check", ] @@ -5951,9 +6083,9 @@ checksum = "dc375e1527247fe1a97d8b7156678dfe7c1af2fc075c9a4db3690ecd2a148068" [[package]] name = "proc-macro2" -version = "1.0.52" +version = "1.0.55" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d0e1ae9e836cc3beddd63db0df682593d7e2d3d891ae8c9083d2113e1744224" +checksum = "1d0dd4be24fcdcfeaa12a432d588dc59bbad6cad3510c67e74a2b6b2fc950564" dependencies = [ "unicode-ident", ] @@ -6005,7 +6137,7 @@ checksum = "66a455fbcb954c1a7decf3c586e860fd7889cddf4b8e164be736dbac95a953cd" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 1.0.109", ] [[package]] @@ -6035,7 +6167,7 @@ dependencies = [ "prost", "prost-types", "regex", - "syn", + "syn 1.0.109", "tempfile", "which", ] @@ -6063,7 +6195,7 @@ dependencies = [ "itertools", "proc-macro2", "quote", - "syn", + "syn 1.0.109", ] [[package]] @@ -6148,7 +6280,7 @@ checksum = "608c156fd8e97febc07dc9c2e2c80bf74cfc6ef26893eae3daf8bc2bc94a4b7f" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 1.0.109", ] [[package]] @@ -6164,9 +6296,9 @@ dependencies = [ [[package]] name = "quinn-proto" -version = "0.9.2" +version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72ef4ced82a24bb281af338b9e8f94429b6eca01b4e66d899f40031f074e74c9" +checksum = "67c10f662eee9c94ddd7135043e544f3c82fa839a1e7b865911331961b53186c" dependencies = [ "bytes", "rand 0.8.5", @@ -6358,6 +6490,15 @@ dependencies = [ "bitflags", ] +[[package]] +name = "redox_syscall" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "567664f262709473930a4bf9e51bf2ebf3348f2e748ccc50dea20646858f8f29" +dependencies = [ + "bitflags", +] + [[package]] name = "redox_users" version = "0.4.3" @@ -6365,15 +6506,15 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b033d837a7cf162d7993aded9304e30a83213c648b6e389db233191f891e5c2b" dependencies = [ "getrandom 0.2.8", - "redox_syscall", + "redox_syscall 0.2.16", "thiserror", ] [[package]] name = "regex" -version = "1.7.1" +version = "1.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "48aaa5748ba571fb95cd2c85c09f629215d3a6ece942baa100950af03a34f733" +checksum = "8b1f693b24f6ac912f4893ef08244d70b6067480d2f1a46e950c9691e6749d1d" dependencies = [ "aho-corasick", "memchr", @@ -6391,15 +6532,15 @@ dependencies = [ [[package]] name = "regex-syntax" -version = "0.6.28" +version = "0.6.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "456c603be3e8d448b072f410900c09faf164fbce2d480456f50eea6e25f9c848" +checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1" [[package]] name = "reqwest" -version = "0.11.14" +version = "0.11.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21eed90ec8570952d53b772ecf8f206aa1ec9a3d76b2521c56c42973f2d91ee9" +checksum = "27b71749df584b7f4cac2c426c127a7c785a5106cc98f7a8feb044115f0fa254" dependencies = [ "base64 0.21.0", "bytes", @@ -6499,7 +6640,7 @@ checksum = "e33d7b2abe0c340d8797fe2907d3f20d3b5ea5908683618bfe80df7f621f672a" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 1.0.109", ] [[package]] @@ -6568,9 +6709,9 @@ dependencies = [ [[package]] name = "rustc-demangle" -version = "0.1.21" +version = "0.1.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ef03e0a2b150c7a90d01faf6254c9c48a41e95fb2a8c2ac1c6f0d2b9aefc342" +checksum = "d4a36c42d1873f9a77c53bde094f9664d9891bc604a45b4798fd2c389ed12e5b" [[package]] name = "rustc-hash" @@ -6613,9 +6754,9 @@ dependencies = [ [[package]] name = "rustix" -version = "0.36.9" +version = "0.37.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd5c6ff11fecd55b40746d1995a02f2eb375bf8c00d192d521ee09f42bef37bc" +checksum = "d097081ed288dfe45699b72f5b5d648e5f15d64d900c7080273baa20c16a6849" dependencies = [ "bitflags", "errno", @@ -6712,9 +6853,9 @@ dependencies = [ [[package]] name = "scale-info" -version = "2.3.1" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "001cf62ece89779fd16105b5f515ad0e5cedcd5440d3dd806bb067978e7c3608" +checksum = "0cfdffd972d76b22f3d7f81c8be34b2296afd3a25e0a547bd9abe340a4dbbe97" dependencies = [ "cfg-if", "derive_more", @@ -6724,14 +6865,14 @@ dependencies = [ [[package]] name = "scale-info-derive" -version = "2.3.1" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "303959cf613a6f6efd19ed4b4ad5bf79966a13352716299ad532cfb115f4205c" +checksum = "61fa974aea2d63dd18a4ec3a49d59af9f34178c73a4f56d2f18205628d00681e" dependencies = [ "proc-macro-crate", "proc-macro2", "quote", - "syn", + "syn 1.0.109", ] [[package]] @@ -6906,9 +7047,9 @@ dependencies = [ [[package]] name = "serde" -version = "1.0.155" +version = "1.0.159" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "71f2b4817415c6d4210bfe1c7bfcf4801b2d904cb4d0e1a8fdb651013c9e86b8" +checksum = "3c04e8343c3daeec41f58990b9d77068df31209f2af111e059e9fe9646693065" dependencies = [ "serde_derive", ] @@ -6935,20 +7076,20 @@ dependencies = [ [[package]] name = "serde_derive" -version = "1.0.155" +version = "1.0.159" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d071a94a3fac4aff69d023a7f411e33f40f3483f8c5190b1953822b6b76d7630" +checksum = "4c614d17805b093df4b147b51339e7e44bf05ef59fba1e45d83500bcfb4d8585" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.13", ] [[package]] name = "serde_json" -version = "1.0.94" +version = "1.0.95" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c533a59c9d8a93a09c6ab31f0fd5e5f4dd1b8fc9434804029839884765d04ea" +checksum = "d721eca97ac802aa7777b701877c8004d950fc142651367300d21c1cc0194744" dependencies = [ "itoa", "ryu", @@ -6957,13 +7098,13 @@ dependencies = [ [[package]] name = "serde_repr" -version = "0.1.11" +version = "0.1.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "395627de918015623b32e7669714206363a7fc00382bf477e72c1f7533e8eafc" +checksum = "bcec881020c684085e55a25f7fd888954d56609ef363479dc5a1305eb0d40cab" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.13", ] [[package]] @@ -6997,7 +7138,7 @@ dependencies = [ "darling 0.13.4", "proc-macro2", "quote", - "syn", + "syn 1.0.109", ] [[package]] @@ -7157,6 +7298,12 @@ dependencies = [ "types", ] +[[package]] +name = "siphasher" +version = "0.3.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7bd3e3206899af3f8b12af284fafc038cc1dc2b41d1b89dd17297221c5d225de" + [[package]] name = "slab" version = "0.4.8" @@ -7358,14 +7505,14 @@ checksum = "5e9f0ab6ef7eb7353d9119c170a436d1bf248eea575ac42d19d12f4e34130831" [[package]] name = "snow" -version = "0.9.2" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ccba027ba85743e09d15c03296797cad56395089b832b48b5a5217880f57733" +checksum = "774d05a3edae07ce6d68ea6984f3c05e9bba8927e3dd591e3b479e5b03213d0d" dependencies = [ "aes-gcm 0.9.4", "blake2", "chacha20poly1305", - "curve25519-dalek 4.0.0-rc.1", + "curve25519-dalek 4.0.0-rc.2", "rand_core 0.6.4", "ring", "rustc_version 0.4.0", @@ -7383,6 +7530,16 @@ dependencies = [ "winapi", ] +[[package]] +name = "socket2" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bc8d618c6641ae355025c449427f9e96b98abf99a772be3cef6708d15c77147a" +dependencies = [ + "libc", + "windows-sys 0.45.0", +] + [[package]] name = "soketto" version = "0.7.1" @@ -7436,7 +7593,7 @@ source = "git+https://github.com/ralexstokes//ssz-rs?rev=adf1a0b14cef90b9536f28e dependencies = [ "proc-macro2", "quote", - "syn", + "syn 1.0.109", ] [[package]] @@ -7509,6 +7666,16 @@ dependencies = [ "types", ] +[[package]] +name = "stringprep" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ee348cb74b87454fff4b551cbf727025810a004f88aeacae7f85b87f4e9a1c1" +dependencies = [ + "unicode-bidi", + "unicode-normalization", +] + [[package]] name = "strsim" version = "0.8.0" @@ -7540,7 +7707,7 @@ dependencies = [ "proc-macro2", "quote", "rustversion", - "syn", + "syn 1.0.109", ] [[package]] @@ -7588,7 +7755,7 @@ dependencies = [ "proc-macro2", "quote", "smallvec", - "syn", + "syn 1.0.109", ] [[package]] @@ -7602,7 +7769,7 @@ dependencies = [ "proc-macro2", "quote", "smallvec", - "syn", + "syn 1.0.109", ] [[package]] @@ -7625,6 +7792,17 @@ dependencies = [ "unicode-ident", ] +[[package]] +name = "syn" +version = "2.0.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c9da457c5285ac1f936ebd076af6dac17a61cfe7826f2076b4d015cf47bc8ec" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + [[package]] name = "sync_wrapper" version = "0.1.2" @@ -7639,7 +7817,7 @@ checksum = "f36bdaa60a83aca3921b5259d5400cbf5e90fc51931376a9bd4a0eb79aa7210f" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 1.0.109", "unicode-xid", ] @@ -7732,15 +7910,15 @@ dependencies = [ [[package]] name = "tempfile" -version = "3.4.0" +version = "3.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af18f7ae1acd354b992402e9ec5864359d693cd8a79dcbef59f76891701c1e95" +checksum = "b9fbec84f381d5795b08656e4912bec604d162bff9291d6189a78f4c8ab87998" dependencies = [ "cfg-if", "fastrand", - "redox_syscall", + "redox_syscall 0.3.5", "rustix", - "windows-sys 0.42.0", + "windows-sys 0.45.0", ] [[package]] @@ -7776,7 +7954,24 @@ name = "test_random_derive" version = "0.2.0" dependencies = [ "quote", - "syn", + "syn 1.0.109", +] + +[[package]] +name = "testcontainers" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0e2b1567ca8a2b819ea7b28c92be35d9f76fb9edb214321dcc86eb96023d1f87" +dependencies = [ + "bollard-stubs", + "futures", + "hex", + "hmac 0.12.1", + "log", + "rand 0.8.5", + "serde", + "serde_json", + "sha2 0.10.6", ] [[package]] @@ -7790,22 +7985,22 @@ dependencies = [ [[package]] name = "thiserror" -version = "1.0.39" +version = "1.0.40" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a5ab016db510546d856297882807df8da66a16fb8c4101cb8b30054b0d5b2d9c" +checksum = "978c9a314bd8dc99be594bc3c175faaa9794be04a5a5e153caba6915336cebac" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.39" +version = "1.0.40" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5420d42e90af0c38c3290abcca25b9b3bdf379fc9f55c528f53a269d9c9a267e" +checksum = "f9456a42c5b0d803c8cd86e73dd7cc9edd429499f37a3550d286d5e86720569f" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.13", ] [[package]] @@ -7933,20 +8128,19 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.26.0" +version = "1.27.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03201d01c3c27a29c8a5cee5b55a93ddae1ccf6f08f65365c2c918f8c1b76f64" +checksum = "d0de47a4eecbe11f498978a9b29d792f0d2692d1dd003650c24c76510e3bc001" dependencies = [ "autocfg 1.1.0", "bytes", "libc", - "memchr", "mio", "num_cpus", "parking_lot 0.12.1", "pin-project-lite 0.2.9", "signal-hook-registry", - "socket2", + "socket2 0.4.9", "tokio-macros", "windows-sys 0.45.0", ] @@ -7963,13 +8157,13 @@ dependencies = [ [[package]] name = "tokio-macros" -version = "1.8.2" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d266c00fde287f55d3f1c3e96c500c362a2b8c695076ec180f27918820bc6df8" +checksum = "61a573bdc87985e9d6ddeed1b3d864e8a302c847e40d647746df2f1de209d1ce" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.13", ] [[package]] @@ -7982,6 +8176,30 @@ dependencies = [ "tokio", ] +[[package]] +name = "tokio-postgres" +version = "0.7.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e89f6234aa8fd43779746012fcf53603cdb91fdd8399aa0de868c2d56b6dde1" +dependencies = [ + "async-trait", + "byteorder", + "bytes", + "fallible-iterator", + "futures-channel", + "futures-util", + "log", + "parking_lot 0.12.1", + "percent-encoding", + "phf", + "pin-project-lite 0.2.9", + "postgres-protocol", + "postgres-types", + "socket2 0.5.1", + "tokio", + "tokio-util 0.7.7", +] + [[package]] name = "tokio-rustls" version = "0.22.0" @@ -8154,7 +8372,7 @@ checksum = "4017f8f45139870ca7e672686113917c71c7a6e02d4924eda67186083c03081a" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 1.0.109", ] [[package]] @@ -8222,7 +8440,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ebeb235c5847e2f82cfe0f07eb971d1e5f6804b18dac2ae16349cc604380f82f" dependencies = [ "quote", - "syn", + "syn 1.0.109", ] [[package]] @@ -8246,7 +8464,7 @@ version = "0.4.0" dependencies = [ "darling 0.13.4", "quote", - "syn", + "syn 1.0.109", ] [[package]] @@ -8277,7 +8495,7 @@ dependencies = [ "lazy_static", "rand 0.8.5", "smallvec", - "socket2", + "socket2 0.4.9", "thiserror", "tinyvec", "tokio", @@ -8466,9 +8684,9 @@ dependencies = [ [[package]] name = "unicode-bidi" -version = "0.3.11" +version = "0.3.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "524b68aca1d05e03fdf03fcdce2c6c94b6daf6d16861ddaa7e4f2b6638a9052c" +checksum = "92888ba5573ff080736b3648696b70cafad7d250551175acbaa4e0385b3e1460" [[package]] name = "unicode-ident" @@ -8707,12 +8925,11 @@ checksum = "9d5b2c62b4012a3e1eca5a7e077d13b3bf498c4073e33ccd58626607748ceeca" [[package]] name = "walkdir" -version = "2.3.2" +version = "2.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "808cf2735cd4b6866113f648b791c6adc5714537bc222d9347bb203386ffda56" +checksum = "36df944cda56c7d8d8b7496af378e6b16de9284591917d307c9b4d313c44e698" dependencies = [ "same-file", - "winapi", "winapi-util", ] @@ -8813,7 +9030,7 @@ dependencies = [ "once_cell", "proc-macro2", "quote", - "syn", + "syn 1.0.109", "wasm-bindgen-shared", ] @@ -8847,7 +9064,7 @@ checksum = "2aff81306fcac3c7515ad4e177f521b5c9a15f2b08f4e32d823066102f35a5f6" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 1.0.109", "wasm-bindgen-backend", "wasm-bindgen-shared", ] @@ -8910,6 +9127,39 @@ dependencies = [ "web-sys", ] +[[package]] +name = "watch" +version = "0.1.0" +dependencies = [ + "axum", + "beacon_chain", + "beacon_node", + "bls", + "byteorder", + "clap", + "diesel", + "diesel_migrations", + "env_logger 0.9.3", + "eth2", + "hex", + "http_api", + "hyper", + "log", + "network", + "r2d2", + "rand 0.7.3", + "reqwest", + "serde", + "serde_json", + "serde_yaml", + "testcontainers", + "tokio", + "tokio-postgres", + "types", + "unused_port", + "url", +] + [[package]] name = "web-sys" version = "0.3.61" @@ -9114,7 +9364,7 @@ dependencies = [ "tokio", "webpki 0.21.4", "webrtc-util", - "x25519-dalek 2.0.0-pre.1", + "x25519-dalek 2.0.0-rc.2", "x509-parser 0.13.2", ] @@ -9149,7 +9399,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f08dfd7a6e3987e255c4dbe710dde5d94d0f0574f8a21afa95d171376c143106" dependencies = [ "log", - "socket2", + "socket2 0.4.9", "thiserror", "tokio", "webrtc-util", @@ -9300,6 +9550,15 @@ dependencies = [ "windows_x86_64_msvc 0.34.0", ] +[[package]] +name = "windows" +version = "0.46.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cdacb41e6a96a052c6cb63a144f24900236121c6f63f4f8219fef5977ecb0c25" +dependencies = [ + "windows-targets", +] + [[package]] name = "windows-acl" version = "0.3.0" @@ -9479,12 +9738,13 @@ dependencies = [ [[package]] name = "x25519-dalek" -version = "2.0.0-pre.1" +version = "2.0.0-rc.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5da623d8af10a62342bcbbb230e33e58a63255a58012f8653c578e54bab48df" +checksum = "fabd6e16dd08033932fc3265ad4510cc2eab24656058a6dcb107ffe274abcc95" dependencies = [ - "curve25519-dalek 3.2.0", + "curve25519-dalek 4.0.0-rc.2", "rand_core 0.6.4", + "serde", "zeroize", ] @@ -9574,23 +9834,22 @@ dependencies = [ [[package]] name = "zeroize" -version = "1.5.7" +version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c394b5bd0c6f669e7275d9c20aa90ae064cb22e75a1cad54e1b34088034b149f" +checksum = "2a0956f1ba7c7909bfb66c2e9e4124ab6f6482560f6628b5aaeba39207c9aad9" dependencies = [ "zeroize_derive", ] [[package]] name = "zeroize_derive" -version = "1.3.3" +version = "1.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44bf07cb3e50ea2003396695d58bf46bc9887a1f362260446fad6bc4e79bd36c" +checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" dependencies = [ "proc-macro2", "quote", - "syn", - "synstructure", + "syn 2.0.13", ] [[package]] diff --git a/Cargo.toml b/Cargo.toml index ba07de0443..0290f2ded9 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -87,6 +87,8 @@ members = [ "validator_client", "validator_client/slashing_protection", + + "watch", ] resolver = "2" diff --git a/beacon_node/http_api/Cargo.toml b/beacon_node/http_api/Cargo.toml index 0aa626be0c..e251b04856 100644 --- a/beacon_node/http_api/Cargo.toml +++ b/beacon_node/http_api/Cargo.toml @@ -38,15 +38,15 @@ system_health = { path = "../../common/system_health" } directory = { path = "../../common/directory" } eth2_serde_utils = "0.1.1" operation_pool = { path = "../operation_pool" } +sensitive_url = { path = "../../common/sensitive_url" } +unused_port = {path = "../../common/unused_port"} +logging = { path = "../../common/logging" } +store = { path = "../store" } [dev-dependencies] -store = { path = "../store" } environment = { path = "../../lighthouse/environment" } -sensitive_url = { path = "../../common/sensitive_url" } -logging = { path = "../../common/logging" } serde_json = "1.0.58" proto_array = { path = "../../consensus/proto_array" } -unused_port = {path = "../../common/unused_port"} genesis = { path = "../genesis" } [[test]] diff --git a/beacon_node/http_api/src/lib.rs b/beacon_node/http_api/src/lib.rs index aa52466e26..d19187cb44 100644 --- a/beacon_node/http_api/src/lib.rs +++ b/beacon_node/http_api/src/lib.rs @@ -18,6 +18,7 @@ mod standard_block_rewards; mod state_id; mod sync_committee_rewards; mod sync_committees; +pub mod test_utils; mod ui; mod validator_inclusion; mod version; diff --git a/beacon_node/http_api/tests/common.rs b/beacon_node/http_api/src/test_utils.rs similarity index 96% rename from beacon_node/http_api/tests/common.rs rename to beacon_node/http_api/src/test_utils.rs index 3e34bafe84..6f918e1b9e 100644 --- a/beacon_node/http_api/tests/common.rs +++ b/beacon_node/http_api/src/test_utils.rs @@ -1,3 +1,4 @@ +use crate::{Config, Context}; use beacon_chain::{ test_utils::{ BeaconChainHarness, BoxedMutator, Builder as HarnessBuilder, EphemeralHarnessType, @@ -6,7 +7,6 @@ use beacon_chain::{ }; use directory::DEFAULT_ROOT_DIR; use eth2::{BeaconNodeHttpClient, Timeouts}; -use http_api::{Config, Context}; use lighthouse_network::{ discv5::enr::{CombinedKey, EnrBuilder}, libp2p::{ @@ -182,7 +182,7 @@ pub async fn create_api_server_on_port( let eth1_service = eth1::Service::new(eth1::Config::default(), log.clone(), chain.spec.clone()).unwrap(); - let context = Arc::new(Context { + let ctx = Arc::new(Context { config: Config { enabled: true, listen_addr: IpAddr::V4(Ipv4Addr::new(127, 0, 0, 1)), @@ -193,19 +193,19 @@ pub async fn create_api_server_on_port( data_dir: std::path::PathBuf::from(DEFAULT_ROOT_DIR), spec_fork_name: None, }, - chain: Some(chain.clone()), + chain: Some(chain), network_senders: Some(network_senders), network_globals: Some(network_globals), eth1_service: Some(eth1_service), log, }); - let ctx = context.clone(); + let (shutdown_tx, shutdown_rx) = oneshot::channel(); let server_shutdown = async { // It's not really interesting why this triggered, just that it happened. let _ = shutdown_rx.await; }; - let (listening_socket, server) = http_api::serve(ctx, server_shutdown).unwrap(); + let (listening_socket, server) = crate::serve(ctx, server_shutdown).unwrap(); ApiServer { server, diff --git a/beacon_node/http_api/tests/fork_tests.rs b/beacon_node/http_api/tests/fork_tests.rs index 6144123565..8a3ba887b3 100644 --- a/beacon_node/http_api/tests/fork_tests.rs +++ b/beacon_node/http_api/tests/fork_tests.rs @@ -1,11 +1,11 @@ //! Tests for API behaviour across fork boundaries. -use crate::common::*; use beacon_chain::{ test_utils::{RelativeSyncCommittee, DEFAULT_ETH1_BLOCK_HASH, HARNESS_GENESIS_TIME}, StateSkipConfig, }; use eth2::types::{IndexedErrorMessage, StateId, SyncSubcommittee}; use genesis::{bls_withdrawal_credentials, interop_genesis_state_with_withdrawal_credentials}; +use http_api::test_utils::*; use std::collections::HashSet; use types::{ test_utils::{generate_deterministic_keypair, generate_deterministic_keypairs}, diff --git a/beacon_node/http_api/tests/interactive_tests.rs b/beacon_node/http_api/tests/interactive_tests.rs index 7db1b22d67..9763b8037b 100644 --- a/beacon_node/http_api/tests/interactive_tests.rs +++ b/beacon_node/http_api/tests/interactive_tests.rs @@ -1,11 +1,11 @@ //! Generic tests that make use of the (newer) `InteractiveApiTester` -use crate::common::*; use beacon_chain::{ chain_config::ReOrgThreshold, test_utils::{AttestationStrategy, BlockStrategy, SyncCommitteeStrategy}, }; use eth2::types::DepositContractData; use execution_layer::{ForkchoiceState, PayloadAttributes}; +use http_api::test_utils::InteractiveTester; use parking_lot::Mutex; use slot_clock::SlotClock; use state_processing::{ diff --git a/beacon_node/http_api/tests/main.rs b/beacon_node/http_api/tests/main.rs index 88e0032ecd..342b72cc7d 100644 --- a/beacon_node/http_api/tests/main.rs +++ b/beacon_node/http_api/tests/main.rs @@ -1,6 +1,5 @@ #![cfg(not(debug_assertions))] // Tests are too slow in debug. -pub mod common; pub mod fork_tests; pub mod interactive_tests; pub mod tests; diff --git a/beacon_node/http_api/tests/tests.rs b/beacon_node/http_api/tests/tests.rs index 2f1d5fd587..0ef27febea 100644 --- a/beacon_node/http_api/tests/tests.rs +++ b/beacon_node/http_api/tests/tests.rs @@ -1,4 +1,3 @@ -use crate::common::{create_api_server, create_api_server_on_port, ApiServer}; use beacon_chain::test_utils::RelativeSyncCommittee; use beacon_chain::{ test_utils::{AttestationStrategy, BeaconChainHarness, BlockStrategy, EphemeralHarnessType}, @@ -18,7 +17,10 @@ use execution_layer::test_utils::{ }; use futures::stream::{Stream, StreamExt}; use futures::FutureExt; -use http_api::{BlockId, StateId}; +use http_api::{ + test_utils::{create_api_server, create_api_server_on_port, ApiServer}, + BlockId, StateId, +}; use lighthouse_network::{Enr, EnrExt, PeerId}; use network::NetworkReceivers; use proto_array::ExecutionStatus; diff --git a/common/eth2/src/lib.rs b/common/eth2/src/lib.rs index d4f68624fe..1a7cf29790 100644 --- a/common/eth2/src/lib.rs +++ b/common/eth2/src/lib.rs @@ -22,7 +22,7 @@ use lighthouse_network::PeerId; pub use reqwest; use reqwest::{IntoUrl, RequestBuilder, Response}; pub use reqwest::{StatusCode, Url}; -pub use sensitive_url::SensitiveUrl; +pub use sensitive_url::{SensitiveError, SensitiveUrl}; use serde::{de::DeserializeOwned, Serialize}; use std::convert::TryFrom; use std::fmt; diff --git a/common/eth2/src/lighthouse.rs b/common/eth2/src/lighthouse.rs index e50d9f4dc0..bb933dbe12 100644 --- a/common/eth2/src/lighthouse.rs +++ b/common/eth2/src/lighthouse.rs @@ -13,7 +13,7 @@ use crate::{ BeaconState, ChainSpec, DepositTreeSnapshot, Epoch, EthSpec, FinalizedExecutionBlock, GenericResponse, ValidatorId, }, - BeaconNodeHttpClient, DepositData, Error, Eth1Data, Hash256, StateId, StatusCode, + BeaconNodeHttpClient, DepositData, Error, Eth1Data, Hash256, Slot, StateId, StatusCode, }; use proto_array::core::ProtoArray; use reqwest::IntoUrl; @@ -566,4 +566,73 @@ impl BeaconNodeHttpClient { self.post_with_response(path, &()).await } + + /// + /// Analysis endpoints. + /// + + /// `GET` lighthouse/analysis/block_rewards?start_slot,end_slot + pub async fn get_lighthouse_analysis_block_rewards( + &self, + start_slot: Slot, + end_slot: Slot, + ) -> Result, Error> { + let mut path = self.server.full.clone(); + + path.path_segments_mut() + .map_err(|()| Error::InvalidUrl(self.server.clone()))? + .push("lighthouse") + .push("analysis") + .push("block_rewards"); + + path.query_pairs_mut() + .append_pair("start_slot", &start_slot.to_string()) + .append_pair("end_slot", &end_slot.to_string()); + + self.get(path).await + } + + /// `GET` lighthouse/analysis/block_packing?start_epoch,end_epoch + pub async fn get_lighthouse_analysis_block_packing( + &self, + start_epoch: Epoch, + end_epoch: Epoch, + ) -> Result, Error> { + let mut path = self.server.full.clone(); + + path.path_segments_mut() + .map_err(|()| Error::InvalidUrl(self.server.clone()))? + .push("lighthouse") + .push("analysis") + .push("block_packing_efficiency"); + + path.query_pairs_mut() + .append_pair("start_epoch", &start_epoch.to_string()) + .append_pair("end_epoch", &end_epoch.to_string()); + + self.get(path).await + } + + /// `GET` lighthouse/analysis/attestation_performance/{index}?start_epoch,end_epoch + pub async fn get_lighthouse_analysis_attestation_performance( + &self, + start_epoch: Epoch, + end_epoch: Epoch, + target: String, + ) -> Result, Error> { + let mut path = self.server.full.clone(); + + path.path_segments_mut() + .map_err(|()| Error::InvalidUrl(self.server.clone()))? + .push("lighthouse") + .push("analysis") + .push("attestation_performance") + .push(&target); + + path.query_pairs_mut() + .append_pair("start_epoch", &start_epoch.to_string()) + .append_pair("end_epoch", &end_epoch.to_string()); + + self.get(path).await + } } diff --git a/watch/.gitignore b/watch/.gitignore new file mode 100644 index 0000000000..5b6b0720c9 --- /dev/null +++ b/watch/.gitignore @@ -0,0 +1 @@ +config.yaml diff --git a/watch/Cargo.toml b/watch/Cargo.toml new file mode 100644 index 0000000000..d1793a9d06 --- /dev/null +++ b/watch/Cargo.toml @@ -0,0 +1,45 @@ +[package] +name = "watch" +version = "0.1.0" +edition = "2018" + +[lib] +name = "watch" +path = "src/lib.rs" + +[[bin]] +name = "watch" +path = "src/main.rs" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] +clap = "2.33.3" +log = "0.4.14" +env_logger = "0.9.0" +types = { path = "../consensus/types" } +eth2 = { path = "../common/eth2" } +beacon_node = { path = "../beacon_node"} +tokio = { version = "1.14.0", features = ["time"] } +axum = "0.5.15" +hyper = "0.14.20" +serde = "1.0.116" +serde_json = "1.0.58" +reqwest = { version = "0.11.0", features = ["json","stream"] } +url = "2.2.2" +rand = "0.7.3" +diesel = { version = "2.0.2", features = ["postgres", "r2d2"] } +diesel_migrations = { version = "2.0.0", features = ["postgres"] } +byteorder = "1.4.3" +bls = { path = "../crypto/bls" } +hex = "0.4.2" +r2d2 = "0.8.9" +serde_yaml = "0.8.24" + +[dev-dependencies] +tokio-postgres = "0.7.5" +http_api = { path = "../beacon_node/http_api" } +beacon_chain = { path = "../beacon_node/beacon_chain" } +network = { path = "../beacon_node/network" } +testcontainers = "0.14.0" +unused_port = { path = "../common/unused_port" } diff --git a/watch/README.md b/watch/README.md new file mode 100644 index 0000000000..18bf393946 --- /dev/null +++ b/watch/README.md @@ -0,0 +1,460 @@ +## beacon.watch + +>beacon.watch is pre-MVP and still under active development and subject to change. + +beacon.watch is an Ethereum Beacon Chain monitoring platform whose goal is to provide fast access to +data which is: +1. Not already stored natively in the Beacon Chain +2. Too specialized for Block Explorers +3. Too sensitive for public Block Explorers + + +### Requirements +- `git` +- `rust` : https://rustup.rs/ +- `libpg` : https://www.postgresql.org/download/ +- `diesel_cli` : +``` +cargo install diesel_cli --no-default-features --features postgres +``` +- `docker` : https://docs.docker.com/engine/install/ +- `docker-compose` : https://docs.docker.com/compose/install/ + +### Setup +1. Setup the database: +``` +cd postgres_docker_compose +docker-compose up +``` + +1. Ensure the tests pass: +``` +cargo test --release +``` + +1. Drop the database (if it already exists) and run the required migrations: +``` +diesel database reset --database-url postgres://postgres:postgres@localhost/dev +``` + +1. Ensure a synced Lighthouse beacon node with historical states is available +at `localhost:5052`. +The smaller the value of `--slots-per-restore-point` the faster beacon.watch +will be able to sync to the beacon node. + +1. Run the updater daemon: +``` +cargo run --release -- run-updater +``` + +1. Start the HTTP API server: +``` +cargo run --release -- serve +``` + +1. Ensure connectivity: +``` +curl "http://localhost:5059/v1/slots/highest" +``` + +> Functionality on MacOS has not been tested. Windows is not supported. + + +### Configuration +beacon.watch can be configured through the use of a config file. +Available options can be seen in `config.yaml.default`. + +You can specify a config file during runtime: +``` +cargo run -- run-updater --config path/to/config.yaml +cargo run -- serve --config path/to/config.yaml +``` + +You can specify only the parts of the config file which you need changed. +Missing values will remain as their defaults. + +For example, if you wish to run with default settings but only wish to alter `log_level` +your config file would be: +```yaml +# config.yaml +log_level = "info" +``` + +### Available Endpoints +As beacon.watch continues to develop, more endpoints will be added. + +> In these examples any data containing information from blockprint has either been redacted or fabricated. + +#### `/v1/slots/{slot}` +```bash +curl "http://localhost:5059/v1/slots/4635296" +``` +```json +{ + "slot": "4635296", + "root": "0xf7063a9d6c663682e59bd0b41d29ce80c3ff0b089049ff8676d6f9ee79622c62", + "skipped": false, + "beacon_block": "0xf7063a9d6c663682e59bd0b41d29ce80c3ff0b089049ff8676d6f9ee79622c62" +} +``` + +#### `/v1/slots?start_slot={}&end_slot={}` +```bash +curl "http://localhost:5059/v1/slots?start_slot=4635296&end_slot=4635297" +``` +```json +[ + { + "slot": "4635297", + "root": "0x04ad2e963811207e344bebeba5b1217805bcc3a9e2ed9fcf2205d491778c6182", + "skipped": false, + "beacon_block": "0x04ad2e963811207e344bebeba5b1217805bcc3a9e2ed9fcf2205d491778c6182" + }, + { + "slot": "4635296", + "root": "0xf7063a9d6c663682e59bd0b41d29ce80c3ff0b089049ff8676d6f9ee79622c62", + "skipped": false, + "beacon_block": "0xf7063a9d6c663682e59bd0b41d29ce80c3ff0b089049ff8676d6f9ee79622c62" + } +] +``` + +#### `/v1/slots/lowest` +```bash +curl "http://localhost:5059/v1/slots/lowest" +``` +```json +{ + "slot": "4635296", + "root": "0xf7063a9d6c663682e59bd0b41d29ce80c3ff0b089049ff8676d6f9ee79622c62", + "skipped": false, + "beacon_block": "0xf7063a9d6c663682e59bd0b41d29ce80c3ff0b089049ff8676d6f9ee79622c62" +} +``` + +#### `/v1/slots/highest` +```bash +curl "http://localhost:5059/v1/slots/highest" +``` +```json +{ + "slot": "4635358", + "root": "0xe9eff13560688f1bf15cf07b60c84963d4d04a4a885ed0eb19ceb8450011894b", + "skipped": false, + "beacon_block": "0xe9eff13560688f1bf15cf07b60c84963d4d04a4a885ed0eb19ceb8450011894b" +} +``` + +#### `v1/slots/{slot}/block` +```bash +curl "http://localhost:5059/v1/slots/4635296/block" +``` +```json +{ + "slot": "4635296", + "root": "0xf7063a9d6c663682e59bd0b41d29ce80c3ff0b089049ff8676d6f9ee79622c62", + "parent_root": "0x7c4860b420a23de9d126da71f9043b3744af98c847efd9e1440f2da8fbf7f31b" +} +``` + +#### `/v1/blocks/{block_id}` +```bash +curl "http://localhost:5059/v1/blocks/4635296" +# OR +curl "http://localhost:5059/v1/blocks/0xf7063a9d6c663682e59bd0b41d29ce80c3ff0b089049ff8676d6f9ee79622c62" +``` +```json +{ + "slot": "4635296", + "root": "0xf7063a9d6c663682e59bd0b41d29ce80c3ff0b089049ff8676d6f9ee79622c62", + "parent_root": "0x7c4860b420a23de9d126da71f9043b3744af98c847efd9e1440f2da8fbf7f31b" +} +``` + +#### `/v1/blocks?start_slot={}&end_slot={}` +```bash +curl "http://localhost:5059/v1/blocks?start_slot=4635296&end_slot=4635297" +``` +```json +[ + { + "slot": "4635297", + "root": "0x04ad2e963811207e344bebeba5b1217805bcc3a9e2ed9fcf2205d491778c6182", + "parent_root": "0xf7063a9d6c663682e59bd0b41d29ce80c3ff0b089049ff8676d6f9ee79622c62" + }, + { + "slot": "4635296", + "root": "0xf7063a9d6c663682e59bd0b41d29ce80c3ff0b089049ff8676d6f9ee79622c62", + "parent_root": "0x7c4860b420a23de9d126da71f9043b3744af98c847efd9e1440f2da8fbf7f31b" + } +] +``` + +#### `/v1/blocks/{block_id}/previous` +```bash +curl "http://localhost:5059/v1/blocks/4635297/previous" +# OR +curl "http://localhost:5059/v1/blocks/0x04ad2e963811207e344bebeba5b1217805bcc3a9e2ed9fcf2205d491778c6182/previous" +``` +```json +{ + "slot": "4635296", + "root": "0xf7063a9d6c663682e59bd0b41d29ce80c3ff0b089049ff8676d6f9ee79622c62", + "parent_root": "0x7c4860b420a23de9d126da71f9043b3744af98c847efd9e1440f2da8fbf7f31b" +} +``` + +#### `/v1/blocks/{block_id}/next` +```bash +curl "http://localhost:5059/v1/blocks/4635296/next" +# OR +curl "http://localhost:5059/v1/blocks/0xf7063a9d6c663682e59bd0b41d29ce80c3ff0b089049ff8676d6f9ee79622c62/next" +``` +```json +{ + "slot": "4635297", + "root": "0x04ad2e963811207e344bebeba5b1217805bcc3a9e2ed9fcf2205d491778c6182", + "parent_root": "0xf7063a9d6c663682e59bd0b41d29ce80c3ff0b089049ff8676d6f9ee79622c62" +} +``` + +#### `/v1/blocks/lowest` +```bash +curl "http://localhost:5059/v1/blocks/lowest" +``` +```json +{ + "slot": "4635296", + "root": "0xf7063a9d6c663682e59bd0b41d29ce80c3ff0b089049ff8676d6f9ee79622c62", + "parent_root": "0x7c4860b420a23de9d126da71f9043b3744af98c847efd9e1440f2da8fbf7f31b" +} +``` + +#### `/v1/blocks/highest` +```bash +curl "http://localhost:5059/v1/blocks/highest" +``` +```json +{ + "slot": "4635358", + "root": "0xe9eff13560688f1bf15cf07b60c84963d4d04a4a885ed0eb19ceb8450011894b", + "parent_root": "0xb66e05418bb5b1d4a965c994e1f0e5b5f0d7b780e0df12f3f6321510654fa1d2" +} +``` + +#### `/v1/blocks/{block_id}/proposer` +```bash +curl "http://localhost:5059/v1/blocks/4635296/proposer" +# OR +curl "http://localhost:5059/v1/blocks/0xf7063a9d6c663682e59bd0b41d29ce80c3ff0b089049ff8676d6f9ee79622c62/proposer" + +``` +```json +{ + "slot": "4635296", + "proposer_index": 223126, + "graffiti": "" +} +``` + +#### `/v1/blocks/{block_id}/rewards` +```bash +curl "http://localhost:5059/v1/blocks/4635296/reward" +# OR +curl "http://localhost:5059/v1/blocks/0xf7063a9d6c663682e59bd0b41d29ce80c3ff0b089049ff8676d6f9ee79622c62/reward" + +``` +```json +{ + "slot": "4635296", + "total": 25380059, + "attestation_reward": 24351867, + "sync_committee_reward": 1028192 +} +``` + +#### `/v1/blocks/{block_id}/packing` +```bash +curl "http://localhost:5059/v1/blocks/4635296/packing" +# OR +curl "http://localhost:5059/v1/blocks/0xf7063a9d6c663682e59bd0b41d29ce80c3ff0b089049ff8676d6f9ee79622c62/packing" + +``` +```json +{ + "slot": "4635296", + "available": 16152, + "included": 13101, + "prior_skip_slots": 0 +} +``` + +#### `/v1/validators/{validator}` +```bash +curl "http://localhost:5059/v1/validators/1" +# OR +curl "http://localhost:5059/v1/validators/0xa1d1ad0714035353258038e964ae9675dc0252ee22cea896825c01458e1807bfad2f9969338798548d9858a571f7425c" +``` +```json +{ + "index": 1, + "public_key": "0xa1d1ad0714035353258038e964ae9675dc0252ee22cea896825c01458e1807bfad2f9969338798548d9858a571f7425c", + "status": "active_ongoing", + "client": null, + "activation_epoch": 0, + "exit_epoch": null +} +``` + +#### `/v1/validators/{validator}/attestation/{epoch}` +```bash +curl "http://localhost:5059/v1/validators/1/attestation/144853" +# OR +curl "http://localhost:5059/v1/validators/0xa1d1ad0714035353258038e964ae9675dc0252ee22cea896825c01458e1807bfad2f9969338798548d9858a571f7425c/attestation/144853" +``` +```json +{ + "index": 1, + "epoch": "144853", + "source": true, + "head": true, + "target": true +} +``` + +#### `/v1/validators/missed/{vote}/{epoch}` +```bash +curl "http://localhost:5059/v1/validators/missed/head/144853" +``` +```json +[ + 63, + 67, + 98, + ... +] +``` + +#### `/v1/validators/missed/{vote}/{epoch}/graffiti` +```bash +curl "http://localhost:5059/v1/validators/missed/head/144853/graffiti" +``` +```json +{ + "Mr F was here": 3, + "Lighthouse/v3.1.0-aa022f4": 5, + ... +} +``` + +#### `/v1/clients/missed/{vote}/{epoch}` +```bash +curl "http://localhost:5059/v1/clients/missed/source/144853" +``` +```json +{ + "Lighthouse": 100, + "Lodestar": 100, + "Nimbus": 100, + "Prysm": 100, + "Teku": 100, + "Unknown": 100 +} +``` + +#### `/v1/clients/missed/{vote}/{epoch}/percentages` +Note that this endpoint expresses the following: +``` +What percentage of each client implementation missed this vote? +``` + +```bash +curl "http://localhost:5059/v1/clients/missed/target/144853/percentages" +``` +```json +{ + "Lighthouse": 0.51234567890, + "Lodestar": 0.51234567890, + "Nimbus": 0.51234567890, + "Prysm": 0.09876543210, + "Teku": 0.09876543210, + "Unknown": 0.05647382910 +} +``` + +#### `/v1/clients/missed/{vote}/{epoch}/percentages/relative` +Note that this endpoint expresses the following: +``` +For the validators which did miss this vote, what percentage of them were from each client implementation? +``` +You can check these values against the output of `/v1/clients/percentages` to see any discrepancies. + +```bash +curl "http://localhost:5059/v1/clients/missed/target/144853/percentages/relative" +``` +```json +{ + "Lighthouse": 11.11111111111111, + "Lodestar": 11.11111111111111, + "Nimbus": 11.11111111111111, + "Prysm": 16.66666666666667, + "Teku": 16.66666666666667, + "Unknown": 33.33333333333333 +} + +``` + +#### `/v1/clients` +```bash +curl "http://localhost:5059/v1/clients" +``` +```json +{ + "Lighthouse": 5000, + "Lodestar": 5000, + "Nimbus": 5000, + "Prysm": 5000, + "Teku": 5000, + "Unknown": 5000 +} +``` + +#### `/v1/clients/percentages` +```bash +curl "http://localhost:5059/v1/clients/percentages" +``` +```json +{ + "Lighthouse": 16.66666666666667, + "Lodestar": 16.66666666666667, + "Nimbus": 16.66666666666667, + "Prysm": 16.66666666666667, + "Teku": 16.66666666666667, + "Unknown": 16.66666666666667 +} +``` + +### Future work +- New tables + - `skip_slots`? + + +- More API endpoints + - `/v1/proposers?start_epoch={}&end_epoch={}` and similar + - `/v1/validators/{status}/count` + + +- Concurrently backfill and forwards fill, so forwards fill is not bottlenecked by large backfills. + + +- Better/prettier (async?) logging. + + +- Connect to a range of beacon_nodes to sync different components concurrently. +Generally, processing certain api queries such as `block_packing` and `attestation_performance` take the longest to sync. + + +### Architecture +Connection Pooling: +- 1 Pool for Updater (read and write) +- 1 Pool for HTTP Server (should be read only, although not sure if we can enforce this) diff --git a/watch/config.yaml.default b/watch/config.yaml.default new file mode 100644 index 0000000000..131609237c --- /dev/null +++ b/watch/config.yaml.default @@ -0,0 +1,49 @@ +--- +database: + user: "postgres" + password: "postgres" + dbname: "dev" + default_dbname: "postgres" + host: "localhost" + port: 5432 + connect_timeout_millis: 2000 + +server: + listen_addr: "127.0.0.1" + listen_port: 5059 + +updater: + # The URL of the Beacon Node to perform sync tasks with. + # Cannot yet accept multiple beacon nodes. + beacon_node_url: "http://localhost:5052" + # The number of epochs to backfill. Must be below 100. + max_backfill_size_epochs: 2 + # The epoch at which to stop backfilling. + backfill_stop_epoch: 0 + # Whether to sync the attestations table. + attestations: true + # Whether to sync the proposer_info table. + proposer_info: true + # Whether to sync the block_rewards table. + block_rewards: true + # Whether to sync the block_packing table. + block_packing: true + +blockprint: + # Whether to sync client information from blockprint. + enabled: false + # The URL of the blockprint server. + url: "" + # The username used to authenticate to the blockprint server. + username: "" + # The password used to authenticate to the blockprint server. + password: "" + +# Log level. +# Valid options are: +# - "trace" +# - "debug" +# - "info" +# - "warn" +# - "error" +log_level: "debug" diff --git a/watch/diesel.toml b/watch/diesel.toml new file mode 100644 index 0000000000..bfb01bccf0 --- /dev/null +++ b/watch/diesel.toml @@ -0,0 +1,5 @@ +# For documentation on how to configure this file, +# see diesel.rs/guides/configuring-diesel-cli + +[print_schema] +file = "src/database/schema.rs" diff --git a/watch/migrations/.gitkeep b/watch/migrations/.gitkeep new file mode 100644 index 0000000000..e69de29bb2 diff --git a/watch/migrations/00000000000000_diesel_initial_setup/down.sql b/watch/migrations/00000000000000_diesel_initial_setup/down.sql new file mode 100644 index 0000000000..a9f5260911 --- /dev/null +++ b/watch/migrations/00000000000000_diesel_initial_setup/down.sql @@ -0,0 +1,6 @@ +-- This file was automatically created by Diesel to setup helper functions +-- and other internal bookkeeping. This file is safe to edit, any future +-- changes will be added to existing projects as new migrations. + +DROP FUNCTION IF EXISTS diesel_manage_updated_at(_tbl regclass); +DROP FUNCTION IF EXISTS diesel_set_updated_at(); diff --git a/watch/migrations/00000000000000_diesel_initial_setup/up.sql b/watch/migrations/00000000000000_diesel_initial_setup/up.sql new file mode 100644 index 0000000000..d68895b1a7 --- /dev/null +++ b/watch/migrations/00000000000000_diesel_initial_setup/up.sql @@ -0,0 +1,36 @@ +-- This file was automatically created by Diesel to setup helper functions +-- and other internal bookkeeping. This file is safe to edit, any future +-- changes will be added to existing projects as new migrations. + + + + +-- Sets up a trigger for the given table to automatically set a column called +-- `updated_at` whenever the row is modified (unless `updated_at` was included +-- in the modified columns) +-- +-- # Example +-- +-- ```sql +-- CREATE TABLE users (id SERIAL PRIMARY KEY, updated_at TIMESTAMP NOT NULL DEFAULT NOW()); +-- +-- SELECT diesel_manage_updated_at('users'); +-- ``` +CREATE OR REPLACE FUNCTION diesel_manage_updated_at(_tbl regclass) RETURNS VOID AS $$ +BEGIN + EXECUTE format('CREATE TRIGGER set_updated_at BEFORE UPDATE ON %s + FOR EACH ROW EXECUTE PROCEDURE diesel_set_updated_at()', _tbl); +END; +$$ LANGUAGE plpgsql; + +CREATE OR REPLACE FUNCTION diesel_set_updated_at() RETURNS trigger AS $$ +BEGIN + IF ( + NEW IS DISTINCT FROM OLD AND + NEW.updated_at IS NOT DISTINCT FROM OLD.updated_at + ) THEN + NEW.updated_at := current_timestamp; + END IF; + RETURN NEW; +END; +$$ LANGUAGE plpgsql; diff --git a/watch/migrations/2022-01-01-000000_canonical_slots/down.sql b/watch/migrations/2022-01-01-000000_canonical_slots/down.sql new file mode 100644 index 0000000000..551ed6605c --- /dev/null +++ b/watch/migrations/2022-01-01-000000_canonical_slots/down.sql @@ -0,0 +1 @@ +DROP TABLE canonical_slots diff --git a/watch/migrations/2022-01-01-000000_canonical_slots/up.sql b/watch/migrations/2022-01-01-000000_canonical_slots/up.sql new file mode 100644 index 0000000000..2629f11a4c --- /dev/null +++ b/watch/migrations/2022-01-01-000000_canonical_slots/up.sql @@ -0,0 +1,6 @@ +CREATE TABLE canonical_slots ( + slot integer PRIMARY KEY, + root bytea NOT NULL, + skipped boolean NOT NULL, + beacon_block bytea UNIQUE +) diff --git a/watch/migrations/2022-01-01-000001_beacon_blocks/down.sql b/watch/migrations/2022-01-01-000001_beacon_blocks/down.sql new file mode 100644 index 0000000000..8901956f47 --- /dev/null +++ b/watch/migrations/2022-01-01-000001_beacon_blocks/down.sql @@ -0,0 +1 @@ +DROP TABLE beacon_blocks diff --git a/watch/migrations/2022-01-01-000001_beacon_blocks/up.sql b/watch/migrations/2022-01-01-000001_beacon_blocks/up.sql new file mode 100644 index 0000000000..250c667b23 --- /dev/null +++ b/watch/migrations/2022-01-01-000001_beacon_blocks/up.sql @@ -0,0 +1,7 @@ +CREATE TABLE beacon_blocks ( + slot integer PRIMARY KEY REFERENCES canonical_slots(slot) ON DELETE CASCADE, + root bytea REFERENCES canonical_slots(beacon_block) NOT NULL, + parent_root bytea NOT NULL, + attestation_count integer NOT NULL, + transaction_count integer +) diff --git a/watch/migrations/2022-01-01-000002_validators/down.sql b/watch/migrations/2022-01-01-000002_validators/down.sql new file mode 100644 index 0000000000..17819fc349 --- /dev/null +++ b/watch/migrations/2022-01-01-000002_validators/down.sql @@ -0,0 +1 @@ +DROP TABLE validators diff --git a/watch/migrations/2022-01-01-000002_validators/up.sql b/watch/migrations/2022-01-01-000002_validators/up.sql new file mode 100644 index 0000000000..69cfef6772 --- /dev/null +++ b/watch/migrations/2022-01-01-000002_validators/up.sql @@ -0,0 +1,7 @@ +CREATE TABLE validators ( + index integer PRIMARY KEY, + public_key bytea NOT NULL, + status text NOT NULL, + activation_epoch integer, + exit_epoch integer +) diff --git a/watch/migrations/2022-01-01-000003_proposer_info/down.sql b/watch/migrations/2022-01-01-000003_proposer_info/down.sql new file mode 100644 index 0000000000..d61330be5b --- /dev/null +++ b/watch/migrations/2022-01-01-000003_proposer_info/down.sql @@ -0,0 +1 @@ +DROP TABLE proposer_info diff --git a/watch/migrations/2022-01-01-000003_proposer_info/up.sql b/watch/migrations/2022-01-01-000003_proposer_info/up.sql new file mode 100644 index 0000000000..488aedb273 --- /dev/null +++ b/watch/migrations/2022-01-01-000003_proposer_info/up.sql @@ -0,0 +1,5 @@ +CREATE TABLE proposer_info ( + slot integer PRIMARY KEY REFERENCES beacon_blocks(slot) ON DELETE CASCADE, + proposer_index integer REFERENCES validators(index) ON DELETE CASCADE NOT NULL, + graffiti text NOT NULL +) diff --git a/watch/migrations/2022-01-01-000004_active_config/down.sql b/watch/migrations/2022-01-01-000004_active_config/down.sql new file mode 100644 index 0000000000..b4304eb7b7 --- /dev/null +++ b/watch/migrations/2022-01-01-000004_active_config/down.sql @@ -0,0 +1 @@ +DROP TABLE active_config diff --git a/watch/migrations/2022-01-01-000004_active_config/up.sql b/watch/migrations/2022-01-01-000004_active_config/up.sql new file mode 100644 index 0000000000..476a091160 --- /dev/null +++ b/watch/migrations/2022-01-01-000004_active_config/up.sql @@ -0,0 +1,5 @@ +CREATE TABLE active_config ( + id integer PRIMARY KEY CHECK (id=1), + config_name text NOT NULL, + slots_per_epoch integer NOT NULL +) diff --git a/watch/migrations/2022-01-01-000010_blockprint/down.sql b/watch/migrations/2022-01-01-000010_blockprint/down.sql new file mode 100644 index 0000000000..fa53325dad --- /dev/null +++ b/watch/migrations/2022-01-01-000010_blockprint/down.sql @@ -0,0 +1 @@ +DROP TABLE blockprint diff --git a/watch/migrations/2022-01-01-000010_blockprint/up.sql b/watch/migrations/2022-01-01-000010_blockprint/up.sql new file mode 100644 index 0000000000..2d5741f50b --- /dev/null +++ b/watch/migrations/2022-01-01-000010_blockprint/up.sql @@ -0,0 +1,4 @@ +CREATE TABLE blockprint ( + slot integer PRIMARY KEY REFERENCES beacon_blocks(slot) ON DELETE CASCADE, + best_guess text NOT NULL +) diff --git a/watch/migrations/2022-01-01-000011_block_rewards/down.sql b/watch/migrations/2022-01-01-000011_block_rewards/down.sql new file mode 100644 index 0000000000..2dc87995c7 --- /dev/null +++ b/watch/migrations/2022-01-01-000011_block_rewards/down.sql @@ -0,0 +1 @@ +DROP TABLE block_rewards diff --git a/watch/migrations/2022-01-01-000011_block_rewards/up.sql b/watch/migrations/2022-01-01-000011_block_rewards/up.sql new file mode 100644 index 0000000000..47cb4304f0 --- /dev/null +++ b/watch/migrations/2022-01-01-000011_block_rewards/up.sql @@ -0,0 +1,6 @@ +CREATE TABLE block_rewards ( + slot integer PRIMARY KEY REFERENCES beacon_blocks(slot) ON DELETE CASCADE, + total integer NOT NULL, + attestation_reward integer NOT NULL, + sync_committee_reward integer NOT NULL +) diff --git a/watch/migrations/2022-01-01-000012_block_packing/down.sql b/watch/migrations/2022-01-01-000012_block_packing/down.sql new file mode 100644 index 0000000000..e9e7755e3e --- /dev/null +++ b/watch/migrations/2022-01-01-000012_block_packing/down.sql @@ -0,0 +1 @@ +DROP TABLE block_packing diff --git a/watch/migrations/2022-01-01-000012_block_packing/up.sql b/watch/migrations/2022-01-01-000012_block_packing/up.sql new file mode 100644 index 0000000000..63a9925f92 --- /dev/null +++ b/watch/migrations/2022-01-01-000012_block_packing/up.sql @@ -0,0 +1,6 @@ +CREATE TABLE block_packing ( + slot integer PRIMARY KEY REFERENCES beacon_blocks(slot) ON DELETE CASCADE, + available integer NOT NULL, + included integer NOT NULL, + prior_skip_slots integer NOT NULL +) diff --git a/watch/migrations/2022-01-01-000013_suboptimal_attestations/down.sql b/watch/migrations/2022-01-01-000013_suboptimal_attestations/down.sql new file mode 100644 index 0000000000..0f32b6b4f3 --- /dev/null +++ b/watch/migrations/2022-01-01-000013_suboptimal_attestations/down.sql @@ -0,0 +1 @@ +DROP TABLE suboptimal_attestations diff --git a/watch/migrations/2022-01-01-000013_suboptimal_attestations/up.sql b/watch/migrations/2022-01-01-000013_suboptimal_attestations/up.sql new file mode 100644 index 0000000000..5352afefc8 --- /dev/null +++ b/watch/migrations/2022-01-01-000013_suboptimal_attestations/up.sql @@ -0,0 +1,8 @@ +CREATE TABLE suboptimal_attestations ( + epoch_start_slot integer CHECK (epoch_start_slot % 32 = 0) REFERENCES canonical_slots(slot) ON DELETE CASCADE, + index integer NOT NULL REFERENCES validators(index) ON DELETE CASCADE, + source boolean NOT NULL, + head boolean NOT NULL, + target boolean NOT NULL, + PRIMARY KEY(epoch_start_slot, index) +) diff --git a/watch/migrations/2022-01-01-000020_capella/down.sql b/watch/migrations/2022-01-01-000020_capella/down.sql new file mode 100644 index 0000000000..5903b351db --- /dev/null +++ b/watch/migrations/2022-01-01-000020_capella/down.sql @@ -0,0 +1,2 @@ +ALTER TABLE beacon_blocks +DROP COLUMN withdrawal_count; diff --git a/watch/migrations/2022-01-01-000020_capella/up.sql b/watch/migrations/2022-01-01-000020_capella/up.sql new file mode 100644 index 0000000000..b52b4b0099 --- /dev/null +++ b/watch/migrations/2022-01-01-000020_capella/up.sql @@ -0,0 +1,3 @@ +ALTER TABLE beacon_blocks +ADD COLUMN withdrawal_count integer; + diff --git a/watch/postgres_docker_compose/compose.yml b/watch/postgres_docker_compose/compose.yml new file mode 100644 index 0000000000..eae4de4a2b --- /dev/null +++ b/watch/postgres_docker_compose/compose.yml @@ -0,0 +1,16 @@ +version: "3" + +services: + postgres: + image: postgres:12.3-alpine + restart: always + environment: + POSTGRES_PASSWORD: postgres + POSTGRES_USER: postgres + volumes: + - postgres:/var/lib/postgresql/data + ports: + - 127.0.0.1:5432:5432 + +volumes: + postgres: diff --git a/watch/src/block_packing/database.rs b/watch/src/block_packing/database.rs new file mode 100644 index 0000000000..f7375431cb --- /dev/null +++ b/watch/src/block_packing/database.rs @@ -0,0 +1,140 @@ +use crate::database::{ + schema::{beacon_blocks, block_packing}, + watch_types::{WatchHash, WatchSlot}, + Error, PgConn, MAX_SIZE_BATCH_INSERT, +}; + +use diesel::prelude::*; +use diesel::{Insertable, Queryable}; +use log::debug; +use serde::{Deserialize, Serialize}; +use std::time::Instant; + +#[derive(Debug, Queryable, Insertable, Serialize, Deserialize)] +#[diesel(table_name = block_packing)] +pub struct WatchBlockPacking { + pub slot: WatchSlot, + pub available: i32, + pub included: i32, + pub prior_skip_slots: i32, +} + +/// Insert a batch of values into the `block_packing` table. +/// +/// On a conflict, it will do nothing, leaving the old value. +pub fn insert_batch_block_packing( + conn: &mut PgConn, + packing: Vec, +) -> Result<(), Error> { + use self::block_packing::dsl::*; + + let mut count = 0; + let timer = Instant::now(); + + for chunk in packing.chunks(MAX_SIZE_BATCH_INSERT) { + count += diesel::insert_into(block_packing) + .values(chunk) + .on_conflict_do_nothing() + .execute(conn)?; + } + + let time_taken = timer.elapsed(); + debug!("Block packing inserted, count: {count}, time taken: {time_taken:?}"); + Ok(()) +} + +/// Selects the row from the `block_packing` table where `slot` is minimum. +pub fn get_lowest_block_packing(conn: &mut PgConn) -> Result, Error> { + use self::block_packing::dsl::*; + let timer = Instant::now(); + + let result = block_packing + .order_by(slot.asc()) + .limit(1) + .first::(conn) + .optional()?; + + let time_taken = timer.elapsed(); + debug!("Block packing requested: lowest, time_taken: {time_taken:?}"); + Ok(result) +} + +/// Selects the row from the `block_packing` table where `slot` is maximum. +pub fn get_highest_block_packing(conn: &mut PgConn) -> Result, Error> { + use self::block_packing::dsl::*; + let timer = Instant::now(); + + let result = block_packing + .order_by(slot.desc()) + .limit(1) + .first::(conn) + .optional()?; + + let time_taken = timer.elapsed(); + debug!("Block packing requested: highest, time_taken: {time_taken:?}"); + Ok(result) +} + +/// Selects a single row of the `block_packing` table corresponding to a given `root_query`. +pub fn get_block_packing_by_root( + conn: &mut PgConn, + root_query: WatchHash, +) -> Result, Error> { + use self::beacon_blocks::dsl::{beacon_blocks, root}; + use self::block_packing::dsl::*; + let timer = Instant::now(); + + let join = beacon_blocks.inner_join(block_packing); + + let result = join + .select((slot, available, included, prior_skip_slots)) + .filter(root.eq(root_query)) + .first::(conn) + .optional()?; + + let time_taken = timer.elapsed(); + debug!("Block packing requested: {root_query}, time_taken: {time_taken:?}"); + Ok(result) +} + +/// Selects a single row of the `block_packing` table corresponding to a given `slot_query`. +pub fn get_block_packing_by_slot( + conn: &mut PgConn, + slot_query: WatchSlot, +) -> Result, Error> { + use self::block_packing::dsl::*; + let timer = Instant::now(); + + let result = block_packing + .filter(slot.eq(slot_query)) + .first::(conn) + .optional()?; + + let time_taken = timer.elapsed(); + debug!("Block packing requested: {slot_query}, time_taken: {time_taken:?}"); + Ok(result) +} + +/// Selects `slot` from all rows of the `beacon_blocks` table which do not have a corresponding +/// row in `block_packing`. +#[allow(dead_code)] +pub fn get_unknown_block_packing( + conn: &mut PgConn, + slots_per_epoch: u64, +) -> Result>, Error> { + use self::beacon_blocks::dsl::{beacon_blocks, root, slot}; + use self::block_packing::dsl::block_packing; + + let join = beacon_blocks.left_join(block_packing); + + let result = join + .select(slot) + .filter(root.is_null()) + // Block packing cannot be retrieved for epoch 0 so we need to exclude them. + .filter(slot.ge(slots_per_epoch as i32)) + .order_by(slot.desc()) + .nullable() + .load::>(conn)?; + + Ok(result) +} diff --git a/watch/src/block_packing/mod.rs b/watch/src/block_packing/mod.rs new file mode 100644 index 0000000000..5d74fc5979 --- /dev/null +++ b/watch/src/block_packing/mod.rs @@ -0,0 +1,38 @@ +pub mod database; +pub mod server; +pub mod updater; + +use crate::database::watch_types::WatchSlot; +use crate::updater::error::Error; + +pub use database::{ + get_block_packing_by_root, get_block_packing_by_slot, get_highest_block_packing, + get_lowest_block_packing, get_unknown_block_packing, insert_batch_block_packing, + WatchBlockPacking, +}; +pub use server::block_packing_routes; + +use eth2::BeaconNodeHttpClient; +use types::Epoch; + +/// Sends a request to `lighthouse/analysis/block_packing`. +/// Formats the response into a vector of `WatchBlockPacking`. +/// +/// Will fail if `start_epoch == 0`. +pub async fn get_block_packing( + bn: &BeaconNodeHttpClient, + start_epoch: Epoch, + end_epoch: Epoch, +) -> Result, Error> { + Ok(bn + .get_lighthouse_analysis_block_packing(start_epoch, end_epoch) + .await? + .into_iter() + .map(|data| WatchBlockPacking { + slot: WatchSlot::from_slot(data.slot), + available: data.available_attestations as i32, + included: data.included_attestations as i32, + prior_skip_slots: data.prior_skip_slots as i32, + }) + .collect()) +} diff --git a/watch/src/block_packing/server.rs b/watch/src/block_packing/server.rs new file mode 100644 index 0000000000..819144562a --- /dev/null +++ b/watch/src/block_packing/server.rs @@ -0,0 +1,31 @@ +use crate::block_packing::database::{ + get_block_packing_by_root, get_block_packing_by_slot, WatchBlockPacking, +}; +use crate::database::{get_connection, PgPool, WatchHash, WatchSlot}; +use crate::server::Error; + +use axum::{extract::Path, routing::get, Extension, Json, Router}; +use eth2::types::BlockId; +use std::str::FromStr; + +pub async fn get_block_packing( + Path(block_query): Path, + Extension(pool): Extension, +) -> Result>, Error> { + let mut conn = get_connection(&pool).map_err(Error::Database)?; + match BlockId::from_str(&block_query).map_err(|_| Error::BadRequest)? { + BlockId::Root(root) => Ok(Json(get_block_packing_by_root( + &mut conn, + WatchHash::from_hash(root), + )?)), + BlockId::Slot(slot) => Ok(Json(get_block_packing_by_slot( + &mut conn, + WatchSlot::from_slot(slot), + )?)), + _ => Err(Error::BadRequest), + } +} + +pub fn block_packing_routes() -> Router { + Router::new().route("/v1/blocks/:block/packing", get(get_block_packing)) +} diff --git a/watch/src/block_packing/updater.rs b/watch/src/block_packing/updater.rs new file mode 100644 index 0000000000..215964901a --- /dev/null +++ b/watch/src/block_packing/updater.rs @@ -0,0 +1,211 @@ +use crate::database::{self, Error as DbError}; +use crate::updater::{Error, UpdateHandler}; + +use crate::block_packing::get_block_packing; + +use eth2::types::{Epoch, EthSpec}; +use log::{debug, error, warn}; + +const MAX_SIZE_SINGLE_REQUEST_BLOCK_PACKING: u64 = 50; + +impl UpdateHandler { + /// Forward fills the `block_packing` table starting from the entry with the + /// highest slot. + /// + /// It constructs a request to the `get_block_packing` API with: + /// `start_epoch` -> highest completely filled epoch + 1 (or epoch of lowest beacon block) + /// `end_epoch` -> epoch of highest beacon block + /// + /// It will resync the latest epoch if it is not fully filled. + /// That is, `if highest_filled_slot % slots_per_epoch != 31` + /// This means that if the last slot of an epoch is a skip slot, the whole epoch will be + //// resynced during the next head update. + /// + /// Request range will not exceed `MAX_SIZE_SINGLE_REQUEST_BLOCK_PACKING`. + pub async fn fill_block_packing(&mut self) -> Result<(), Error> { + let mut conn = database::get_connection(&self.pool)?; + + // Get the slot of the highest entry in the `block_packing` table. + let highest_filled_slot_opt = if self.config.block_packing { + database::get_highest_block_packing(&mut conn)?.map(|packing| packing.slot) + } else { + return Err(Error::NotEnabled("block_packing".to_string())); + }; + + let mut start_epoch = if let Some(highest_filled_slot) = highest_filled_slot_opt { + if highest_filled_slot.as_slot() % self.slots_per_epoch + == self.slots_per_epoch.saturating_sub(1) + { + // The whole epoch is filled so we can begin syncing the next one. + highest_filled_slot.as_slot().epoch(self.slots_per_epoch) + 1 + } else { + // The epoch is only partially synced. Try to sync it fully. + highest_filled_slot.as_slot().epoch(self.slots_per_epoch) + } + } else { + // No entries in the `block_packing` table. Use `beacon_blocks` instead. + if let Some(lowest_beacon_block) = database::get_lowest_beacon_block(&mut conn)? { + lowest_beacon_block + .slot + .as_slot() + .epoch(self.slots_per_epoch) + } else { + // There are no blocks in the database, do not fill the `block_packing` table. + warn!("Refusing to fill block packing as there are no blocks in the database"); + return Ok(()); + } + }; + + // The `get_block_packing` API endpoint cannot accept `start_epoch == 0`. + if start_epoch == 0 { + start_epoch += 1 + } + + if let Some(highest_block_slot) = + database::get_highest_beacon_block(&mut conn)?.map(|block| block.slot.as_slot()) + { + let mut end_epoch = highest_block_slot.epoch(self.slots_per_epoch); + + if start_epoch > end_epoch { + debug!("Block packing is up to date with the head of the database"); + return Ok(()); + } + + // Ensure the size of the request does not exceed the maximum allowed value. + if start_epoch < end_epoch.saturating_sub(MAX_SIZE_SINGLE_REQUEST_BLOCK_PACKING) { + end_epoch = start_epoch + MAX_SIZE_SINGLE_REQUEST_BLOCK_PACKING + } + + if let Some(lowest_block_slot) = + database::get_lowest_beacon_block(&mut conn)?.map(|block| block.slot.as_slot()) + { + let mut packing = get_block_packing(&self.bn, start_epoch, end_epoch).await?; + + // Since we pull a full epoch of data but are not guaranteed to have all blocks of + // that epoch available, only insert blocks with corresponding `beacon_block`s. + packing.retain(|packing| { + packing.slot.as_slot() >= lowest_block_slot + && packing.slot.as_slot() <= highest_block_slot + }); + database::insert_batch_block_packing(&mut conn, packing)?; + } else { + return Err(Error::Database(DbError::Other( + "Database did not return a lowest block when one exists".to_string(), + ))); + } + } else { + // There are no blocks in the `beacon_blocks` database, but there are entries in the + // `block_packing` table. This is a critical failure. It usually means someone has + // manually tampered with the database tables and should not occur during normal + // operation. + error!("Database is corrupted. Please re-sync the database"); + return Err(Error::Database(DbError::DatabaseCorrupted)); + } + + Ok(()) + } + + /// Backfill the `block_packing` table starting from the entry with the lowest slot. + /// + /// It constructs a request to the `get_block_packing` function with: + /// `start_epoch` -> epoch of lowest_beacon_block + /// `end_epoch` -> epoch of lowest filled `block_packing` - 1 (or epoch of highest beacon block) + /// + /// It will resync the lowest epoch if it is not fully filled. + /// That is, `if lowest_filled_slot % slots_per_epoch != 0` + /// This means that if the last slot of an epoch is a skip slot, the whole epoch will be + //// resynced during the next head update. + /// + /// Request range will not exceed `MAX_SIZE_SINGLE_REQUEST_BLOCK_PACKING`. + pub async fn backfill_block_packing(&mut self) -> Result<(), Error> { + let mut conn = database::get_connection(&self.pool)?; + let max_block_packing_backfill = self.config.max_backfill_size_epochs; + + // Get the slot of the lowest entry in the `block_packing` table. + let lowest_filled_slot_opt = if self.config.block_packing { + database::get_lowest_block_packing(&mut conn)?.map(|packing| packing.slot) + } else { + return Err(Error::NotEnabled("block_packing".to_string())); + }; + + let end_epoch = if let Some(lowest_filled_slot) = lowest_filled_slot_opt { + if lowest_filled_slot.as_slot() % self.slots_per_epoch == 0 { + lowest_filled_slot + .as_slot() + .epoch(self.slots_per_epoch) + .saturating_sub(Epoch::new(1)) + } else { + // The epoch is only partially synced. Try to sync it fully. + lowest_filled_slot.as_slot().epoch(self.slots_per_epoch) + } + } else { + // No entries in the `block_packing` table. Use `beacon_blocks` instead. + if let Some(highest_beacon_block) = + database::get_highest_beacon_block(&mut conn)?.map(|block| block.slot) + { + highest_beacon_block.as_slot().epoch(self.slots_per_epoch) + } else { + // There are no blocks in the database, do not backfill the `block_packing` table. + warn!("Refusing to backfill block packing as there are no blocks in the database"); + return Ok(()); + } + }; + + if end_epoch <= 1 { + debug!("Block packing backfill is complete"); + return Ok(()); + } + + if let Some(lowest_block_slot) = + database::get_lowest_beacon_block(&mut conn)?.map(|block| block.slot.as_slot()) + { + let mut start_epoch = lowest_block_slot.epoch(self.slots_per_epoch); + + if start_epoch >= end_epoch { + debug!("Block packing is up to date with the base of the database"); + return Ok(()); + } + + // Ensure that the request range does not exceed `max_block_packing_backfill` or + // `MAX_SIZE_SINGLE_REQUEST_BLOCK_PACKING`. + if start_epoch < end_epoch.saturating_sub(max_block_packing_backfill) { + start_epoch = end_epoch.saturating_sub(max_block_packing_backfill) + } + if start_epoch < end_epoch.saturating_sub(MAX_SIZE_SINGLE_REQUEST_BLOCK_PACKING) { + start_epoch = end_epoch.saturating_sub(MAX_SIZE_SINGLE_REQUEST_BLOCK_PACKING) + } + + // The `block_packing` API cannot accept `start_epoch == 0`. + if start_epoch == 0 { + start_epoch += 1 + } + + if let Some(highest_block_slot) = + database::get_highest_beacon_block(&mut conn)?.map(|block| block.slot.as_slot()) + { + let mut packing = get_block_packing(&self.bn, start_epoch, end_epoch).await?; + + // Only insert blocks with corresponding `beacon_block`s. + packing.retain(|packing| { + packing.slot.as_slot() >= lowest_block_slot + && packing.slot.as_slot() <= highest_block_slot + }); + + database::insert_batch_block_packing(&mut conn, packing)?; + } else { + return Err(Error::Database(DbError::Other( + "Database did not return a lowest block when one exists".to_string(), + ))); + } + } else { + // There are no blocks in the `beacon_blocks` database, but there are entries in the + // `block_packing` table. This is a critical failure. It usually means someone has + // manually tampered with the database tables and should not occur during normal + // operation. + error!("Database is corrupted. Please re-sync the database"); + return Err(Error::Database(DbError::DatabaseCorrupted)); + } + + Ok(()) + } +} diff --git a/watch/src/block_rewards/database.rs b/watch/src/block_rewards/database.rs new file mode 100644 index 0000000000..a2bf49f3e4 --- /dev/null +++ b/watch/src/block_rewards/database.rs @@ -0,0 +1,137 @@ +use crate::database::{ + schema::{beacon_blocks, block_rewards}, + watch_types::{WatchHash, WatchSlot}, + Error, PgConn, MAX_SIZE_BATCH_INSERT, +}; + +use diesel::prelude::*; +use diesel::{Insertable, Queryable}; +use log::debug; +use serde::{Deserialize, Serialize}; +use std::time::Instant; + +#[derive(Debug, Queryable, Insertable, Serialize, Deserialize)] +#[diesel(table_name = block_rewards)] +pub struct WatchBlockRewards { + pub slot: WatchSlot, + pub total: i32, + pub attestation_reward: i32, + pub sync_committee_reward: i32, +} + +/// Insert a batch of values into the `block_rewards` table. +/// +/// On a conflict, it will do nothing, leaving the old value. +pub fn insert_batch_block_rewards( + conn: &mut PgConn, + rewards: Vec, +) -> Result<(), Error> { + use self::block_rewards::dsl::*; + + let mut count = 0; + let timer = Instant::now(); + + for chunk in rewards.chunks(MAX_SIZE_BATCH_INSERT) { + count += diesel::insert_into(block_rewards) + .values(chunk) + .on_conflict_do_nothing() + .execute(conn)?; + } + + let time_taken = timer.elapsed(); + debug!("Block rewards inserted, count: {count}, time_taken: {time_taken:?}"); + Ok(()) +} + +/// Selects the row from the `block_rewards` table where `slot` is minimum. +pub fn get_lowest_block_rewards(conn: &mut PgConn) -> Result, Error> { + use self::block_rewards::dsl::*; + let timer = Instant::now(); + + let result = block_rewards + .order_by(slot.asc()) + .limit(1) + .first::(conn) + .optional()?; + + let time_taken = timer.elapsed(); + debug!("Block rewards requested: lowest, time_taken: {time_taken:?}"); + Ok(result) +} + +/// Selects the row from the `block_rewards` table where `slot` is maximum. +pub fn get_highest_block_rewards(conn: &mut PgConn) -> Result, Error> { + use self::block_rewards::dsl::*; + let timer = Instant::now(); + + let result = block_rewards + .order_by(slot.desc()) + .limit(1) + .first::(conn) + .optional()?; + + let time_taken = timer.elapsed(); + debug!("Block rewards requested: highest, time_taken: {time_taken:?}"); + Ok(result) +} + +/// Selects a single row of the `block_rewards` table corresponding to a given `root_query`. +pub fn get_block_rewards_by_root( + conn: &mut PgConn, + root_query: WatchHash, +) -> Result, Error> { + use self::beacon_blocks::dsl::{beacon_blocks, root}; + use self::block_rewards::dsl::*; + let timer = Instant::now(); + + let join = beacon_blocks.inner_join(block_rewards); + + let result = join + .select((slot, total, attestation_reward, sync_committee_reward)) + .filter(root.eq(root_query)) + .first::(conn) + .optional()?; + + let time_taken = timer.elapsed(); + debug!("Block rewards requested: {root_query}, time_taken: {time_taken:?}"); + Ok(result) +} + +/// Selects a single row of the `block_rewards` table corresponding to a given `slot_query`. +pub fn get_block_rewards_by_slot( + conn: &mut PgConn, + slot_query: WatchSlot, +) -> Result, Error> { + use self::block_rewards::dsl::*; + let timer = Instant::now(); + + let result = block_rewards + .filter(slot.eq(slot_query)) + .first::(conn) + .optional()?; + + let time_taken = timer.elapsed(); + debug!("Block rewards requested: {slot_query}, time_taken: {time_taken:?}"); + Ok(result) +} + +/// Selects `slot` from all rows of the `beacon_blocks` table which do not have a corresponding +/// row in `block_rewards`. +#[allow(dead_code)] +pub fn get_unknown_block_rewards(conn: &mut PgConn) -> Result>, Error> { + use self::beacon_blocks::dsl::{beacon_blocks, root, slot}; + use self::block_rewards::dsl::block_rewards; + + let join = beacon_blocks.left_join(block_rewards); + + let result = join + .select(slot) + .filter(root.is_null()) + // Block rewards cannot be retrieved for `slot == 0` so we need to exclude it. + .filter(slot.ne(0)) + .order_by(slot.desc()) + .nullable() + .load::>(conn)?; + + Ok(result) +} diff --git a/watch/src/block_rewards/mod.rs b/watch/src/block_rewards/mod.rs new file mode 100644 index 0000000000..0dac88ea58 --- /dev/null +++ b/watch/src/block_rewards/mod.rs @@ -0,0 +1,38 @@ +pub mod database; +mod server; +mod updater; + +use crate::database::watch_types::WatchSlot; +use crate::updater::error::Error; + +pub use database::{ + get_block_rewards_by_root, get_block_rewards_by_slot, get_highest_block_rewards, + get_lowest_block_rewards, get_unknown_block_rewards, insert_batch_block_rewards, + WatchBlockRewards, +}; +pub use server::block_rewards_routes; + +use eth2::BeaconNodeHttpClient; +use types::Slot; + +/// Sends a request to `lighthouse/analysis/block_rewards`. +/// Formats the response into a vector of `WatchBlockRewards`. +/// +/// Will fail if `start_slot == 0`. +pub async fn get_block_rewards( + bn: &BeaconNodeHttpClient, + start_slot: Slot, + end_slot: Slot, +) -> Result, Error> { + Ok(bn + .get_lighthouse_analysis_block_rewards(start_slot, end_slot) + .await? + .into_iter() + .map(|data| WatchBlockRewards { + slot: WatchSlot::from_slot(data.meta.slot), + total: data.total as i32, + attestation_reward: data.attestation_rewards.total as i32, + sync_committee_reward: data.sync_committee_rewards as i32, + }) + .collect()) +} diff --git a/watch/src/block_rewards/server.rs b/watch/src/block_rewards/server.rs new file mode 100644 index 0000000000..480346e25b --- /dev/null +++ b/watch/src/block_rewards/server.rs @@ -0,0 +1,31 @@ +use crate::block_rewards::database::{ + get_block_rewards_by_root, get_block_rewards_by_slot, WatchBlockRewards, +}; +use crate::database::{get_connection, PgPool, WatchHash, WatchSlot}; +use crate::server::Error; + +use axum::{extract::Path, routing::get, Extension, Json, Router}; +use eth2::types::BlockId; +use std::str::FromStr; + +pub async fn get_block_rewards( + Path(block_query): Path, + Extension(pool): Extension, +) -> Result>, Error> { + let mut conn = get_connection(&pool).map_err(Error::Database)?; + match BlockId::from_str(&block_query).map_err(|_| Error::BadRequest)? { + BlockId::Root(root) => Ok(Json(get_block_rewards_by_root( + &mut conn, + WatchHash::from_hash(root), + )?)), + BlockId::Slot(slot) => Ok(Json(get_block_rewards_by_slot( + &mut conn, + WatchSlot::from_slot(slot), + )?)), + _ => Err(Error::BadRequest), + } +} + +pub fn block_rewards_routes() -> Router { + Router::new().route("/v1/blocks/:block/rewards", get(get_block_rewards)) +} diff --git a/watch/src/block_rewards/updater.rs b/watch/src/block_rewards/updater.rs new file mode 100644 index 0000000000..ad34b1f078 --- /dev/null +++ b/watch/src/block_rewards/updater.rs @@ -0,0 +1,157 @@ +use crate::database::{self, Error as DbError}; +use crate::updater::{Error, UpdateHandler}; + +use crate::block_rewards::get_block_rewards; + +use eth2::types::EthSpec; +use log::{debug, error, warn}; + +const MAX_SIZE_SINGLE_REQUEST_BLOCK_REWARDS: u64 = 1600; + +impl UpdateHandler { + /// Forward fills the `block_rewards` table starting from the entry with the + /// highest slot. + /// + /// It constructs a request to the `get_block_rewards` API with: + /// `start_slot` -> highest filled `block_rewards` + 1 (or lowest beacon block) + /// `end_slot` -> highest beacon block + /// + /// Request range will not exceed `MAX_SIZE_SINGLE_REQUEST_BLOCK_REWARDS`. + pub async fn fill_block_rewards(&mut self) -> Result<(), Error> { + let mut conn = database::get_connection(&self.pool)?; + + // Get the slot of the highest entry in the `block_rewards` table. + let highest_filled_slot_opt = if self.config.block_rewards { + database::get_highest_block_rewards(&mut conn)?.map(|reward| reward.slot) + } else { + return Err(Error::NotEnabled("block_rewards".to_string())); + }; + + let mut start_slot = if let Some(highest_filled_slot) = highest_filled_slot_opt { + highest_filled_slot.as_slot() + 1 + } else { + // No entries in the `block_rewards` table. Use `beacon_blocks` instead. + if let Some(lowest_beacon_block) = + database::get_lowest_beacon_block(&mut conn)?.map(|block| block.slot) + { + lowest_beacon_block.as_slot() + } else { + // There are no blocks in the database, do not fill the `block_rewards` table. + warn!("Refusing to fill block rewards as there are no blocks in the database"); + return Ok(()); + } + }; + + // The `block_rewards` API cannot accept `start_slot == 0`. + if start_slot == 0 { + start_slot += 1; + } + + if let Some(highest_beacon_block) = + database::get_highest_beacon_block(&mut conn)?.map(|block| block.slot) + { + let mut end_slot = highest_beacon_block.as_slot(); + + if start_slot > end_slot { + debug!("Block rewards are up to date with the head of the database"); + return Ok(()); + } + + // Ensure the size of the request does not exceed the maximum allowed value. + if start_slot < end_slot.saturating_sub(MAX_SIZE_SINGLE_REQUEST_BLOCK_REWARDS) { + end_slot = start_slot + MAX_SIZE_SINGLE_REQUEST_BLOCK_REWARDS + } + + let rewards = get_block_rewards(&self.bn, start_slot, end_slot).await?; + database::insert_batch_block_rewards(&mut conn, rewards)?; + } else { + // There are no blocks in the `beacon_blocks` database, but there are entries in the + // `block_rewards` table. This is a critical failure. It usually means someone has + // manually tampered with the database tables and should not occur during normal + // operation. + error!("Database is corrupted. Please re-sync the database"); + return Err(Error::Database(DbError::DatabaseCorrupted)); + } + + Ok(()) + } + + /// Backfill the `block_rewards` tables starting from the entry with the + /// lowest slot. + /// + /// It constructs a request to the `get_block_rewards` API with: + /// `start_slot` -> lowest_beacon_block + /// `end_slot` -> lowest filled `block_rewards` - 1 (or highest beacon block) + /// + /// Request range will not exceed `MAX_SIZE_SINGLE_REQUEST_BLOCK_REWARDS`. + pub async fn backfill_block_rewards(&mut self) -> Result<(), Error> { + let mut conn = database::get_connection(&self.pool)?; + let max_block_reward_backfill = self.config.max_backfill_size_epochs * self.slots_per_epoch; + + // Get the slot of the lowest entry in the `block_rewards` table. + let lowest_filled_slot_opt = if self.config.block_rewards { + database::get_lowest_block_rewards(&mut conn)?.map(|reward| reward.slot) + } else { + return Err(Error::NotEnabled("block_rewards".to_string())); + }; + + let end_slot = if let Some(lowest_filled_slot) = lowest_filled_slot_opt { + lowest_filled_slot.as_slot().saturating_sub(1_u64) + } else { + // No entries in the `block_rewards` table. Use `beacon_blocks` instead. + if let Some(highest_beacon_block) = + database::get_highest_beacon_block(&mut conn)?.map(|block| block.slot) + { + highest_beacon_block.as_slot() + } else { + // There are no blocks in the database, do not backfill the `block_rewards` table. + warn!("Refusing to backfill block rewards as there are no blocks in the database"); + return Ok(()); + } + }; + + if end_slot <= 1 { + debug!("Block rewards backfill is complete"); + return Ok(()); + } + + if let Some(lowest_block_slot) = database::get_lowest_beacon_block(&mut conn)? { + let mut start_slot = lowest_block_slot.slot.as_slot(); + + if start_slot >= end_slot { + debug!("Block rewards are up to date with the base of the database"); + return Ok(()); + } + + // Ensure that the request range does not exceed `max_block_reward_backfill` or + // `MAX_SIZE_SINGLE_REQUEST_BLOCK_REWARDS`. + if start_slot < end_slot.saturating_sub(max_block_reward_backfill) { + start_slot = end_slot.saturating_sub(max_block_reward_backfill) + } + + if start_slot < end_slot.saturating_sub(MAX_SIZE_SINGLE_REQUEST_BLOCK_REWARDS) { + start_slot = end_slot.saturating_sub(MAX_SIZE_SINGLE_REQUEST_BLOCK_REWARDS) + } + + // The `block_rewards` API cannot accept `start_slot == 0`. + if start_slot == 0 { + start_slot += 1 + } + + let rewards = get_block_rewards(&self.bn, start_slot, end_slot).await?; + + if self.config.block_rewards { + database::insert_batch_block_rewards(&mut conn, rewards)?; + } + } else { + // There are no blocks in the `beacon_blocks` database, but there are entries in the + // `block_rewards` table. This is a critical failure. It usually means someone has + // manually tampered with the database tables and should not occur during normal + // operation. + error!("Database is corrupted. Please re-sync the database"); + return Err(Error::Database(DbError::DatabaseCorrupted)); + } + + Ok(()) + } +} diff --git a/watch/src/blockprint/config.rs b/watch/src/blockprint/config.rs new file mode 100644 index 0000000000..721fa7cb19 --- /dev/null +++ b/watch/src/blockprint/config.rs @@ -0,0 +1,40 @@ +use serde::{Deserialize, Serialize}; + +pub const fn enabled() -> bool { + false +} + +pub const fn url() -> Option { + None +} + +pub const fn username() -> Option { + None +} + +pub const fn password() -> Option { + None +} + +#[derive(Debug, Clone, Serialize, Deserialize)] +pub struct Config { + #[serde(default = "enabled")] + pub enabled: bool, + #[serde(default = "url")] + pub url: Option, + #[serde(default = "username")] + pub username: Option, + #[serde(default = "password")] + pub password: Option, +} + +impl Default for Config { + fn default() -> Self { + Config { + enabled: enabled(), + url: url(), + username: username(), + password: password(), + } + } +} diff --git a/watch/src/blockprint/database.rs b/watch/src/blockprint/database.rs new file mode 100644 index 0000000000..afa35c81b6 --- /dev/null +++ b/watch/src/blockprint/database.rs @@ -0,0 +1,224 @@ +use crate::database::{ + self, + schema::{beacon_blocks, blockprint}, + watch_types::{WatchHash, WatchSlot}, + Error, PgConn, MAX_SIZE_BATCH_INSERT, +}; + +use diesel::prelude::*; +use diesel::sql_types::{Integer, Text}; +use diesel::{Insertable, Queryable}; +use log::debug; +use serde::{Deserialize, Serialize}; +use std::collections::HashMap; +use std::time::Instant; + +type WatchConsensusClient = String; +pub fn list_consensus_clients() -> Vec { + vec![ + "Lighthouse".to_string(), + "Lodestar".to_string(), + "Nimbus".to_string(), + "Prysm".to_string(), + "Teku".to_string(), + "Unknown".to_string(), + ] +} + +#[derive(Debug, Queryable, Insertable, Serialize, Deserialize)] +#[diesel(table_name = blockprint)] +pub struct WatchBlockprint { + pub slot: WatchSlot, + pub best_guess: WatchConsensusClient, +} + +#[derive(Debug, QueryableByName, diesel::FromSqlRow)] +pub struct WatchValidatorBlockprint { + #[diesel(sql_type = Integer)] + pub proposer_index: i32, + #[diesel(sql_type = Text)] + pub best_guess: WatchConsensusClient, + #[diesel(sql_type = Integer)] + pub slot: WatchSlot, +} + +/// Insert a batch of values into the `blockprint` table. +/// +/// On a conflict, it will do nothing, leaving the old value. +pub fn insert_batch_blockprint( + conn: &mut PgConn, + prints: Vec, +) -> Result<(), Error> { + use self::blockprint::dsl::*; + + let mut count = 0; + let timer = Instant::now(); + + for chunk in prints.chunks(MAX_SIZE_BATCH_INSERT) { + count += diesel::insert_into(blockprint) + .values(chunk) + .on_conflict_do_nothing() + .execute(conn)?; + } + + let time_taken = timer.elapsed(); + debug!("Blockprint inserted, count: {count}, time_taken: {time_taken:?}"); + Ok(()) +} + +/// Selects the row from the `blockprint` table where `slot` is minimum. +pub fn get_lowest_blockprint(conn: &mut PgConn) -> Result, Error> { + use self::blockprint::dsl::*; + let timer = Instant::now(); + + let result = blockprint + .order_by(slot.asc()) + .limit(1) + .first::(conn) + .optional()?; + + let time_taken = timer.elapsed(); + debug!("Blockprint requested: lowest, time_taken: {time_taken:?}"); + Ok(result) +} + +/// Selects the row from the `blockprint` table where `slot` is maximum. +pub fn get_highest_blockprint(conn: &mut PgConn) -> Result, Error> { + use self::blockprint::dsl::*; + let timer = Instant::now(); + + let result = blockprint + .order_by(slot.desc()) + .limit(1) + .first::(conn) + .optional()?; + + let time_taken = timer.elapsed(); + debug!("Blockprint requested: highest, time_taken: {time_taken:?}"); + Ok(result) +} + +/// Selects a single row of the `blockprint` table corresponding to a given `root_query`. +pub fn get_blockprint_by_root( + conn: &mut PgConn, + root_query: WatchHash, +) -> Result, Error> { + use self::beacon_blocks::dsl::{beacon_blocks, root}; + use self::blockprint::dsl::*; + let timer = Instant::now(); + + let join = beacon_blocks.inner_join(blockprint); + + let result = join + .select((slot, best_guess)) + .filter(root.eq(root_query)) + .first::(conn) + .optional()?; + + let time_taken = timer.elapsed(); + debug!("Blockprint requested: {root_query}, time_taken: {time_taken:?}"); + Ok(result) +} + +/// Selects a single row of the `blockprint` table corresponding to a given `slot_query`. +pub fn get_blockprint_by_slot( + conn: &mut PgConn, + slot_query: WatchSlot, +) -> Result, Error> { + use self::blockprint::dsl::*; + let timer = Instant::now(); + + let result = blockprint + .filter(slot.eq(slot_query)) + .first::(conn) + .optional()?; + + let time_taken = timer.elapsed(); + debug!("Blockprint requested: {slot_query}, time_taken: {time_taken:?}"); + Ok(result) +} + +/// Selects `slot` from all rows of the `beacon_blocks` table which do not have a corresponding +/// row in `blockprint`. +#[allow(dead_code)] +pub fn get_unknown_blockprint(conn: &mut PgConn) -> Result>, Error> { + use self::beacon_blocks::dsl::{beacon_blocks, root, slot}; + use self::blockprint::dsl::blockprint; + + let join = beacon_blocks.left_join(blockprint); + + let result = join + .select(slot) + .filter(root.is_null()) + .order_by(slot.desc()) + .nullable() + .load::>(conn)?; + + Ok(result) +} + +/// Constructs a HashMap of `index` -> `best_guess` for each validator's latest proposal at or before +/// `target_slot`. +/// Inserts `"Unknown" if no prior proposals exist. +pub fn construct_validator_blockprints_at_slot( + conn: &mut PgConn, + target_slot: WatchSlot, + slots_per_epoch: u64, +) -> Result, Error> { + use self::blockprint::dsl::{blockprint, slot}; + + let total_validators = + database::count_validators_activated_before_slot(conn, target_slot, slots_per_epoch)? + as usize; + + let mut blockprint_map = HashMap::with_capacity(total_validators); + + let latest_proposals = + database::get_all_validators_latest_proposer_info_at_slot(conn, target_slot)?; + + let latest_proposal_slots: Vec = latest_proposals.clone().into_keys().collect(); + + let result = blockprint + .filter(slot.eq_any(latest_proposal_slots)) + .load::(conn)?; + + // Insert the validators which have available blockprints. + for print in result { + if let Some(proposer) = latest_proposals.get(&print.slot) { + blockprint_map.insert(*proposer, print.best_guess); + } + } + + // Insert the rest of the unknown validators. + for validator_index in 0..total_validators { + blockprint_map + .entry(validator_index as i32) + .or_insert_with(|| "Unknown".to_string()); + } + + Ok(blockprint_map) +} + +/// Counts the number of occurances of each `client` present in the `validators` table at or before some +/// `target_slot`. +pub fn get_validators_clients_at_slot( + conn: &mut PgConn, + target_slot: WatchSlot, + slots_per_epoch: u64, +) -> Result, Error> { + let mut client_map: HashMap = HashMap::new(); + + // This includes all validators which were activated at or before `target_slot`. + let validator_blockprints = + construct_validator_blockprints_at_slot(conn, target_slot, slots_per_epoch)?; + + for client in list_consensus_clients() { + let count = validator_blockprints + .iter() + .filter(|(_, v)| (*v).clone() == client) + .count(); + client_map.insert(client, count); + } + + Ok(client_map) +} diff --git a/watch/src/blockprint/mod.rs b/watch/src/blockprint/mod.rs new file mode 100644 index 0000000000..b8107e5bf5 --- /dev/null +++ b/watch/src/blockprint/mod.rs @@ -0,0 +1,149 @@ +pub mod database; +pub mod server; +pub mod updater; + +mod config; + +use crate::database::WatchSlot; + +use eth2::SensitiveUrl; +use reqwest::{Client, Response, Url}; +use serde::{Deserialize, Serialize}; +use std::collections::HashMap; +use std::time::Duration; +use types::Slot; + +pub use config::Config; +pub use database::{ + get_blockprint_by_root, get_blockprint_by_slot, get_highest_blockprint, get_lowest_blockprint, + get_unknown_blockprint, get_validators_clients_at_slot, insert_batch_blockprint, + list_consensus_clients, WatchBlockprint, +}; +pub use server::blockprint_routes; + +const TIMEOUT: Duration = Duration::from_secs(50); + +#[derive(Debug)] +pub enum Error { + Reqwest(reqwest::Error), + Url(url::ParseError), + BlockprintNotSynced, + Other(String), +} + +impl From for Error { + fn from(e: reqwest::Error) -> Self { + Error::Reqwest(e) + } +} + +impl From for Error { + fn from(e: url::ParseError) -> Self { + Error::Url(e) + } +} + +pub struct WatchBlockprintClient { + pub client: Client, + pub server: SensitiveUrl, + pub username: Option, + pub password: Option, +} + +#[derive(Debug, Deserialize, Serialize)] +pub struct BlockprintSyncingResponse { + pub greatest_block_slot: Slot, + pub synced: bool, +} + +#[derive(Debug, Deserialize, Serialize)] +pub struct BlockprintResponse { + pub proposer_index: i32, + pub slot: Slot, + pub best_guess_single: String, +} + +impl WatchBlockprintClient { + async fn get(&self, url: Url) -> Result { + let mut builder = self.client.get(url).timeout(TIMEOUT); + if let Some(username) = &self.username { + builder = builder.basic_auth(username, self.password.as_ref()); + } + let response = builder.send().await.map_err(Error::Reqwest)?; + + if !response.status().is_success() { + return Err(Error::Other(response.text().await?)); + } + + Ok(response) + } + + // Returns the `greatest_block_slot` as reported by the Blockprint server. + // Will error if the Blockprint server is not synced. + #[allow(dead_code)] + pub async fn ensure_synced(&self) -> Result { + let url = self.server.full.join("sync/")?.join("status")?; + + let response = self.get(url).await?; + + let result = response.json::().await?; + if !result.synced { + return Err(Error::BlockprintNotSynced); + } + + Ok(result.greatest_block_slot) + } + + // Pulls the latest blockprint for all validators. + #[allow(dead_code)] + pub async fn blockprint_all_validators( + &self, + highest_validator: i32, + ) -> Result, Error> { + let url = self + .server + .full + .join("validator/")? + .join("blocks/")? + .join("latest")?; + + let response = self.get(url).await?; + + let mut result = response.json::>().await?; + result.retain(|print| print.proposer_index <= highest_validator); + + let mut map: HashMap = HashMap::with_capacity(result.len()); + for print in result { + map.insert(print.proposer_index, print.best_guess_single); + } + + Ok(map) + } + + // Construct a request to the Blockprint server for a range of slots between `start_slot` and + // `end_slot`. + pub async fn get_blockprint( + &self, + start_slot: Slot, + end_slot: Slot, + ) -> Result, Error> { + let url = self + .server + .full + .join("blocks/")? + .join(&format!("{start_slot}/{end_slot}"))?; + + let response = self.get(url).await?; + + let result = response + .json::>() + .await? + .iter() + .map(|response| WatchBlockprint { + slot: WatchSlot::from_slot(response.slot), + best_guess: response.best_guess_single.clone(), + }) + .collect(); + Ok(result) + } +} diff --git a/watch/src/blockprint/server.rs b/watch/src/blockprint/server.rs new file mode 100644 index 0000000000..488af15717 --- /dev/null +++ b/watch/src/blockprint/server.rs @@ -0,0 +1,31 @@ +use crate::blockprint::database::{ + get_blockprint_by_root, get_blockprint_by_slot, WatchBlockprint, +}; +use crate::database::{get_connection, PgPool, WatchHash, WatchSlot}; +use crate::server::Error; + +use axum::{extract::Path, routing::get, Extension, Json, Router}; +use eth2::types::BlockId; +use std::str::FromStr; + +pub async fn get_blockprint( + Path(block_query): Path, + Extension(pool): Extension, +) -> Result>, Error> { + let mut conn = get_connection(&pool).map_err(Error::Database)?; + match BlockId::from_str(&block_query).map_err(|_| Error::BadRequest)? { + BlockId::Root(root) => Ok(Json(get_blockprint_by_root( + &mut conn, + WatchHash::from_hash(root), + )?)), + BlockId::Slot(slot) => Ok(Json(get_blockprint_by_slot( + &mut conn, + WatchSlot::from_slot(slot), + )?)), + _ => Err(Error::BadRequest), + } +} + +pub fn blockprint_routes() -> Router { + Router::new().route("/v1/blocks/:block/blockprint", get(get_blockprint)) +} diff --git a/watch/src/blockprint/updater.rs b/watch/src/blockprint/updater.rs new file mode 100644 index 0000000000..28c3184556 --- /dev/null +++ b/watch/src/blockprint/updater.rs @@ -0,0 +1,172 @@ +use crate::database::{self, Error as DbError}; +use crate::updater::{Error, UpdateHandler}; + +use eth2::types::EthSpec; +use log::{debug, error, warn}; + +const MAX_SIZE_SINGLE_REQUEST_BLOCKPRINT: u64 = 1600; + +impl UpdateHandler { + /// Forward fills the `blockprint` table starting from the entry with the + /// highest slot. + /// + /// It constructs a request to the `get_blockprint` API with: + /// `start_slot` -> highest filled `blockprint` + 1 (or lowest beacon block) + /// `end_slot` -> highest beacon block + /// + /// Request range will not exceed `MAX_SIZE_SINGLE_REQUEST_BLOCKPRINT`. + pub async fn fill_blockprint(&mut self) -> Result<(), Error> { + // Ensure blockprint in enabled. + if let Some(blockprint_client) = &self.blockprint { + let mut conn = database::get_connection(&self.pool)?; + + // Get the slot of the highest entry in the `blockprint` table. + let mut start_slot = if let Some(highest_filled_slot) = + database::get_highest_blockprint(&mut conn)?.map(|print| print.slot) + { + highest_filled_slot.as_slot() + 1 + } else { + // No entries in the `blockprint` table. Use `beacon_blocks` instead. + if let Some(lowest_beacon_block) = + database::get_lowest_beacon_block(&mut conn)?.map(|block| block.slot) + { + lowest_beacon_block.as_slot() + } else { + // There are no blocks in the database, do not fill the `blockprint` table. + warn!("Refusing to fill blockprint as there are no blocks in the database"); + return Ok(()); + } + }; + + // The `blockprint` API cannot accept `start_slot == 0`. + if start_slot == 0 { + start_slot += 1; + } + + if let Some(highest_beacon_block) = + database::get_highest_beacon_block(&mut conn)?.map(|block| block.slot) + { + let mut end_slot = highest_beacon_block.as_slot(); + + if start_slot > end_slot { + debug!("Blockprint is up to date with the head of the database"); + return Ok(()); + } + + // Ensure the size of the request does not exceed the maximum allowed value. + if start_slot < end_slot.saturating_sub(MAX_SIZE_SINGLE_REQUEST_BLOCKPRINT) { + end_slot = start_slot + MAX_SIZE_SINGLE_REQUEST_BLOCKPRINT + } + + let mut prints = blockprint_client + .get_blockprint(start_slot, end_slot) + .await?; + + // Ensure the prints returned from blockprint are for slots which exist in the + // `beacon_blocks` table. + prints.retain(|print| { + database::get_beacon_block_by_slot(&mut conn, print.slot) + .ok() + .flatten() + .is_some() + }); + + database::insert_batch_blockprint(&mut conn, prints)?; + } else { + // There are no blocks in the `beacon_blocks` database, but there are entries in either + // `blockprint` table. This is a critical failure. It usually means + // someone has manually tampered with the database tables and should not occur during + // normal operation. + error!("Database is corrupted. Please re-sync the database"); + return Err(Error::Database(DbError::DatabaseCorrupted)); + } + } + + Ok(()) + } + + /// Backfill the `blockprint` table starting from the entry with the lowest slot. + /// + /// It constructs a request to the `get_blockprint` API with: + /// `start_slot` -> lowest_beacon_block + /// `end_slot` -> lowest filled `blockprint` - 1 (or highest beacon block) + /// + /// Request range will not exceed `MAX_SIZE_SINGLE_REQUEST_BLOCKPRINT`. + pub async fn backfill_blockprint(&mut self) -> Result<(), Error> { + // Ensure blockprint in enabled. + if let Some(blockprint_client) = &self.blockprint { + let mut conn = database::get_connection(&self.pool)?; + let max_blockprint_backfill = + self.config.max_backfill_size_epochs * self.slots_per_epoch; + + // Get the slot of the lowest entry in the `blockprint` table. + let end_slot = if let Some(lowest_filled_slot) = + database::get_lowest_blockprint(&mut conn)?.map(|print| print.slot) + { + lowest_filled_slot.as_slot().saturating_sub(1_u64) + } else { + // No entries in the `blockprint` table. Use `beacon_blocks` instead. + if let Some(highest_beacon_block) = + database::get_highest_beacon_block(&mut conn)?.map(|block| block.slot) + { + highest_beacon_block.as_slot() + } else { + // There are no blocks in the database, do not backfill the `blockprint` table. + warn!("Refusing to backfill blockprint as there are no blocks in the database"); + return Ok(()); + } + }; + + if end_slot <= 1 { + debug!("Blockprint backfill is complete"); + return Ok(()); + } + + if let Some(lowest_block_slot) = database::get_lowest_beacon_block(&mut conn)? { + let mut start_slot = lowest_block_slot.slot.as_slot(); + + if start_slot >= end_slot { + debug!("Blockprint are up to date with the base of the database"); + return Ok(()); + } + + // Ensure that the request range does not exceed `max_blockprint_backfill` or + // `MAX_SIZE_SINGLE_REQUEST_BLOCKPRINT`. + if start_slot < end_slot.saturating_sub(max_blockprint_backfill) { + start_slot = end_slot.saturating_sub(max_blockprint_backfill) + } + + if start_slot < end_slot.saturating_sub(MAX_SIZE_SINGLE_REQUEST_BLOCKPRINT) { + start_slot = end_slot.saturating_sub(MAX_SIZE_SINGLE_REQUEST_BLOCKPRINT) + } + + // The `blockprint` API cannot accept `start_slot == 0`. + if start_slot == 0 { + start_slot += 1 + } + + let mut prints = blockprint_client + .get_blockprint(start_slot, end_slot) + .await?; + + // Ensure the prints returned from blockprint are for slots which exist in the + // `beacon_blocks` table. + prints.retain(|print| { + database::get_beacon_block_by_slot(&mut conn, print.slot) + .ok() + .flatten() + .is_some() + }); + + database::insert_batch_blockprint(&mut conn, prints)?; + } else { + // There are no blocks in the `beacon_blocks` database, but there are entries in the `blockprint` + // table. This is a critical failure. It usually means someone has manually tampered with the + // database tables and should not occur during normal operation. + error!("Database is corrupted. Please re-sync the database"); + return Err(Error::Database(DbError::DatabaseCorrupted)); + } + } + Ok(()) + } +} diff --git a/watch/src/cli.rs b/watch/src/cli.rs new file mode 100644 index 0000000000..a8e5f3716f --- /dev/null +++ b/watch/src/cli.rs @@ -0,0 +1,55 @@ +use crate::{config::Config, logger, server, updater}; +use clap::{App, Arg}; +use tokio::sync::oneshot; + +pub const SERVE: &str = "serve"; +pub const RUN_UPDATER: &str = "run-updater"; +pub const CONFIG: &str = "config"; + +fn run_updater<'a, 'b>() -> App<'a, 'b> { + App::new(RUN_UPDATER).setting(clap::AppSettings::ColoredHelp) +} + +fn serve<'a, 'b>() -> App<'a, 'b> { + App::new(SERVE).setting(clap::AppSettings::ColoredHelp) +} + +pub fn app<'a, 'b>() -> App<'a, 'b> { + App::new("beacon_watch_daemon") + .author("Sigma Prime ") + .setting(clap::AppSettings::ColoredHelp) + .arg( + Arg::with_name(CONFIG) + .long(CONFIG) + .value_name("PATH_TO_CONFIG") + .help("Path to configuration file") + .takes_value(true) + .global(true), + ) + .subcommand(run_updater()) + .subcommand(serve()) +} + +pub async fn run() -> Result<(), String> { + let matches = app().get_matches(); + + let config = match matches.value_of(CONFIG) { + Some(path) => Config::load_from_file(path.to_string())?, + None => Config::default(), + }; + + logger::init_logger(&config.log_level); + + match matches.subcommand() { + (RUN_UPDATER, Some(_)) => updater::run_updater(config) + .await + .map_err(|e| format!("Failure: {:?}", e)), + (SERVE, Some(_)) => { + let (_shutdown_tx, shutdown_rx) = oneshot::channel(); + server::serve(config, shutdown_rx) + .await + .map_err(|e| format!("Failure: {:?}", e)) + } + _ => Err("Unsupported subcommand. See --help".into()), + } +} diff --git a/watch/src/client.rs b/watch/src/client.rs new file mode 100644 index 0000000000..43aaccde34 --- /dev/null +++ b/watch/src/client.rs @@ -0,0 +1,178 @@ +use crate::block_packing::WatchBlockPacking; +use crate::block_rewards::WatchBlockRewards; +use crate::database::models::{ + WatchBeaconBlock, WatchCanonicalSlot, WatchProposerInfo, WatchValidator, +}; +use crate::suboptimal_attestations::WatchAttestation; + +use eth2::types::BlockId; +use reqwest::Client; +use serde::de::DeserializeOwned; +use types::Hash256; +use url::Url; + +#[derive(Debug)] +pub enum Error { + Reqwest(reqwest::Error), + Url(url::ParseError), +} + +impl From for Error { + fn from(e: reqwest::Error) -> Self { + Error::Reqwest(e) + } +} + +impl From for Error { + fn from(e: url::ParseError) -> Self { + Error::Url(e) + } +} + +pub struct WatchHttpClient { + pub client: Client, + pub server: Url, +} + +impl WatchHttpClient { + async fn get_opt(&self, url: Url) -> Result, Error> { + let response = self.client.get(url).send().await?; + + if response.status() == 404 { + Ok(None) + } else { + response + .error_for_status()? + .json() + .await + .map_err(Into::into) + } + } + + pub async fn get_beacon_blocks( + &self, + block_id: BlockId, + ) -> Result, Error> { + let url = self + .server + .join("v1/")? + .join("blocks/")? + .join(&block_id.to_string())?; + + self.get_opt(url).await + } + + pub async fn get_lowest_canonical_slot(&self) -> Result, Error> { + let url = self.server.join("v1/")?.join("slots/")?.join("lowest")?; + + self.get_opt(url).await + } + + pub async fn get_highest_canonical_slot(&self) -> Result, Error> { + let url = self.server.join("v1/")?.join("slots/")?.join("highest")?; + + self.get_opt(url).await + } + + pub async fn get_lowest_beacon_block(&self) -> Result, Error> { + let url = self.server.join("v1/")?.join("blocks/")?.join("lowest")?; + + self.get_opt(url).await + } + + pub async fn get_highest_beacon_block(&self) -> Result, Error> { + let url = self.server.join("v1/")?.join("blocks/")?.join("highest")?; + + self.get_opt(url).await + } + + pub async fn get_next_beacon_block( + &self, + parent: Hash256, + ) -> Result, Error> { + let url = self + .server + .join("v1/")? + .join("blocks/")? + .join(&format!("{parent:?}/"))? + .join("next")?; + + self.get_opt(url).await + } + + pub async fn get_validator_by_index( + &self, + index: i32, + ) -> Result, Error> { + let url = self + .server + .join("v1/")? + .join("validators/")? + .join(&format!("{index}"))?; + + self.get_opt(url).await + } + + pub async fn get_proposer_info( + &self, + block_id: BlockId, + ) -> Result, Error> { + let url = self + .server + .join("v1/")? + .join("blocks/")? + .join(&format!("{block_id}/"))? + .join("proposer")?; + + self.get_opt(url).await + } + + pub async fn get_block_reward( + &self, + block_id: BlockId, + ) -> Result, Error> { + let url = self + .server + .join("v1/")? + .join("blocks/")? + .join(&format!("{block_id}/"))? + .join("rewards")?; + + self.get_opt(url).await + } + + pub async fn get_block_packing( + &self, + block_id: BlockId, + ) -> Result, Error> { + let url = self + .server + .join("v1/")? + .join("blocks/")? + .join(&format!("{block_id}/"))? + .join("packing")?; + + self.get_opt(url).await + } + + pub async fn get_all_validators(&self) -> Result>, Error> { + let url = self.server.join("v1/")?.join("validators/")?.join("all")?; + + self.get_opt(url).await + } + + pub async fn get_attestations( + &self, + epoch: i32, + ) -> Result>, Error> { + let url = self + .server + .join("v1/")? + .join("validators/")? + .join("all/")? + .join("attestation/")? + .join(&format!("{epoch}"))?; + + self.get_opt(url).await + } +} diff --git a/watch/src/config.rs b/watch/src/config.rs new file mode 100644 index 0000000000..4e61f9df9c --- /dev/null +++ b/watch/src/config.rs @@ -0,0 +1,50 @@ +use crate::blockprint::Config as BlockprintConfig; +use crate::database::Config as DatabaseConfig; +use crate::server::Config as ServerConfig; +use crate::updater::Config as UpdaterConfig; + +use serde::{Deserialize, Serialize}; +use std::fs::File; + +pub const LOG_LEVEL: &str = "debug"; + +fn log_level() -> String { + LOG_LEVEL.to_string() +} + +#[derive(Debug, Clone, Serialize, Deserialize)] +pub struct Config { + #[serde(default)] + pub blockprint: BlockprintConfig, + #[serde(default)] + pub database: DatabaseConfig, + #[serde(default)] + pub server: ServerConfig, + #[serde(default)] + pub updater: UpdaterConfig, + /// The minimum severity for log messages. + #[serde(default = "log_level")] + pub log_level: String, +} + +impl Default for Config { + fn default() -> Self { + Self { + blockprint: BlockprintConfig::default(), + database: DatabaseConfig::default(), + server: ServerConfig::default(), + updater: UpdaterConfig::default(), + log_level: log_level(), + } + } +} + +impl Config { + pub fn load_from_file(path_to_file: String) -> Result { + let file = + File::open(path_to_file).map_err(|e| format!("Error reading config file: {:?}", e))?; + let config: Config = serde_yaml::from_reader(file) + .map_err(|e| format!("Error parsing config file: {:?}", e))?; + Ok(config) + } +} diff --git a/watch/src/database/compat.rs b/watch/src/database/compat.rs new file mode 100644 index 0000000000..b8cda0b216 --- /dev/null +++ b/watch/src/database/compat.rs @@ -0,0 +1,49 @@ +//! Implementations of PostgreSQL compatibility traits. +use crate::database::watch_types::{WatchHash, WatchPK, WatchSlot}; +use diesel::deserialize::{self, FromSql}; +use diesel::pg::{Pg, PgValue}; +use diesel::serialize::{self, Output, ToSql}; +use diesel::sql_types::{Binary, Integer}; + +use std::convert::TryFrom; + +macro_rules! impl_to_from_sql_int { + ($type:ty) => { + impl ToSql for $type + where + i32: ToSql, + { + fn to_sql<'a>(&'a self, out: &mut Output<'a, '_, Pg>) -> serialize::Result { + let v = i32::try_from(self.as_u64()).map_err(|e| Box::new(e))?; + >::to_sql(&v, &mut out.reborrow()) + } + } + + impl FromSql for $type { + fn from_sql(bytes: PgValue<'_>) -> deserialize::Result { + Ok(Self::new(i32::from_sql(bytes)? as u64)) + } + } + }; +} + +macro_rules! impl_to_from_sql_binary { + ($type:ty) => { + impl ToSql for $type { + fn to_sql<'a>(&'a self, out: &mut Output<'a, '_, Pg>) -> serialize::Result { + let b = self.as_bytes(); + <&[u8] as ToSql>::to_sql(&b, &mut out.reborrow()) + } + } + + impl FromSql for $type { + fn from_sql(bytes: PgValue<'_>) -> deserialize::Result { + Self::from_bytes(bytes.as_bytes()).map_err(|e| e.to_string().into()) + } + } + }; +} + +impl_to_from_sql_int!(WatchSlot); +impl_to_from_sql_binary!(WatchHash); +impl_to_from_sql_binary!(WatchPK); diff --git a/watch/src/database/config.rs b/watch/src/database/config.rs new file mode 100644 index 0000000000..dc0c70832f --- /dev/null +++ b/watch/src/database/config.rs @@ -0,0 +1,74 @@ +use serde::{Deserialize, Serialize}; + +pub const USER: &str = "postgres"; +pub const PASSWORD: &str = "postgres"; +pub const DBNAME: &str = "dev"; +pub const DEFAULT_DBNAME: &str = "postgres"; +pub const HOST: &str = "localhost"; +pub const fn port() -> u16 { + 5432 +} +pub const fn connect_timeout_millis() -> u64 { + 2_000 // 2s +} + +fn user() -> String { + USER.to_string() +} + +fn password() -> String { + PASSWORD.to_string() +} + +fn dbname() -> String { + DBNAME.to_string() +} + +fn default_dbname() -> String { + DEFAULT_DBNAME.to_string() +} + +fn host() -> String { + HOST.to_string() +} + +#[derive(Debug, Clone, Serialize, Deserialize)] +pub struct Config { + #[serde(default = "user")] + pub user: String, + #[serde(default = "password")] + pub password: String, + #[serde(default = "dbname")] + pub dbname: String, + #[serde(default = "default_dbname")] + pub default_dbname: String, + #[serde(default = "host")] + pub host: String, + #[serde(default = "port")] + pub port: u16, + #[serde(default = "connect_timeout_millis")] + pub connect_timeout_millis: u64, +} + +impl Default for Config { + fn default() -> Self { + Self { + user: user(), + password: password(), + dbname: dbname(), + default_dbname: default_dbname(), + host: host(), + port: port(), + connect_timeout_millis: connect_timeout_millis(), + } + } +} + +impl Config { + pub fn build_database_url(&self) -> String { + format!( + "postgres://{}:{}@{}:{}/{}", + self.user, self.password, self.host, self.port, self.dbname + ) + } +} diff --git a/watch/src/database/error.rs b/watch/src/database/error.rs new file mode 100644 index 0000000000..8c5088fa13 --- /dev/null +++ b/watch/src/database/error.rs @@ -0,0 +1,55 @@ +use bls::Error as BlsError; +use diesel::result::{ConnectionError, Error as PgError}; +use eth2::SensitiveError; +use r2d2::Error as PoolError; +use std::fmt; +use types::BeaconStateError; + +#[derive(Debug)] +pub enum Error { + BeaconState(BeaconStateError), + Database(PgError), + DatabaseCorrupted, + InvalidSig(BlsError), + PostgresConnection(ConnectionError), + Pool(PoolError), + SensitiveUrl(SensitiveError), + InvalidRoot, + Other(String), +} + +impl fmt::Display for Error { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + write!(f, "{:?}", self) + } +} + +impl From for Error { + fn from(e: BeaconStateError) -> Self { + Error::BeaconState(e) + } +} + +impl From for Error { + fn from(e: ConnectionError) -> Self { + Error::PostgresConnection(e) + } +} + +impl From for Error { + fn from(e: PgError) -> Self { + Error::Database(e) + } +} + +impl From for Error { + fn from(e: PoolError) -> Self { + Error::Pool(e) + } +} + +impl From for Error { + fn from(e: BlsError) -> Self { + Error::InvalidSig(e) + } +} diff --git a/watch/src/database/mod.rs b/watch/src/database/mod.rs new file mode 100644 index 0000000000..b9a7a900a5 --- /dev/null +++ b/watch/src/database/mod.rs @@ -0,0 +1,782 @@ +mod config; +mod error; + +pub mod compat; +pub mod models; +pub mod schema; +pub mod utils; +pub mod watch_types; + +use self::schema::{ + active_config, beacon_blocks, canonical_slots, proposer_info, suboptimal_attestations, + validators, +}; + +use diesel::dsl::max; +use diesel::pg::PgConnection; +use diesel::prelude::*; +use diesel::r2d2::{Builder, ConnectionManager, Pool, PooledConnection}; +use diesel::upsert::excluded; +use log::{debug, info}; +use std::collections::HashMap; +use std::time::Instant; +use types::{EthSpec, SignedBeaconBlock}; + +pub use self::error::Error; +pub use self::models::{WatchBeaconBlock, WatchCanonicalSlot, WatchProposerInfo, WatchValidator}; +pub use self::watch_types::{WatchHash, WatchPK, WatchSlot}; + +pub use crate::block_rewards::{ + get_block_rewards_by_root, get_block_rewards_by_slot, get_highest_block_rewards, + get_lowest_block_rewards, get_unknown_block_rewards, insert_batch_block_rewards, + WatchBlockRewards, +}; + +pub use crate::block_packing::{ + get_block_packing_by_root, get_block_packing_by_slot, get_highest_block_packing, + get_lowest_block_packing, get_unknown_block_packing, insert_batch_block_packing, + WatchBlockPacking, +}; + +pub use crate::suboptimal_attestations::{ + get_all_suboptimal_attestations_for_epoch, get_attestation_by_index, get_attestation_by_pubkey, + get_highest_attestation, get_lowest_attestation, insert_batch_suboptimal_attestations, + WatchAttestation, WatchSuboptimalAttestation, +}; + +pub use crate::blockprint::{ + get_blockprint_by_root, get_blockprint_by_slot, get_highest_blockprint, get_lowest_blockprint, + get_unknown_blockprint, get_validators_clients_at_slot, insert_batch_blockprint, + WatchBlockprint, +}; + +pub use config::Config; + +/// Batch inserts cannot exceed a certain size. +/// See https://github.com/diesel-rs/diesel/issues/2414. +/// For some reason, this seems to translate to 65535 / 5 (13107) records. +pub const MAX_SIZE_BATCH_INSERT: usize = 13107; + +pub type PgPool = Pool>; +pub type PgConn = PooledConnection>; + +/// Connect to a Postgresql database and build a connection pool. +pub fn build_connection_pool(config: &Config) -> Result { + let database_url = config.clone().build_database_url(); + info!("Building connection pool at: {database_url}"); + let pg = ConnectionManager::::new(&database_url); + Builder::new().build(pg).map_err(Error::Pool) +} + +/// Retrieve an idle connection from the pool. +pub fn get_connection(pool: &PgPool) -> Result { + pool.get().map_err(Error::Pool) +} + +/// Insert the active config into the database. This is used to check if the connected beacon node +/// is compatible with the database. These values will not change (except +/// `current_blockprint_checkpoint`). +pub fn insert_active_config( + conn: &mut PgConn, + new_config_name: String, + new_slots_per_epoch: u64, +) -> Result<(), Error> { + use self::active_config::dsl::*; + + diesel::insert_into(active_config) + .values(&vec![( + id.eq(1), + config_name.eq(new_config_name), + slots_per_epoch.eq(new_slots_per_epoch as i32), + )]) + .on_conflict_do_nothing() + .execute(conn)?; + + Ok(()) +} + +/// Get the active config from the database. +pub fn get_active_config(conn: &mut PgConn) -> Result, Error> { + use self::active_config::dsl::*; + Ok(active_config + .select((config_name, slots_per_epoch)) + .filter(id.eq(1)) + .first::<(String, i32)>(conn) + .optional()?) +} + +/// +/// INSERT statements +/// + +/// Inserts a single row into the `canonical_slots` table. +/// If `new_slot.beacon_block` is `None`, the value in the row will be `null`. +/// +/// On a conflict, it will do nothing, leaving the old value. +pub fn insert_canonical_slot(conn: &mut PgConn, new_slot: WatchCanonicalSlot) -> Result<(), Error> { + diesel::insert_into(canonical_slots::table) + .values(&new_slot) + .on_conflict_do_nothing() + .execute(conn)?; + + debug!("Canonical slot inserted: {}", new_slot.slot); + Ok(()) +} + +pub fn insert_beacon_block( + conn: &mut PgConn, + block: SignedBeaconBlock, + root: WatchHash, +) -> Result<(), Error> { + use self::canonical_slots::dsl::{beacon_block, slot as canonical_slot}; + + let block_message = block.message(); + + // Pull out relevant values from the block. + let slot = WatchSlot::from_slot(block.slot()); + let parent_root = WatchHash::from_hash(block.parent_root()); + let proposer_index = block_message.proposer_index() as i32; + let graffiti = block_message.body().graffiti().as_utf8_lossy(); + let attestation_count = block_message.body().attestations().len() as i32; + + let full_payload = block_message.execution_payload().ok(); + + let transaction_count: Option = if let Some(bellatrix_payload) = + full_payload.and_then(|payload| payload.execution_payload_merge().ok()) + { + Some(bellatrix_payload.transactions.len() as i32) + } else { + full_payload + .and_then(|payload| payload.execution_payload_capella().ok()) + .map(|payload| payload.transactions.len() as i32) + }; + + let withdrawal_count: Option = full_payload + .and_then(|payload| payload.execution_payload_capella().ok()) + .map(|payload| payload.withdrawals.len() as i32); + + let block_to_add = WatchBeaconBlock { + slot, + root, + parent_root, + attestation_count, + transaction_count, + withdrawal_count, + }; + + let proposer_info_to_add = WatchProposerInfo { + slot, + proposer_index, + graffiti, + }; + + // Update the canonical slots table. + diesel::update(canonical_slots::table) + .set(beacon_block.eq(root)) + .filter(canonical_slot.eq(slot)) + // Do not overwrite the value if it already exists. + .filter(beacon_block.is_null()) + .execute(conn)?; + + diesel::insert_into(beacon_blocks::table) + .values(block_to_add) + .on_conflict_do_nothing() + .execute(conn)?; + + diesel::insert_into(proposer_info::table) + .values(proposer_info_to_add) + .on_conflict_do_nothing() + .execute(conn)?; + + debug!("Beacon block inserted at slot: {slot}, root: {root}, parent: {parent_root}"); + Ok(()) +} + +/// Insert a validator into the `validators` table +/// +/// On a conflict, it will only overwrite `status`, `activation_epoch` and `exit_epoch`. +pub fn insert_validator(conn: &mut PgConn, validator: WatchValidator) -> Result<(), Error> { + use self::validators::dsl::*; + let new_index = validator.index; + let new_public_key = validator.public_key; + + diesel::insert_into(validators) + .values(validator) + .on_conflict(index) + .do_update() + .set(( + status.eq(excluded(status)), + activation_epoch.eq(excluded(activation_epoch)), + exit_epoch.eq(excluded(exit_epoch)), + )) + .execute(conn)?; + + debug!("Validator inserted, index: {new_index}, public_key: {new_public_key}"); + Ok(()) +} + +/// Insert a batch of values into the `validators` table. +/// +/// On a conflict, it will do nothing. +/// +/// Should not be used when updating validators. +/// Validators should be updated through the `insert_validator` function which contains the correct +/// `on_conflict` clauses. +pub fn insert_batch_validators( + conn: &mut PgConn, + all_validators: Vec, +) -> Result<(), Error> { + use self::validators::dsl::*; + + let mut count = 0; + + for chunk in all_validators.chunks(1000) { + count += diesel::insert_into(validators) + .values(chunk) + .on_conflict_do_nothing() + .execute(conn)?; + } + + debug!("Validators inserted, count: {count}"); + Ok(()) +} + +/// +/// SELECT statements +/// + +/// Selects a single row of the `canonical_slots` table corresponding to a given `slot_query`. +pub fn get_canonical_slot( + conn: &mut PgConn, + slot_query: WatchSlot, +) -> Result, Error> { + use self::canonical_slots::dsl::*; + let timer = Instant::now(); + + let result = canonical_slots + .filter(slot.eq(slot_query)) + .first::(conn) + .optional()?; + + let time_taken = timer.elapsed(); + debug!("Canonical slot requested: {slot_query}, time taken: {time_taken:?}"); + Ok(result) +} + +/// Selects a single row of the `canonical_slots` table corresponding to a given `root_query`. +/// Only returns the non-skipped slot which matches `root`. +pub fn get_canonical_slot_by_root( + conn: &mut PgConn, + root_query: WatchHash, +) -> Result, Error> { + use self::canonical_slots::dsl::*; + let timer = Instant::now(); + + let result = canonical_slots + .filter(root.eq(root_query)) + .filter(skipped.eq(false)) + .first::(conn) + .optional()?; + + let time_taken = timer.elapsed(); + debug!("Canonical root requested: {root_query}, time taken: {time_taken:?}"); + Ok(result) +} + +/// Selects `root` from a single row of the `canonical_slots` table corresponding to a given +/// `slot_query`. +#[allow(dead_code)] +pub fn get_root_at_slot( + conn: &mut PgConn, + slot_query: WatchSlot, +) -> Result, Error> { + use self::canonical_slots::dsl::*; + let timer = Instant::now(); + + let result = canonical_slots + .select(root) + .filter(slot.eq(slot_query)) + .first::(conn) + .optional()?; + + let time_taken = timer.elapsed(); + debug!("Canonical slot requested: {slot_query}, time taken: {time_taken:?}"); + Ok(result) +} + +/// Selects `slot` from the row of the `canonical_slots` table corresponding to the minimum value +/// of `slot`. +pub fn get_lowest_canonical_slot(conn: &mut PgConn) -> Result, Error> { + use self::canonical_slots::dsl::*; + let timer = Instant::now(); + + let result = canonical_slots + .order_by(slot.asc()) + .limit(1) + .first::(conn) + .optional()?; + + let time_taken = timer.elapsed(); + debug!("Canonical slot requested: lowest, time taken: {time_taken:?}"); + Ok(result) +} + +/// Selects `slot` from the row of the `canonical_slots` table corresponding to the minimum value +/// of `slot` and where `skipped == false`. +pub fn get_lowest_non_skipped_canonical_slot( + conn: &mut PgConn, +) -> Result, Error> { + use self::canonical_slots::dsl::*; + let timer = Instant::now(); + + let result = canonical_slots + .filter(skipped.eq(false)) + .order_by(slot.asc()) + .limit(1) + .first::(conn) + .optional()?; + + let time_taken = timer.elapsed(); + debug!("Canonical slot requested: lowest_non_skipped, time taken: {time_taken:?})"); + Ok(result) +} + +/// Select 'slot' from the row of the `canonical_slots` table corresponding to the maximum value +/// of `slot`. +pub fn get_highest_canonical_slot(conn: &mut PgConn) -> Result, Error> { + use self::canonical_slots::dsl::*; + let timer = Instant::now(); + + let result = canonical_slots + .order_by(slot.desc()) + .limit(1) + .first::(conn) + .optional()?; + + let time_taken = timer.elapsed(); + debug!("Canonical slot requested: highest, time taken: {time_taken:?}"); + Ok(result) +} + +/// Select 'slot' from the row of the `canonical_slots` table corresponding to the maximum value +/// of `slot` and where `skipped == false`. +pub fn get_highest_non_skipped_canonical_slot( + conn: &mut PgConn, +) -> Result, Error> { + use self::canonical_slots::dsl::*; + let timer = Instant::now(); + + let result = canonical_slots + .filter(skipped.eq(false)) + .order_by(slot.desc()) + .limit(1) + .first::(conn) + .optional()?; + + let time_taken = timer.elapsed(); + debug!("Canonical slot requested: highest_non_skipped, time taken: {time_taken:?}"); + Ok(result) +} + +/// Select all rows of the `canonical_slots` table where `slot >= `start_slot && slot <= +/// `end_slot`. +pub fn get_canonical_slots_by_range( + conn: &mut PgConn, + start_slot: WatchSlot, + end_slot: WatchSlot, +) -> Result>, Error> { + use self::canonical_slots::dsl::*; + let timer = Instant::now(); + + let result = canonical_slots + .filter(slot.ge(start_slot)) + .filter(slot.le(end_slot)) + .load::(conn) + .optional()?; + + let time_taken = timer.elapsed(); + debug!( + "Canonical slots by range requested, start_slot: {}, end_slot: {}, time_taken: {:?}", + start_slot.as_u64(), + end_slot.as_u64(), + time_taken + ); + Ok(result) +} + +/// Selects `root` from all rows of the `canonical_slots` table which have `beacon_block == null` +/// and `skipped == false` +pub fn get_unknown_canonical_blocks(conn: &mut PgConn) -> Result, Error> { + use self::canonical_slots::dsl::*; + + let result = canonical_slots + .select(root) + .filter(beacon_block.is_null()) + .filter(skipped.eq(false)) + .order_by(slot.desc()) + .load::(conn)?; + + Ok(result) +} + +/// Selects the row from the `beacon_blocks` table where `slot` is minimum. +pub fn get_lowest_beacon_block(conn: &mut PgConn) -> Result, Error> { + use self::beacon_blocks::dsl::*; + let timer = Instant::now(); + + let result = beacon_blocks + .order_by(slot.asc()) + .limit(1) + .first::(conn) + .optional()?; + + let time_taken = timer.elapsed(); + debug!("Beacon block requested: lowest, time taken: {time_taken:?}"); + Ok(result) +} + +/// Selects the row from the `beacon_blocks` table where `slot` is maximum. +pub fn get_highest_beacon_block(conn: &mut PgConn) -> Result, Error> { + use self::beacon_blocks::dsl::*; + let timer = Instant::now(); + + let result = beacon_blocks + .order_by(slot.desc()) + .limit(1) + .first::(conn) + .optional()?; + + let time_taken = timer.elapsed(); + debug!("Beacon block requested: highest, time taken: {time_taken:?}"); + Ok(result) +} + +/// Selects a single row from the `beacon_blocks` table corresponding to a given `root_query`. +pub fn get_beacon_block_by_root( + conn: &mut PgConn, + root_query: WatchHash, +) -> Result, Error> { + use self::beacon_blocks::dsl::*; + let timer = Instant::now(); + + let result = beacon_blocks + .filter(root.eq(root_query)) + .first::(conn) + .optional()?; + let time_taken = timer.elapsed(); + debug!("Beacon block requested: {root_query}, time taken: {time_taken:?}"); + Ok(result) +} + +/// Selects a single row from the `beacon_blocks` table corresponding to a given `slot_query`. +pub fn get_beacon_block_by_slot( + conn: &mut PgConn, + slot_query: WatchSlot, +) -> Result, Error> { + use self::beacon_blocks::dsl::*; + let timer = Instant::now(); + + let result = beacon_blocks + .filter(slot.eq(slot_query)) + .first::(conn) + .optional()?; + let time_taken = timer.elapsed(); + debug!("Beacon block requested: {slot_query}, time taken: {time_taken:?}"); + Ok(result) +} + +/// Selects the row from the `beacon_blocks` table where `parent_root` equals the given `parent`. +/// This fetches the next block in the database. +/// +/// Will return `Ok(None)` if there are no matching blocks (e.g. the tip of the chain). +pub fn get_beacon_block_with_parent( + conn: &mut PgConn, + parent: WatchHash, +) -> Result, Error> { + use self::beacon_blocks::dsl::*; + let timer = Instant::now(); + + let result = beacon_blocks + .filter(parent_root.eq(parent)) + .first::(conn) + .optional()?; + + let time_taken = timer.elapsed(); + debug!("Next beacon block requested: {parent}, time taken: {time_taken:?}"); + Ok(result) +} + +/// Select all rows of the `beacon_blocks` table where `slot >= `start_slot && slot <= +/// `end_slot`. +pub fn get_beacon_blocks_by_range( + conn: &mut PgConn, + start_slot: WatchSlot, + end_slot: WatchSlot, +) -> Result>, Error> { + use self::beacon_blocks::dsl::*; + let timer = Instant::now(); + + let result = beacon_blocks + .filter(slot.ge(start_slot)) + .filter(slot.le(end_slot)) + .load::(conn) + .optional()?; + + let time_taken = timer.elapsed(); + debug!("Beacon blocks by range requested, start_slot: {start_slot}, end_slot: {end_slot}, time_taken: {time_taken:?}"); + Ok(result) +} + +/// Selects a single row of the `proposer_info` table corresponding to a given `root_query`. +pub fn get_proposer_info_by_root( + conn: &mut PgConn, + root_query: WatchHash, +) -> Result, Error> { + use self::beacon_blocks::dsl::{beacon_blocks, root}; + use self::proposer_info::dsl::*; + let timer = Instant::now(); + + let join = beacon_blocks.inner_join(proposer_info); + + let result = join + .select((slot, proposer_index, graffiti)) + .filter(root.eq(root_query)) + .first::(conn) + .optional()?; + + let time_taken = timer.elapsed(); + debug!("Proposer info requested for block: {root_query}, time taken: {time_taken:?}"); + Ok(result) +} + +/// Selects a single row of the `proposer_info` table corresponding to a given `slot_query`. +pub fn get_proposer_info_by_slot( + conn: &mut PgConn, + slot_query: WatchSlot, +) -> Result, Error> { + use self::proposer_info::dsl::*; + let timer = Instant::now(); + + let result = proposer_info + .filter(slot.eq(slot_query)) + .first::(conn) + .optional()?; + + let time_taken = timer.elapsed(); + debug!("Proposer info requested for slot: {slot_query}, time taken: {time_taken:?}"); + Ok(result) +} + +/// Selects multiple rows of the `proposer_info` table between `start_slot` and `end_slot`. +/// Selects a single row of the `proposer_info` table corresponding to a given `slot_query`. +#[allow(dead_code)] +pub fn get_proposer_info_by_range( + conn: &mut PgConn, + start_slot: WatchSlot, + end_slot: WatchSlot, +) -> Result>, Error> { + use self::proposer_info::dsl::*; + let timer = Instant::now(); + + let result = proposer_info + .filter(slot.ge(start_slot)) + .filter(slot.le(end_slot)) + .load::(conn) + .optional()?; + + let time_taken = timer.elapsed(); + debug!( + "Proposer info requested for range: {start_slot} to {end_slot}, time taken: {time_taken:?}" + ); + Ok(result) +} + +pub fn get_validators_latest_proposer_info( + conn: &mut PgConn, + indices_query: Vec, +) -> Result, Error> { + use self::proposer_info::dsl::*; + + let proposers = proposer_info + .filter(proposer_index.eq_any(indices_query)) + .load::(conn)?; + + let mut result = HashMap::new(); + for proposer in proposers { + result + .entry(proposer.proposer_index) + .or_insert_with(|| proposer.clone()); + let entry = result + .get_mut(&proposer.proposer_index) + .ok_or_else(|| Error::Other("An internal error occured".to_string()))?; + if proposer.slot > entry.slot { + entry.slot = proposer.slot + } + } + + Ok(result) +} + +/// Selects the max(`slot`) and `proposer_index` of each unique index in the +/// `proposer_info` table and returns them formatted as a `HashMap`. +/// Only returns rows which have `slot <= target_slot`. +/// +/// Ideally, this would return the full row, but I have not found a way to do that without using +/// a much more expensive SQL query. +pub fn get_all_validators_latest_proposer_info_at_slot( + conn: &mut PgConn, + target_slot: WatchSlot, +) -> Result, Error> { + use self::proposer_info::dsl::*; + + let latest_proposals: Vec<(i32, Option)> = proposer_info + .group_by(proposer_index) + .select((proposer_index, max(slot))) + .filter(slot.le(target_slot)) + .load::<(i32, Option)>(conn)?; + + let mut result = HashMap::new(); + + for proposal in latest_proposals { + if let Some(latest_slot) = proposal.1 { + result.insert(latest_slot, proposal.0); + } + } + + Ok(result) +} + +/// Selects a single row from the `validators` table corresponding to a given +/// `validator_index_query`. +pub fn get_validator_by_index( + conn: &mut PgConn, + validator_index_query: i32, +) -> Result, Error> { + use self::validators::dsl::*; + let timer = Instant::now(); + + let result = validators + .filter(index.eq(validator_index_query)) + .first::(conn) + .optional()?; + + let time_taken = timer.elapsed(); + debug!("Validator requested: {validator_index_query}, time taken: {time_taken:?}"); + Ok(result) +} + +/// Selects a single row from the `validators` table corresponding to a given +/// `public_key_query`. +pub fn get_validator_by_public_key( + conn: &mut PgConn, + public_key_query: WatchPK, +) -> Result, Error> { + use self::validators::dsl::*; + let timer = Instant::now(); + + let result = validators + .filter(public_key.eq(public_key_query)) + .first::(conn) + .optional()?; + + let time_taken = timer.elapsed(); + debug!("Validator requested: {public_key_query}, time taken: {time_taken:?}"); + Ok(result) +} + +/// Selects all rows from the `validators` table which have an `index` contained in +/// the `indices_query`. +#[allow(dead_code)] +pub fn get_validators_by_indices( + conn: &mut PgConn, + indices_query: Vec, +) -> Result, Error> { + use self::validators::dsl::*; + let timer = Instant::now(); + + let query_len = indices_query.len(); + let result = validators + .filter(index.eq_any(indices_query)) + .load::(conn)?; + + let time_taken = timer.elapsed(); + debug!("{query_len} validators requested, time taken: {time_taken:?}"); + Ok(result) +} + +// Selects all rows from the `validators` table. +pub fn get_all_validators(conn: &mut PgConn) -> Result, Error> { + use self::validators::dsl::*; + let timer = Instant::now(); + + let result = validators.load::(conn)?; + + let time_taken = timer.elapsed(); + debug!("All validators requested, time taken: {time_taken:?}"); + Ok(result) +} + +/// Counts the number of rows in the `validators` table. +#[allow(dead_code)] +pub fn count_validators(conn: &mut PgConn) -> Result { + use self::validators::dsl::*; + + validators.count().get_result(conn).map_err(Error::Database) +} + +/// Counts the number of rows in the `validators` table where +/// `activation_epoch <= target_slot.epoch()`. +pub fn count_validators_activated_before_slot( + conn: &mut PgConn, + target_slot: WatchSlot, + slots_per_epoch: u64, +) -> Result { + use self::validators::dsl::*; + + let target_epoch = target_slot.epoch(slots_per_epoch); + + validators + .count() + .filter(activation_epoch.le(target_epoch.as_u64() as i32)) + .get_result(conn) + .map_err(Error::Database) +} + +/// +/// DELETE statements. +/// + +/// Deletes all rows of the `canonical_slots` table which have `slot` greater than `slot_query`. +/// +/// Due to the ON DELETE CASCADE clause present in the database migration SQL, deleting rows from +/// `canonical_slots` will delete all corresponding rows in `beacon_blocks, `block_rewards`, +/// `block_packing` and `proposer_info`. +pub fn delete_canonical_slots_above( + conn: &mut PgConn, + slot_query: WatchSlot, +) -> Result { + use self::canonical_slots::dsl::*; + + let result = diesel::delete(canonical_slots) + .filter(slot.gt(slot_query)) + .execute(conn)?; + + debug!("Deleted canonical slots above {slot_query}: {result} rows deleted"); + Ok(result) +} + +/// Deletes all rows of the `suboptimal_attestations` table which have `epoch_start_slot` greater +/// than `epoch_start_slot_query`. +pub fn delete_suboptimal_attestations_above( + conn: &mut PgConn, + epoch_start_slot_query: WatchSlot, +) -> Result { + use self::suboptimal_attestations::dsl::*; + + let result = diesel::delete(suboptimal_attestations) + .filter(epoch_start_slot.gt(epoch_start_slot_query)) + .execute(conn)?; + + debug!("Deleted attestations above: {epoch_start_slot_query}, rows deleted: {result}"); + Ok(result) +} diff --git a/watch/src/database/models.rs b/watch/src/database/models.rs new file mode 100644 index 0000000000..f42444d661 --- /dev/null +++ b/watch/src/database/models.rs @@ -0,0 +1,67 @@ +use crate::database::{ + schema::{beacon_blocks, canonical_slots, proposer_info, validators}, + watch_types::{WatchHash, WatchPK, WatchSlot}, +}; +use diesel::{Insertable, Queryable}; +use serde::{Deserialize, Serialize}; +use std::hash::{Hash, Hasher}; + +pub type WatchEpoch = i32; + +#[derive(Debug, Queryable, Insertable, Serialize, Deserialize)] +#[diesel(table_name = canonical_slots)] +pub struct WatchCanonicalSlot { + pub slot: WatchSlot, + pub root: WatchHash, + pub skipped: bool, + pub beacon_block: Option, +} + +#[derive(Debug, Queryable, Insertable, Serialize, Deserialize)] +#[diesel(table_name = beacon_blocks)] +pub struct WatchBeaconBlock { + pub slot: WatchSlot, + pub root: WatchHash, + pub parent_root: WatchHash, + pub attestation_count: i32, + pub transaction_count: Option, + pub withdrawal_count: Option, +} + +#[derive(Clone, Debug, Queryable, Insertable, Serialize, Deserialize)] +#[diesel(table_name = validators)] +pub struct WatchValidator { + pub index: i32, + pub public_key: WatchPK, + pub status: String, + pub activation_epoch: Option, + pub exit_epoch: Option, +} + +// Implement a minimal version of `Hash` and `Eq` so that we know if a validator status has changed. +impl Hash for WatchValidator { + fn hash(&self, state: &mut H) { + self.index.hash(state); + self.status.hash(state); + self.activation_epoch.hash(state); + self.exit_epoch.hash(state); + } +} + +impl PartialEq for WatchValidator { + fn eq(&self, other: &Self) -> bool { + self.index == other.index + && self.status == other.status + && self.activation_epoch == other.activation_epoch + && self.exit_epoch == other.exit_epoch + } +} +impl Eq for WatchValidator {} + +#[derive(Clone, Debug, Queryable, Insertable, Serialize, Deserialize)] +#[diesel(table_name = proposer_info)] +pub struct WatchProposerInfo { + pub slot: WatchSlot, + pub proposer_index: i32, + pub graffiti: String, +} diff --git a/watch/src/database/schema.rs b/watch/src/database/schema.rs new file mode 100644 index 0000000000..32f22d506d --- /dev/null +++ b/watch/src/database/schema.rs @@ -0,0 +1,102 @@ +// @generated automatically by Diesel CLI. + +diesel::table! { + active_config (id) { + id -> Int4, + config_name -> Text, + slots_per_epoch -> Int4, + } +} + +diesel::table! { + beacon_blocks (slot) { + slot -> Int4, + root -> Bytea, + parent_root -> Bytea, + attestation_count -> Int4, + transaction_count -> Nullable, + withdrawal_count -> Nullable, + } +} + +diesel::table! { + block_packing (slot) { + slot -> Int4, + available -> Int4, + included -> Int4, + prior_skip_slots -> Int4, + } +} + +diesel::table! { + block_rewards (slot) { + slot -> Int4, + total -> Int4, + attestation_reward -> Int4, + sync_committee_reward -> Int4, + } +} + +diesel::table! { + blockprint (slot) { + slot -> Int4, + best_guess -> Text, + } +} + +diesel::table! { + canonical_slots (slot) { + slot -> Int4, + root -> Bytea, + skipped -> Bool, + beacon_block -> Nullable, + } +} + +diesel::table! { + proposer_info (slot) { + slot -> Int4, + proposer_index -> Int4, + graffiti -> Text, + } +} + +diesel::table! { + suboptimal_attestations (epoch_start_slot, index) { + epoch_start_slot -> Int4, + index -> Int4, + source -> Bool, + head -> Bool, + target -> Bool, + } +} + +diesel::table! { + validators (index) { + index -> Int4, + public_key -> Bytea, + status -> Text, + activation_epoch -> Nullable, + exit_epoch -> Nullable, + } +} + +diesel::joinable!(block_packing -> beacon_blocks (slot)); +diesel::joinable!(block_rewards -> beacon_blocks (slot)); +diesel::joinable!(blockprint -> beacon_blocks (slot)); +diesel::joinable!(proposer_info -> beacon_blocks (slot)); +diesel::joinable!(proposer_info -> validators (proposer_index)); +diesel::joinable!(suboptimal_attestations -> canonical_slots (epoch_start_slot)); +diesel::joinable!(suboptimal_attestations -> validators (index)); + +diesel::allow_tables_to_appear_in_same_query!( + active_config, + beacon_blocks, + block_packing, + block_rewards, + blockprint, + canonical_slots, + proposer_info, + suboptimal_attestations, + validators, +); diff --git a/watch/src/database/utils.rs b/watch/src/database/utils.rs new file mode 100644 index 0000000000..7e450f0cee --- /dev/null +++ b/watch/src/database/utils.rs @@ -0,0 +1,29 @@ +#![allow(dead_code)] +use crate::database::config::Config; +use diesel::pg::PgConnection; +use diesel::prelude::*; +use diesel_migrations::{FileBasedMigrations, MigrationHarness}; + +/// Sets `config.dbname` to `config.default_dbname` and returns `(new_config, old_dbname)`. +/// +/// This is useful for creating or dropping databases, since these actions must be done by +/// logging into another database. +pub fn get_config_using_default_db(config: &Config) -> (Config, String) { + let mut config = config.clone(); + let new_dbname = std::mem::replace(&mut config.dbname, config.default_dbname.clone()); + (config, new_dbname) +} + +/// Runs the set of migrations as detected in the local directory. +/// Equivalent to `diesel migration run`. +/// +/// Contains `unwrap`s so is only suitable for test code. +/// TODO(mac) refactor to return Result +pub fn run_migrations(config: &Config) -> PgConnection { + let database_url = config.clone().build_database_url(); + let mut conn = PgConnection::establish(&database_url).unwrap(); + let migrations = FileBasedMigrations::find_migrations_directory().unwrap(); + conn.run_pending_migrations(migrations).unwrap(); + conn.begin_test_transaction().unwrap(); + conn +} diff --git a/watch/src/database/watch_types.rs b/watch/src/database/watch_types.rs new file mode 100644 index 0000000000..0b3ba2c304 --- /dev/null +++ b/watch/src/database/watch_types.rs @@ -0,0 +1,119 @@ +use crate::database::error::Error; +use diesel::{ + sql_types::{Binary, Integer}, + AsExpression, FromSqlRow, +}; +use serde::{Deserialize, Serialize}; +use std::fmt; +use std::str::FromStr; +use types::{Epoch, Hash256, PublicKeyBytes, Slot}; +#[derive( + Clone, + Copy, + Debug, + AsExpression, + FromSqlRow, + Deserialize, + Serialize, + Hash, + PartialEq, + Eq, + PartialOrd, + Ord, +)] +#[diesel(sql_type = Integer)] +pub struct WatchSlot(Slot); + +impl fmt::Display for WatchSlot { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + write!(f, "{}", self.0) + } +} + +impl WatchSlot { + pub fn new(slot: u64) -> Self { + Self(Slot::new(slot)) + } + + pub fn from_slot(slot: Slot) -> Self { + Self(slot) + } + + pub fn as_slot(self) -> Slot { + self.0 + } + + pub fn as_u64(self) -> u64 { + self.0.as_u64() + } + + pub fn epoch(self, slots_per_epoch: u64) -> Epoch { + self.as_slot().epoch(slots_per_epoch) + } +} + +#[derive(Clone, Copy, Debug, AsExpression, FromSqlRow, Deserialize, Serialize)] +#[diesel(sql_type = Binary)] +pub struct WatchHash(Hash256); + +impl fmt::Display for WatchHash { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + write!(f, "{:?}", self.0) + } +} + +impl WatchHash { + pub fn as_hash(&self) -> Hash256 { + self.0 + } + + pub fn from_hash(hash: Hash256) -> Self { + WatchHash(hash) + } + + pub fn as_bytes(&self) -> &[u8] { + self.0.as_bytes() + } + + pub fn from_bytes(src: &[u8]) -> Result { + if src.len() == 32 { + Ok(WatchHash(Hash256::from_slice(src))) + } else { + Err(Error::InvalidRoot) + } + } +} + +#[derive(Clone, Copy, Debug, Eq, PartialEq, AsExpression, FromSqlRow, Serialize, Deserialize)] +#[diesel(sql_type = Binary)] +pub struct WatchPK(PublicKeyBytes); + +impl fmt::Display for WatchPK { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + write!(f, "{:?}", self.0) + } +} + +impl WatchPK { + pub fn as_bytes(&self) -> &[u8] { + self.0.as_serialized() + } + + pub fn from_bytes(src: &[u8]) -> Result { + Ok(WatchPK(PublicKeyBytes::deserialize(src)?)) + } + + pub fn from_pubkey(key: PublicKeyBytes) -> Self { + WatchPK(key) + } +} + +impl FromStr for WatchPK { + type Err = String; + + fn from_str(s: &str) -> Result { + Ok(WatchPK( + PublicKeyBytes::from_str(s).map_err(|e| format!("Cannot be parsed: {}", e))?, + )) + } +} diff --git a/watch/src/lib.rs b/watch/src/lib.rs new file mode 100644 index 0000000000..664c945165 --- /dev/null +++ b/watch/src/lib.rs @@ -0,0 +1,12 @@ +#![cfg(unix)] +pub mod block_packing; +pub mod block_rewards; +pub mod blockprint; +pub mod cli; +pub mod client; +pub mod config; +pub mod database; +pub mod logger; +pub mod server; +pub mod suboptimal_attestations; +pub mod updater; diff --git a/watch/src/logger.rs b/watch/src/logger.rs new file mode 100644 index 0000000000..49310b42aa --- /dev/null +++ b/watch/src/logger.rs @@ -0,0 +1,24 @@ +use env_logger::Builder; +use log::{info, LevelFilter}; +use std::process; + +pub fn init_logger(log_level: &str) { + let log_level = match log_level.to_lowercase().as_str() { + "trace" => LevelFilter::Trace, + "debug" => LevelFilter::Debug, + "info" => LevelFilter::Info, + "warn" => LevelFilter::Warn, + "error" => LevelFilter::Error, + _ => { + eprintln!("Unsupported log level"); + process::exit(1) + } + }; + + let mut builder = Builder::new(); + builder.filter(Some("watch"), log_level); + + builder.init(); + + info!("Logger initialized with log-level: {log_level}"); +} diff --git a/watch/src/main.rs b/watch/src/main.rs new file mode 100644 index 0000000000..f971747da4 --- /dev/null +++ b/watch/src/main.rs @@ -0,0 +1,41 @@ +#[cfg(unix)] +use std::process; + +#[cfg(unix)] +mod block_packing; +#[cfg(unix)] +mod block_rewards; +#[cfg(unix)] +mod blockprint; +#[cfg(unix)] +mod cli; +#[cfg(unix)] +mod config; +#[cfg(unix)] +mod database; +#[cfg(unix)] +mod logger; +#[cfg(unix)] +mod server; +#[cfg(unix)] +mod suboptimal_attestations; +#[cfg(unix)] +mod updater; + +#[cfg(unix)] +#[tokio::main] +async fn main() { + match cli::run().await { + Ok(()) => process::exit(0), + Err(e) => { + eprintln!("Command failed with: {}", e); + drop(e); + process::exit(1) + } + } +} + +#[cfg(windows)] +fn main() { + eprintln!("Windows is not supported. Exiting."); +} diff --git a/watch/src/server/config.rs b/watch/src/server/config.rs new file mode 100644 index 0000000000..a7d38e706f --- /dev/null +++ b/watch/src/server/config.rs @@ -0,0 +1,28 @@ +use serde::{Deserialize, Serialize}; +use std::net::IpAddr; + +pub const LISTEN_ADDR: &str = "127.0.0.1"; + +pub const fn listen_port() -> u16 { + 5059 +} +fn listen_addr() -> IpAddr { + LISTEN_ADDR.parse().expect("Server address is not valid") +} + +#[derive(Debug, Clone, Serialize, Deserialize)] +pub struct Config { + #[serde(default = "listen_addr")] + pub listen_addr: IpAddr, + #[serde(default = "listen_port")] + pub listen_port: u16, +} + +impl Default for Config { + fn default() -> Self { + Self { + listen_addr: listen_addr(), + listen_port: listen_port(), + } + } +} diff --git a/watch/src/server/error.rs b/watch/src/server/error.rs new file mode 100644 index 0000000000..d1542f7841 --- /dev/null +++ b/watch/src/server/error.rs @@ -0,0 +1,50 @@ +use crate::database::Error as DbError; +use axum::Error as AxumError; +use axum::{http::StatusCode, response::IntoResponse, Json}; +use hyper::Error as HyperError; +use serde_json::json; + +#[derive(Debug)] +pub enum Error { + Axum(AxumError), + Hyper(HyperError), + Database(DbError), + BadRequest, + NotFound, + Other(String), +} + +impl IntoResponse for Error { + fn into_response(self) -> axum::response::Response { + let (status, error_message) = match self { + Self::BadRequest => (StatusCode::BAD_REQUEST, "Bad Request"), + Self::NotFound => (StatusCode::NOT_FOUND, "Not Found"), + _ => (StatusCode::INTERNAL_SERVER_ERROR, "Internal Server Error"), + }; + (status, Json(json!({ "error": error_message }))).into_response() + } +} + +impl From for Error { + fn from(e: HyperError) -> Self { + Error::Hyper(e) + } +} + +impl From for Error { + fn from(e: AxumError) -> Self { + Error::Axum(e) + } +} + +impl From for Error { + fn from(e: DbError) -> Self { + Error::Database(e) + } +} + +impl From for Error { + fn from(e: String) -> Self { + Error::Other(e) + } +} diff --git a/watch/src/server/handler.rs b/watch/src/server/handler.rs new file mode 100644 index 0000000000..6777026867 --- /dev/null +++ b/watch/src/server/handler.rs @@ -0,0 +1,266 @@ +use crate::database::{ + self, Error as DbError, PgPool, WatchBeaconBlock, WatchCanonicalSlot, WatchHash, WatchPK, + WatchProposerInfo, WatchSlot, WatchValidator, +}; +use crate::server::Error; +use axum::{ + extract::{Path, Query}, + Extension, Json, +}; +use eth2::types::BlockId; +use std::collections::HashMap; +use std::str::FromStr; + +pub async fn get_slot( + Path(slot): Path, + Extension(pool): Extension, +) -> Result>, Error> { + let mut conn = database::get_connection(&pool).map_err(Error::Database)?; + Ok(Json(database::get_canonical_slot( + &mut conn, + WatchSlot::new(slot), + )?)) +} + +pub async fn get_slot_lowest( + Extension(pool): Extension, +) -> Result>, Error> { + let mut conn = database::get_connection(&pool).map_err(Error::Database)?; + Ok(Json(database::get_lowest_canonical_slot(&mut conn)?)) +} + +pub async fn get_slot_highest( + Extension(pool): Extension, +) -> Result>, Error> { + let mut conn = database::get_connection(&pool).map_err(Error::Database)?; + Ok(Json(database::get_highest_canonical_slot(&mut conn)?)) +} + +pub async fn get_slots_by_range( + Query(query): Query>, + Extension(pool): Extension, +) -> Result>>, Error> { + let mut conn = database::get_connection(&pool).map_err(Error::Database)?; + if let Some(start_slot) = query.get("start_slot") { + if let Some(end_slot) = query.get("end_slot") { + if start_slot > end_slot { + Err(Error::BadRequest) + } else { + Ok(Json(database::get_canonical_slots_by_range( + &mut conn, + WatchSlot::new(*start_slot), + WatchSlot::new(*end_slot), + )?)) + } + } else { + Err(Error::BadRequest) + } + } else { + Err(Error::BadRequest) + } +} + +pub async fn get_block( + Path(block_query): Path, + Extension(pool): Extension, +) -> Result>, Error> { + let mut conn = database::get_connection(&pool).map_err(Error::Database)?; + let block_id: BlockId = BlockId::from_str(&block_query).map_err(|_| Error::BadRequest)?; + match block_id { + BlockId::Slot(slot) => Ok(Json(database::get_beacon_block_by_slot( + &mut conn, + WatchSlot::from_slot(slot), + )?)), + BlockId::Root(root) => Ok(Json(database::get_beacon_block_by_root( + &mut conn, + WatchHash::from_hash(root), + )?)), + _ => Err(Error::BadRequest), + } +} + +pub async fn get_block_lowest( + Extension(pool): Extension, +) -> Result>, Error> { + let mut conn = database::get_connection(&pool).map_err(Error::Database)?; + Ok(Json(database::get_lowest_beacon_block(&mut conn)?)) +} + +pub async fn get_block_highest( + Extension(pool): Extension, +) -> Result>, Error> { + let mut conn = database::get_connection(&pool).map_err(Error::Database)?; + Ok(Json(database::get_highest_beacon_block(&mut conn)?)) +} + +pub async fn get_block_previous( + Path(block_query): Path, + Extension(pool): Extension, +) -> Result>, Error> { + let mut conn = database::get_connection(&pool).map_err(Error::Database)?; + match BlockId::from_str(&block_query).map_err(|_| Error::BadRequest)? { + BlockId::Root(root) => { + if let Some(block) = + database::get_beacon_block_by_root(&mut conn, WatchHash::from_hash(root))? + .map(|block| block.parent_root) + { + Ok(Json(database::get_beacon_block_by_root(&mut conn, block)?)) + } else { + Err(Error::NotFound) + } + } + BlockId::Slot(slot) => Ok(Json(database::get_beacon_block_by_slot( + &mut conn, + WatchSlot::new(slot.as_u64().checked_sub(1_u64).ok_or(Error::NotFound)?), + )?)), + _ => Err(Error::BadRequest), + } +} + +pub async fn get_block_next( + Path(block_query): Path, + Extension(pool): Extension, +) -> Result>, Error> { + let mut conn = database::get_connection(&pool).map_err(Error::Database)?; + match BlockId::from_str(&block_query).map_err(|_| Error::BadRequest)? { + BlockId::Root(root) => Ok(Json(database::get_beacon_block_with_parent( + &mut conn, + WatchHash::from_hash(root), + )?)), + BlockId::Slot(slot) => Ok(Json(database::get_beacon_block_by_slot( + &mut conn, + WatchSlot::from_slot(slot + 1_u64), + )?)), + _ => Err(Error::BadRequest), + } +} + +pub async fn get_blocks_by_range( + Query(query): Query>, + Extension(pool): Extension, +) -> Result>>, Error> { + let mut conn = database::get_connection(&pool).map_err(Error::Database)?; + if let Some(start_slot) = query.get("start_slot") { + if let Some(end_slot) = query.get("end_slot") { + if start_slot > end_slot { + Err(Error::BadRequest) + } else { + Ok(Json(database::get_beacon_blocks_by_range( + &mut conn, + WatchSlot::new(*start_slot), + WatchSlot::new(*end_slot), + )?)) + } + } else { + Err(Error::BadRequest) + } + } else { + Err(Error::BadRequest) + } +} + +pub async fn get_block_proposer( + Path(block_query): Path, + Extension(pool): Extension, +) -> Result>, Error> { + let mut conn = database::get_connection(&pool).map_err(Error::Database)?; + match BlockId::from_str(&block_query).map_err(|_| Error::BadRequest)? { + BlockId::Root(root) => Ok(Json(database::get_proposer_info_by_root( + &mut conn, + WatchHash::from_hash(root), + )?)), + BlockId::Slot(slot) => Ok(Json(database::get_proposer_info_by_slot( + &mut conn, + WatchSlot::from_slot(slot), + )?)), + _ => Err(Error::BadRequest), + } +} + +pub async fn get_validator( + Path(validator_query): Path, + Extension(pool): Extension, +) -> Result>, Error> { + let mut conn = database::get_connection(&pool).map_err(Error::Database)?; + if validator_query.starts_with("0x") { + let pubkey = WatchPK::from_str(&validator_query).map_err(|_| Error::BadRequest)?; + Ok(Json(database::get_validator_by_public_key( + &mut conn, pubkey, + )?)) + } else { + let index = i32::from_str(&validator_query).map_err(|_| Error::BadRequest)?; + Ok(Json(database::get_validator_by_index(&mut conn, index)?)) + } +} + +pub async fn get_all_validators( + Extension(pool): Extension, +) -> Result>, Error> { + let mut conn = database::get_connection(&pool).map_err(Error::Database)?; + Ok(Json(database::get_all_validators(&mut conn)?)) +} + +pub async fn get_validator_latest_proposal( + Path(validator_query): Path, + Extension(pool): Extension, +) -> Result>, Error> { + let mut conn = database::get_connection(&pool).map_err(Error::Database)?; + if validator_query.starts_with("0x") { + let pubkey = WatchPK::from_str(&validator_query).map_err(|_| Error::BadRequest)?; + let validator = + database::get_validator_by_public_key(&mut conn, pubkey)?.ok_or(Error::NotFound)?; + Ok(Json(database::get_validators_latest_proposer_info( + &mut conn, + vec![validator.index], + )?)) + } else { + let index = i32::from_str(&validator_query).map_err(|_| Error::BadRequest)?; + Ok(Json(database::get_validators_latest_proposer_info( + &mut conn, + vec![index], + )?)) + } +} + +pub async fn get_client_breakdown( + Extension(pool): Extension, + Extension(slots_per_epoch): Extension, +) -> Result>, Error> { + let mut conn = database::get_connection(&pool).map_err(Error::Database)?; + + if let Some(target_slot) = database::get_highest_canonical_slot(&mut conn)? { + Ok(Json(database::get_validators_clients_at_slot( + &mut conn, + target_slot.slot, + slots_per_epoch, + )?)) + } else { + Err(Error::Database(DbError::Other( + "No slots found in database.".to_string(), + ))) + } +} + +pub async fn get_client_breakdown_percentages( + Extension(pool): Extension, + Extension(slots_per_epoch): Extension, +) -> Result>, Error> { + let mut conn = database::get_connection(&pool).map_err(Error::Database)?; + + let mut result = HashMap::new(); + if let Some(target_slot) = database::get_highest_canonical_slot(&mut conn)? { + let total = database::count_validators_activated_before_slot( + &mut conn, + target_slot.slot, + slots_per_epoch, + )?; + let clients = + database::get_validators_clients_at_slot(&mut conn, target_slot.slot, slots_per_epoch)?; + for (client, number) in clients.iter() { + let percentage: f64 = *number as f64 / total as f64 * 100.0; + result.insert(client.to_string(), percentage); + } + } + + Ok(Json(result)) +} diff --git a/watch/src/server/mod.rs b/watch/src/server/mod.rs new file mode 100644 index 0000000000..09d5ec6aac --- /dev/null +++ b/watch/src/server/mod.rs @@ -0,0 +1,134 @@ +use crate::block_packing::block_packing_routes; +use crate::block_rewards::block_rewards_routes; +use crate::blockprint::blockprint_routes; +use crate::config::Config as FullConfig; +use crate::database::{self, PgPool}; +use crate::suboptimal_attestations::{attestation_routes, blockprint_attestation_routes}; +use axum::{ + handler::Handler, + http::{StatusCode, Uri}, + routing::get, + Extension, Json, Router, +}; +use eth2::types::ErrorMessage; +use log::info; +use std::future::Future; +use std::net::SocketAddr; +use tokio::sync::oneshot; + +pub use config::Config; +pub use error::Error; + +mod config; +mod error; +mod handler; + +pub async fn serve(config: FullConfig, shutdown: oneshot::Receiver<()>) -> Result<(), Error> { + let db = database::build_connection_pool(&config.database)?; + let (_, slots_per_epoch) = database::get_active_config(&mut database::get_connection(&db)?)? + .ok_or_else(|| { + Error::Other( + "Database not found. Please run the updater prior to starting the server" + .to_string(), + ) + })?; + + let server = start_server(&config, slots_per_epoch as u64, db, async { + let _ = shutdown.await; + })?; + + server.await?; + + Ok(()) +} + +/// Creates a server that will serve requests using information from `config`. +/// +/// The server will create its own connection pool to serve connections to the database. +/// This is separate to the connection pool that is used for the `updater`. +/// +/// The server will shut down gracefully when the `shutdown` future resolves. +/// +/// ## Returns +/// +/// This function will bind the server to the address specified in the config and then return a +/// Future representing the actual server that will need to be awaited. +/// +/// ## Errors +/// +/// Returns an error if the server is unable to bind or there is another error during +/// configuration. +pub fn start_server( + config: &FullConfig, + slots_per_epoch: u64, + pool: PgPool, + shutdown: impl Future + Send + Sync + 'static, +) -> Result> + 'static, Error> { + let mut routes = Router::new() + .route("/v1/slots", get(handler::get_slots_by_range)) + .route("/v1/slots/:slot", get(handler::get_slot)) + .route("/v1/slots/lowest", get(handler::get_slot_lowest)) + .route("/v1/slots/highest", get(handler::get_slot_highest)) + .route("/v1/slots/:slot/block", get(handler::get_block)) + .route("/v1/blocks", get(handler::get_blocks_by_range)) + .route("/v1/blocks/:block", get(handler::get_block)) + .route("/v1/blocks/lowest", get(handler::get_block_lowest)) + .route("/v1/blocks/highest", get(handler::get_block_highest)) + .route( + "/v1/blocks/:block/previous", + get(handler::get_block_previous), + ) + .route("/v1/blocks/:block/next", get(handler::get_block_next)) + .route( + "/v1/blocks/:block/proposer", + get(handler::get_block_proposer), + ) + .route("/v1/validators/:validator", get(handler::get_validator)) + .route("/v1/validators/all", get(handler::get_all_validators)) + .route( + "/v1/validators/:validator/latest_proposal", + get(handler::get_validator_latest_proposal), + ) + .route("/v1/clients", get(handler::get_client_breakdown)) + .route( + "/v1/clients/percentages", + get(handler::get_client_breakdown_percentages), + ) + .merge(attestation_routes()) + .merge(blockprint_routes()) + .merge(block_packing_routes()) + .merge(block_rewards_routes()); + + if config.blockprint.enabled && config.updater.attestations { + routes = routes.merge(blockprint_attestation_routes()) + } + + let app = routes + .fallback(route_not_found.into_service()) + .layer(Extension(pool)) + .layer(Extension(slots_per_epoch)); + + let addr = SocketAddr::new(config.server.listen_addr, config.server.listen_port); + + let server = axum::Server::try_bind(&addr)?.serve(app.into_make_service()); + + let server = server.with_graceful_shutdown(async { + shutdown.await; + }); + + info!("HTTP server listening on {}", addr); + + Ok(server) +} + +// The default route indicating that no available routes matched the request. +async fn route_not_found(uri: Uri) -> (StatusCode, Json) { + ( + StatusCode::METHOD_NOT_ALLOWED, + Json(ErrorMessage { + code: StatusCode::METHOD_NOT_ALLOWED.as_u16(), + message: format!("No route for {uri}"), + stacktraces: vec![], + }), + ) +} diff --git a/watch/src/suboptimal_attestations/database.rs b/watch/src/suboptimal_attestations/database.rs new file mode 100644 index 0000000000..cb947d250a --- /dev/null +++ b/watch/src/suboptimal_attestations/database.rs @@ -0,0 +1,224 @@ +use crate::database::{ + schema::{suboptimal_attestations, validators}, + watch_types::{WatchPK, WatchSlot}, + Error, PgConn, MAX_SIZE_BATCH_INSERT, +}; + +use diesel::prelude::*; +use diesel::{Insertable, Queryable}; +use log::debug; +use serde::{Deserialize, Serialize}; +use std::time::Instant; + +use types::Epoch; + +#[derive(Clone, Copy, Debug, Serialize, Deserialize)] +pub struct WatchAttestation { + pub index: i32, + pub epoch: Epoch, + pub source: bool, + pub head: bool, + pub target: bool, +} + +impl WatchAttestation { + pub fn optimal(index: i32, epoch: Epoch) -> WatchAttestation { + WatchAttestation { + index, + epoch, + source: true, + head: true, + target: true, + } + } +} + +#[derive(Debug, Queryable, Insertable, Serialize, Deserialize)] +#[diesel(table_name = suboptimal_attestations)] +pub struct WatchSuboptimalAttestation { + pub epoch_start_slot: WatchSlot, + pub index: i32, + pub source: bool, + pub head: bool, + pub target: bool, +} + +impl WatchSuboptimalAttestation { + pub fn to_attestation(&self, slots_per_epoch: u64) -> WatchAttestation { + WatchAttestation { + index: self.index, + epoch: self.epoch_start_slot.epoch(slots_per_epoch), + source: self.source, + head: self.head, + target: self.target, + } + } +} + +/// Insert a batch of values into the `suboptimal_attestations` table +/// +/// Since attestations technically occur per-slot but we only store them per-epoch (via its +/// `start_slot`) so if any slot in the epoch changes, we need to resync the whole epoch as a +/// 'suboptimal' attestation could now be 'optimal'. +/// +/// This is handled in the update code, where in the case of a re-org, the affected epoch is +/// deleted completely. +/// +/// On a conflict, it will do nothing. +pub fn insert_batch_suboptimal_attestations( + conn: &mut PgConn, + attestations: Vec, +) -> Result<(), Error> { + use self::suboptimal_attestations::dsl::*; + + let mut count = 0; + let timer = Instant::now(); + + for chunk in attestations.chunks(MAX_SIZE_BATCH_INSERT) { + count += diesel::insert_into(suboptimal_attestations) + .values(chunk) + .on_conflict_do_nothing() + .execute(conn)?; + } + + let time_taken = timer.elapsed(); + debug!("Attestations inserted, count: {count}, time taken: {time_taken:?}"); + Ok(()) +} + +/// Selects the row from the `suboptimal_attestations` table where `epoch_start_slot` is minimum. +pub fn get_lowest_attestation( + conn: &mut PgConn, +) -> Result, Error> { + use self::suboptimal_attestations::dsl::*; + + Ok(suboptimal_attestations + .order_by(epoch_start_slot.asc()) + .limit(1) + .first::(conn) + .optional()?) +} + +/// Selects the row from the `suboptimal_attestations` table where `epoch_start_slot` is maximum. +pub fn get_highest_attestation( + conn: &mut PgConn, +) -> Result, Error> { + use self::suboptimal_attestations::dsl::*; + + Ok(suboptimal_attestations + .order_by(epoch_start_slot.desc()) + .limit(1) + .first::(conn) + .optional()?) +} + +/// Selects a single row from the `suboptimal_attestations` table corresponding to a given +/// `index_query` and `epoch_query`. +pub fn get_attestation_by_index( + conn: &mut PgConn, + index_query: i32, + epoch_query: Epoch, + slots_per_epoch: u64, +) -> Result, Error> { + use self::suboptimal_attestations::dsl::*; + let timer = Instant::now(); + + let result = suboptimal_attestations + .filter(epoch_start_slot.eq(WatchSlot::from_slot( + epoch_query.start_slot(slots_per_epoch), + ))) + .filter(index.eq(index_query)) + .first::(conn) + .optional()?; + + let time_taken = timer.elapsed(); + debug!("Attestation requested for validator: {index_query}, epoch: {epoch_query}, time taken: {time_taken:?}"); + Ok(result) +} + +/// Selects a single row from the `suboptimal_attestations` table corresponding +/// to a given `pubkey_query` and `epoch_query`. +#[allow(dead_code)] +pub fn get_attestation_by_pubkey( + conn: &mut PgConn, + pubkey_query: WatchPK, + epoch_query: Epoch, + slots_per_epoch: u64, +) -> Result, Error> { + use self::suboptimal_attestations::dsl::*; + use self::validators::dsl::{public_key, validators}; + let timer = Instant::now(); + + let join = validators.inner_join(suboptimal_attestations); + + let result = join + .select((epoch_start_slot, index, source, head, target)) + .filter(epoch_start_slot.eq(WatchSlot::from_slot( + epoch_query.start_slot(slots_per_epoch), + ))) + .filter(public_key.eq(pubkey_query)) + .first::(conn) + .optional()?; + + let time_taken = timer.elapsed(); + debug!("Attestation requested for validator: {pubkey_query}, epoch: {epoch_query}, time taken: {time_taken:?}"); + Ok(result) +} + +/// Selects `index` for all validators in the suboptimal_attestations table +/// that have `source == false` for the corresponding `epoch_start_slot_query`. +pub fn get_validators_missed_source( + conn: &mut PgConn, + epoch_start_slot_query: WatchSlot, +) -> Result, Error> { + use self::suboptimal_attestations::dsl::*; + + Ok(suboptimal_attestations + .select(index) + .filter(epoch_start_slot.eq(epoch_start_slot_query)) + .filter(source.eq(false)) + .load::(conn)?) +} + +/// Selects `index` for all validators in the suboptimal_attestations table +/// that have `head == false` for the corresponding `epoch_start_slot_query`. +pub fn get_validators_missed_head( + conn: &mut PgConn, + epoch_start_slot_query: WatchSlot, +) -> Result, Error> { + use self::suboptimal_attestations::dsl::*; + + Ok(suboptimal_attestations + .select(index) + .filter(epoch_start_slot.eq(epoch_start_slot_query)) + .filter(head.eq(false)) + .load::(conn)?) +} + +/// Selects `index` for all validators in the suboptimal_attestations table +/// that have `target == false` for the corresponding `epoch_start_slot_query`. +pub fn get_validators_missed_target( + conn: &mut PgConn, + epoch_start_slot_query: WatchSlot, +) -> Result, Error> { + use self::suboptimal_attestations::dsl::*; + + Ok(suboptimal_attestations + .select(index) + .filter(epoch_start_slot.eq(epoch_start_slot_query)) + .filter(target.eq(false)) + .load::(conn)?) +} + +/// Selects all rows from the `suboptimal_attestations` table for the given +/// `epoch_start_slot_query`. +pub fn get_all_suboptimal_attestations_for_epoch( + conn: &mut PgConn, + epoch_start_slot_query: WatchSlot, +) -> Result, Error> { + use self::suboptimal_attestations::dsl::*; + + Ok(suboptimal_attestations + .filter(epoch_start_slot.eq(epoch_start_slot_query)) + .load::(conn)?) +} diff --git a/watch/src/suboptimal_attestations/mod.rs b/watch/src/suboptimal_attestations/mod.rs new file mode 100644 index 0000000000..a94532e8ab --- /dev/null +++ b/watch/src/suboptimal_attestations/mod.rs @@ -0,0 +1,56 @@ +pub mod database; +pub mod server; +pub mod updater; + +use crate::database::watch_types::WatchSlot; +use crate::updater::error::Error; + +pub use database::{ + get_all_suboptimal_attestations_for_epoch, get_attestation_by_index, get_attestation_by_pubkey, + get_highest_attestation, get_lowest_attestation, insert_batch_suboptimal_attestations, + WatchAttestation, WatchSuboptimalAttestation, +}; + +pub use server::{attestation_routes, blockprint_attestation_routes}; + +use eth2::BeaconNodeHttpClient; +use types::Epoch; + +/// Sends a request to `lighthouse/analysis/attestation_performance`. +/// Formats the response into a vector of `WatchSuboptimalAttestation`. +/// +/// Any attestations with `source == true && head == true && target == true` are ignored. +pub async fn get_attestation_performances( + bn: &BeaconNodeHttpClient, + start_epoch: Epoch, + end_epoch: Epoch, + slots_per_epoch: u64, +) -> Result, Error> { + let mut output = Vec::new(); + let result = bn + .get_lighthouse_analysis_attestation_performance( + start_epoch, + end_epoch, + "global".to_string(), + ) + .await?; + for index in result { + for epoch in index.epochs { + if epoch.1.active { + // Check if the attestation is suboptimal. + if !epoch.1.source || !epoch.1.head || !epoch.1.target { + output.push(WatchSuboptimalAttestation { + epoch_start_slot: WatchSlot::from_slot( + Epoch::new(epoch.0).start_slot(slots_per_epoch), + ), + index: index.index as i32, + source: epoch.1.source, + head: epoch.1.head, + target: epoch.1.target, + }) + } + } + } + } + Ok(output) +} diff --git a/watch/src/suboptimal_attestations/server.rs b/watch/src/suboptimal_attestations/server.rs new file mode 100644 index 0000000000..391db9a41b --- /dev/null +++ b/watch/src/suboptimal_attestations/server.rs @@ -0,0 +1,299 @@ +use crate::database::{ + get_canonical_slot, get_connection, get_validator_by_index, get_validator_by_public_key, + get_validators_clients_at_slot, get_validators_latest_proposer_info, PgPool, WatchPK, + WatchSlot, +}; + +use crate::blockprint::database::construct_validator_blockprints_at_slot; +use crate::server::Error; +use crate::suboptimal_attestations::database::{ + get_all_suboptimal_attestations_for_epoch, get_attestation_by_index, + get_validators_missed_head, get_validators_missed_source, get_validators_missed_target, + WatchAttestation, WatchSuboptimalAttestation, +}; + +use axum::{extract::Path, routing::get, Extension, Json, Router}; +use std::collections::{HashMap, HashSet}; +use std::str::FromStr; +use types::Epoch; + +// Will return Ok(None) if the epoch is not synced or if the validator does not exist. +// In the future it might be worth differentiating these events. +pub async fn get_validator_attestation( + Path((validator_query, epoch_query)): Path<(String, u64)>, + Extension(pool): Extension, + Extension(slots_per_epoch): Extension, +) -> Result>, Error> { + let mut conn = get_connection(&pool).map_err(Error::Database)?; + let epoch = Epoch::new(epoch_query); + + // Ensure the database has synced the target epoch. + if get_canonical_slot( + &mut conn, + WatchSlot::from_slot(epoch.end_slot(slots_per_epoch)), + )? + .is_none() + { + // Epoch is not fully synced. + return Ok(Json(None)); + } + + let index = if validator_query.starts_with("0x") { + let pubkey = WatchPK::from_str(&validator_query).map_err(|_| Error::BadRequest)?; + get_validator_by_public_key(&mut conn, pubkey)? + .ok_or(Error::NotFound)? + .index + } else { + i32::from_str(&validator_query).map_err(|_| Error::BadRequest)? + }; + let attestation = if let Some(suboptimal_attestation) = + get_attestation_by_index(&mut conn, index, epoch, slots_per_epoch)? + { + Some(suboptimal_attestation.to_attestation(slots_per_epoch)) + } else { + // Attestation was not in database. Check if the validator was active. + match get_validator_by_index(&mut conn, index)? { + Some(validator) => { + if let Some(activation_epoch) = validator.activation_epoch { + if activation_epoch <= epoch.as_u64() as i32 { + if let Some(exit_epoch) = validator.exit_epoch { + if exit_epoch > epoch.as_u64() as i32 { + // Validator is active and has not yet exited. + Some(WatchAttestation::optimal(index, epoch)) + } else { + // Validator has exited. + None + } + } else { + // Validator is active and has not yet exited. + Some(WatchAttestation::optimal(index, epoch)) + } + } else { + // Validator is not yet active. + None + } + } else { + // Validator is not yet active. + None + } + } + None => return Err(Error::Other("Validator index does not exist".to_string())), + } + }; + Ok(Json(attestation)) +} + +pub async fn get_all_validators_attestations( + Path(epoch): Path, + Extension(pool): Extension, + Extension(slots_per_epoch): Extension, +) -> Result>, Error> { + let mut conn = get_connection(&pool).map_err(Error::Database)?; + + let epoch_start_slot = WatchSlot::from_slot(Epoch::new(epoch).start_slot(slots_per_epoch)); + + Ok(Json(get_all_suboptimal_attestations_for_epoch( + &mut conn, + epoch_start_slot, + )?)) +} + +pub async fn get_validators_missed_vote( + Path((vote, epoch)): Path<(String, u64)>, + Extension(pool): Extension, + Extension(slots_per_epoch): Extension, +) -> Result>, Error> { + let mut conn = get_connection(&pool).map_err(Error::Database)?; + + let epoch_start_slot = WatchSlot::from_slot(Epoch::new(epoch).start_slot(slots_per_epoch)); + match vote.to_lowercase().as_str() { + "source" => Ok(Json(get_validators_missed_source( + &mut conn, + epoch_start_slot, + )?)), + "head" => Ok(Json(get_validators_missed_head( + &mut conn, + epoch_start_slot, + )?)), + "target" => Ok(Json(get_validators_missed_target( + &mut conn, + epoch_start_slot, + )?)), + _ => Err(Error::BadRequest), + } +} + +pub async fn get_validators_missed_vote_graffiti( + Path((vote, epoch)): Path<(String, u64)>, + Extension(pool): Extension, + Extension(slots_per_epoch): Extension, +) -> Result>, Error> { + let mut conn = get_connection(&pool).map_err(Error::Database)?; + + let Json(indices) = get_validators_missed_vote( + Path((vote, epoch)), + Extension(pool), + Extension(slots_per_epoch), + ) + .await?; + + let graffitis = get_validators_latest_proposer_info(&mut conn, indices)? + .values() + .map(|info| info.graffiti.clone()) + .collect::>(); + + let mut result = HashMap::new(); + for graffiti in graffitis { + if !result.contains_key(&graffiti) { + result.insert(graffiti.clone(), 0); + } + *result + .get_mut(&graffiti) + .ok_or_else(|| Error::Other("An unexpected error occurred".to_string()))? += 1; + } + + Ok(Json(result)) +} + +pub fn attestation_routes() -> Router { + Router::new() + .route( + "/v1/validators/:validator/attestation/:epoch", + get(get_validator_attestation), + ) + .route( + "/v1/validators/all/attestation/:epoch", + get(get_all_validators_attestations), + ) + .route( + "/v1/validators/missed/:vote/:epoch", + get(get_validators_missed_vote), + ) + .route( + "/v1/validators/missed/:vote/:epoch/graffiti", + get(get_validators_missed_vote_graffiti), + ) +} + +/// The functions below are dependent on Blockprint and if it is disabled, the endpoints will be +/// disabled. +pub async fn get_clients_missed_vote( + Path((vote, epoch)): Path<(String, u64)>, + Extension(pool): Extension, + Extension(slots_per_epoch): Extension, +) -> Result>, Error> { + let mut conn = get_connection(&pool).map_err(Error::Database)?; + + let Json(indices) = get_validators_missed_vote( + Path((vote, epoch)), + Extension(pool), + Extension(slots_per_epoch), + ) + .await?; + + // All validators which missed the vote. + let indices_map = indices.into_iter().collect::>(); + + let target_slot = WatchSlot::from_slot(Epoch::new(epoch).start_slot(slots_per_epoch)); + + // All validators. + let client_map = + construct_validator_blockprints_at_slot(&mut conn, target_slot, slots_per_epoch)?; + + let mut result = HashMap::new(); + + for index in indices_map { + if let Some(print) = client_map.get(&index) { + if !result.contains_key(print) { + result.insert(print.clone(), 0); + } + *result + .get_mut(print) + .ok_or_else(|| Error::Other("An unexpected error occurred".to_string()))? += 1; + } + } + + Ok(Json(result)) +} + +pub async fn get_clients_missed_vote_percentages( + Path((vote, epoch)): Path<(String, u64)>, + Extension(pool): Extension, + Extension(slots_per_epoch): Extension, +) -> Result>, Error> { + let Json(clients_counts) = get_clients_missed_vote( + Path((vote, epoch)), + Extension(pool.clone()), + Extension(slots_per_epoch), + ) + .await?; + + let target_slot = WatchSlot::from_slot(Epoch::new(epoch).start_slot(slots_per_epoch)); + + let mut conn = get_connection(&pool)?; + let totals = get_validators_clients_at_slot(&mut conn, target_slot, slots_per_epoch)?; + + let mut result = HashMap::new(); + for (client, count) in clients_counts.iter() { + let client_total: f64 = *totals + .get(client) + .ok_or_else(|| Error::Other("Client type mismatch".to_string()))? + as f64; + // `client_total` should never be `0`, but if it is, return `0` instead of `inf`. + if client_total == 0.0 { + result.insert(client.to_string(), 0.0); + } else { + let percentage: f64 = *count as f64 / client_total * 100.0; + result.insert(client.to_string(), percentage); + } + } + + Ok(Json(result)) +} + +pub async fn get_clients_missed_vote_percentages_relative( + Path((vote, epoch)): Path<(String, u64)>, + Extension(pool): Extension, + Extension(slots_per_epoch): Extension, +) -> Result>, Error> { + let Json(clients_counts) = get_clients_missed_vote( + Path((vote, epoch)), + Extension(pool), + Extension(slots_per_epoch), + ) + .await?; + + let mut total: u64 = 0; + for (_, count) in clients_counts.iter() { + total += *count + } + + let mut result = HashMap::new(); + for (client, count) in clients_counts.iter() { + // `total` should never be 0, but if it is, return `-` instead of `inf`. + if total == 0 { + result.insert(client.to_string(), 0.0); + } else { + let percentage: f64 = *count as f64 / total as f64 * 100.0; + result.insert(client.to_string(), percentage); + } + } + + Ok(Json(result)) +} + +pub fn blockprint_attestation_routes() -> Router { + Router::new() + .route( + "/v1/clients/missed/:vote/:epoch", + get(get_clients_missed_vote), + ) + .route( + "/v1/clients/missed/:vote/:epoch/percentages", + get(get_clients_missed_vote_percentages), + ) + .route( + "/v1/clients/missed/:vote/:epoch/percentages/relative", + get(get_clients_missed_vote_percentages_relative), + ) +} diff --git a/watch/src/suboptimal_attestations/updater.rs b/watch/src/suboptimal_attestations/updater.rs new file mode 100644 index 0000000000..aeabff2035 --- /dev/null +++ b/watch/src/suboptimal_attestations/updater.rs @@ -0,0 +1,236 @@ +use crate::database::{self, Error as DbError}; +use crate::updater::{Error, UpdateHandler}; + +use crate::suboptimal_attestations::get_attestation_performances; + +use eth2::types::EthSpec; +use log::{debug, error, warn}; + +const MAX_SIZE_SINGLE_REQUEST_ATTESTATIONS: u64 = 50; + +impl UpdateHandler { + /// Forward fills the `suboptimal_attestations` table starting from the entry with the highest + /// slot. + /// + /// It construts a request to the `attestation_performance` API endpoint with: + /// `start_epoch` -> highest completely filled epoch + 1 (or epoch of lowest canonical slot) + /// `end_epoch` -> epoch of highest canonical slot + /// + /// It will resync the latest epoch if it is not fully filled but will not overwrite existing + /// values unless there is a re-org. + /// That is, `if highest_filled_slot % slots_per_epoch != 31`. + /// + /// In the event the most recent epoch has no suboptimal attestations, it will attempt to + /// resync that epoch. The odds of this occuring on mainnet are vanishingly small so it is not + /// accounted for. + /// + /// Request range will not exceed `MAX_SIZE_SINGLE_REQUEST_ATTESTATIONS`. + pub async fn fill_suboptimal_attestations(&mut self) -> Result<(), Error> { + let mut conn = database::get_connection(&self.pool)?; + + let highest_filled_slot_opt = if self.config.attestations { + database::get_highest_attestation(&mut conn)? + .map(|attestation| attestation.epoch_start_slot.as_slot()) + } else { + return Err(Error::NotEnabled("attestations".to_string())); + }; + + let start_epoch = if let Some(highest_filled_slot) = highest_filled_slot_opt { + if highest_filled_slot % self.slots_per_epoch == self.slots_per_epoch.saturating_sub(1) + { + // The whole epoch is filled so we can begin syncing the next one. + highest_filled_slot.epoch(self.slots_per_epoch) + 1 + } else { + // The epoch is only partially synced. Try to sync it fully. + highest_filled_slot.epoch(self.slots_per_epoch) + } + } else { + // No rows present in the `suboptimal_attestations` table. Use `canonical_slots` + // instead. + if let Some(lowest_canonical_slot) = database::get_lowest_canonical_slot(&mut conn)? { + lowest_canonical_slot + .slot + .as_slot() + .epoch(self.slots_per_epoch) + } else { + // There are no slots in the database, do not fill the `suboptimal_attestations` + // table. + warn!("Refusing to fill the `suboptimal_attestations` table as there are no slots in the database"); + return Ok(()); + } + }; + + if let Some(highest_canonical_slot) = + database::get_highest_canonical_slot(&mut conn)?.map(|slot| slot.slot.as_slot()) + { + let mut end_epoch = highest_canonical_slot.epoch(self.slots_per_epoch); + + // The `lighthouse/analysis/attestation_performance` endpoint can only retrieve attestations + // which are more than 1 epoch old. + // We assume that `highest_canonical_slot` is near the head of the chain. + end_epoch = end_epoch.saturating_sub(2_u64); + + // If end_epoch == 0 then the chain just started so we need to wait until + // `current_epoch >= 2`. + if end_epoch == 0 { + debug!("Chain just begun, refusing to sync attestations"); + return Ok(()); + } + + if start_epoch > end_epoch { + debug!("Attestations are up to date with the head of the database"); + return Ok(()); + } + + // Ensure the size of the request does not exceed the maximum allowed value. + if start_epoch < end_epoch.saturating_sub(MAX_SIZE_SINGLE_REQUEST_ATTESTATIONS) { + end_epoch = start_epoch + MAX_SIZE_SINGLE_REQUEST_ATTESTATIONS + } + + if let Some(lowest_canonical_slot) = + database::get_lowest_canonical_slot(&mut conn)?.map(|slot| slot.slot.as_slot()) + { + let mut attestations = get_attestation_performances( + &self.bn, + start_epoch, + end_epoch, + self.slots_per_epoch, + ) + .await?; + + // Only insert attestations with corresponding `canonical_slot`s. + attestations.retain(|attestation| { + attestation.epoch_start_slot.as_slot() >= lowest_canonical_slot + && attestation.epoch_start_slot.as_slot() <= highest_canonical_slot + }); + database::insert_batch_suboptimal_attestations(&mut conn, attestations)?; + } else { + return Err(Error::Database(DbError::Other( + "Database did not return a lowest canonical slot when one exists".to_string(), + ))); + } + } else { + // There are no slots in the `canonical_slots` table, but there are entries in the + // `suboptimal_attestations` table. This is a critical failure. It usually means + // someone has manually tampered with the database tables and should not occur during + // normal operation. + error!("Database is corrupted. Please re-sync the database"); + return Err(Error::Database(DbError::DatabaseCorrupted)); + } + + Ok(()) + } + + /// Backfill the `suboptimal_attestations` table starting from the entry with the lowest slot. + /// + /// It constructs a request to the `attestation_performance` API endpoint with: + /// `start_epoch` -> epoch of the lowest `canonical_slot`. + /// `end_epoch` -> epoch of the lowest filled `suboptimal_attestation` - 1 (or epoch of highest + /// canonical slot) + /// + /// It will resync the lowest epoch if it is not fully filled. + /// That is, `if lowest_filled_slot % slots_per_epoch != 0` + /// + /// In the event there are no suboptimal attestations present in the lowest epoch, it will attempt to + /// resync the epoch. The odds of this occuring on mainnet are vanishingly small so it is not + /// accounted for. + /// + /// Request range will not exceed `MAX_SIZE_SINGLE_REQUEST_ATTESTATIONS`. + pub async fn backfill_suboptimal_attestations(&mut self) -> Result<(), Error> { + let mut conn = database::get_connection(&self.pool)?; + let max_attestation_backfill = self.config.max_backfill_size_epochs; + + // Get the slot of the lowest entry in the `suboptimal_attestations` table. + let lowest_filled_slot_opt = if self.config.attestations { + database::get_lowest_attestation(&mut conn)? + .map(|attestation| attestation.epoch_start_slot.as_slot()) + } else { + return Err(Error::NotEnabled("attestations".to_string())); + }; + + let end_epoch = if let Some(lowest_filled_slot) = lowest_filled_slot_opt { + if lowest_filled_slot % self.slots_per_epoch == 0 { + lowest_filled_slot + .epoch(self.slots_per_epoch) + .saturating_sub(1_u64) + } else { + // The epoch is only partially synced. Try to sync it fully. + lowest_filled_slot.epoch(self.slots_per_epoch) + } + } else { + // No entries in the `suboptimal_attestations` table. Use `canonical_slots` instead. + if let Some(highest_canonical_slot) = + database::get_highest_canonical_slot(&mut conn)?.map(|slot| slot.slot.as_slot()) + { + // Subtract 2 since `end_epoch` must be less than the current epoch - 1. + // We assume that `highest_canonical_slot` is near the head of the chain. + highest_canonical_slot + .epoch(self.slots_per_epoch) + .saturating_sub(2_u64) + } else { + // There are no slots in the database, do not backfill the + // `suboptimal_attestations` table. + warn!("Refusing to backfill attestations as there are no slots in the database"); + return Ok(()); + } + }; + + if end_epoch == 0 { + debug!("Attestations backfill is complete"); + return Ok(()); + } + + if let Some(lowest_canonical_slot) = + database::get_lowest_canonical_slot(&mut conn)?.map(|slot| slot.slot.as_slot()) + { + let mut start_epoch = lowest_canonical_slot.epoch(self.slots_per_epoch); + + if start_epoch > end_epoch { + debug!("Attestations are up to date with the base of the database"); + return Ok(()); + } + + // Ensure the request range does not exceed `max_attestation_backfill` or + // `MAX_SIZE_SINGLE_REQUEST_ATTESTATIONS`. + if start_epoch < end_epoch.saturating_sub(max_attestation_backfill) { + start_epoch = end_epoch.saturating_sub(max_attestation_backfill) + } + if start_epoch < end_epoch.saturating_sub(MAX_SIZE_SINGLE_REQUEST_ATTESTATIONS) { + start_epoch = end_epoch.saturating_sub(MAX_SIZE_SINGLE_REQUEST_ATTESTATIONS) + } + + if let Some(highest_canonical_slot) = + database::get_highest_canonical_slot(&mut conn)?.map(|slot| slot.slot.as_slot()) + { + let mut attestations = get_attestation_performances( + &self.bn, + start_epoch, + end_epoch, + self.slots_per_epoch, + ) + .await?; + + // Only insert `suboptimal_attestations` with corresponding `canonical_slots`. + attestations.retain(|attestation| { + attestation.epoch_start_slot.as_slot() >= lowest_canonical_slot + && attestation.epoch_start_slot.as_slot() <= highest_canonical_slot + }); + + database::insert_batch_suboptimal_attestations(&mut conn, attestations)?; + } else { + return Err(Error::Database(DbError::Other( + "Database did not return a lowest slot when one exists".to_string(), + ))); + } + } else { + // There are no slots in the `canonical_slot` table, but there are entries in the + // `suboptimal_attestations` table. This is a critical failure. It usually means + // someone has manually tampered with the database tables and should not occur during + // normal operation. + error!("Database is corrupted. Please re-sync the database"); + return Err(Error::Database(DbError::DatabaseCorrupted)); + } + + Ok(()) + } +} diff --git a/watch/src/updater/config.rs b/watch/src/updater/config.rs new file mode 100644 index 0000000000..0179be73db --- /dev/null +++ b/watch/src/updater/config.rs @@ -0,0 +1,65 @@ +use serde::{Deserialize, Serialize}; + +pub const BEACON_NODE_URL: &str = "http://127.0.0.1:5052"; + +pub const fn max_backfill_size_epochs() -> u64 { + 2 +} +pub const fn backfill_stop_epoch() -> u64 { + 0 +} +pub const fn attestations() -> bool { + true +} +pub const fn proposer_info() -> bool { + true +} +pub const fn block_rewards() -> bool { + true +} +pub const fn block_packing() -> bool { + true +} + +fn beacon_node_url() -> String { + BEACON_NODE_URL.to_string() +} + +#[derive(Debug, Clone, Serialize, Deserialize)] +pub struct Config { + /// The URL of the beacon you wish to sync from. + #[serde(default = "beacon_node_url")] + pub beacon_node_url: String, + /// The maximum size each backfill iteration will allow per request (in epochs). + #[serde(default = "max_backfill_size_epochs")] + pub max_backfill_size_epochs: u64, + /// The epoch at which to never backfill past. + #[serde(default = "backfill_stop_epoch")] + pub backfill_stop_epoch: u64, + /// Whether to sync the suboptimal_attestations table. + #[serde(default = "attestations")] + pub attestations: bool, + /// Whether to sync the proposer_info table. + #[serde(default = "proposer_info")] + pub proposer_info: bool, + /// Whether to sync the block_rewards table. + #[serde(default = "block_rewards")] + pub block_rewards: bool, + /// Whether to sync the block_packing table. + #[serde(default = "block_packing")] + pub block_packing: bool, +} + +impl Default for Config { + fn default() -> Self { + Self { + beacon_node_url: beacon_node_url(), + max_backfill_size_epochs: max_backfill_size_epochs(), + backfill_stop_epoch: backfill_stop_epoch(), + attestations: attestations(), + proposer_info: proposer_info(), + block_rewards: block_rewards(), + block_packing: block_packing(), + } + } +} diff --git a/watch/src/updater/error.rs b/watch/src/updater/error.rs new file mode 100644 index 0000000000..74091c8f21 --- /dev/null +++ b/watch/src/updater/error.rs @@ -0,0 +1,56 @@ +use crate::blockprint::Error as BlockprintError; +use crate::database::Error as DbError; +use beacon_node::beacon_chain::BeaconChainError; +use eth2::{Error as Eth2Error, SensitiveError}; +use std::fmt; + +#[derive(Debug)] +pub enum Error { + BeaconChain(BeaconChainError), + Eth2(Eth2Error), + SensitiveUrl(SensitiveError), + Database(DbError), + Blockprint(BlockprintError), + UnableToGetRemoteHead, + BeaconNodeSyncing, + NotEnabled(String), + NoValidatorsFound, + BeaconNodeNotCompatible(String), + InvalidConfig(String), +} + +impl fmt::Display for Error { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + write!(f, "{:?}", self) + } +} + +impl From for Error { + fn from(e: BeaconChainError) -> Self { + Error::BeaconChain(e) + } +} + +impl From for Error { + fn from(e: Eth2Error) -> Self { + Error::Eth2(e) + } +} + +impl From for Error { + fn from(e: SensitiveError) -> Self { + Error::SensitiveUrl(e) + } +} + +impl From for Error { + fn from(e: DbError) -> Self { + Error::Database(e) + } +} + +impl From for Error { + fn from(e: BlockprintError) -> Self { + Error::Blockprint(e) + } +} diff --git a/watch/src/updater/handler.rs b/watch/src/updater/handler.rs new file mode 100644 index 0000000000..1e1662bf74 --- /dev/null +++ b/watch/src/updater/handler.rs @@ -0,0 +1,471 @@ +use crate::blockprint::WatchBlockprintClient; +use crate::config::Config as FullConfig; +use crate::database::{self, PgPool, WatchCanonicalSlot, WatchHash, WatchSlot}; +use crate::updater::{Config, Error, WatchSpec}; +use beacon_node::beacon_chain::BeaconChainError; +use eth2::{ + types::{BlockId, SyncingData}, + BeaconNodeHttpClient, SensitiveUrl, +}; +use log::{debug, error, info, warn}; +use std::collections::HashSet; +use std::iter::FromIterator; +use types::{BeaconBlockHeader, EthSpec, Hash256, SignedBeaconBlock, Slot}; + +use crate::updater::{get_beacon_block, get_header, get_validators}; + +const MAX_EXPECTED_REORG_LENGTH: u64 = 32; + +/// Ensure the existing database is valid for this run. +pub async fn ensure_valid_database( + spec: &WatchSpec, + pool: &mut PgPool, +) -> Result<(), Error> { + let mut conn = database::get_connection(pool)?; + + let bn_slots_per_epoch = spec.slots_per_epoch(); + let bn_config_name = spec.network.clone(); + + if let Some((db_config_name, db_slots_per_epoch)) = database::get_active_config(&mut conn)? { + if db_config_name != bn_config_name || db_slots_per_epoch != bn_slots_per_epoch as i32 { + Err(Error::InvalidConfig( + "The config stored in the database does not match the beacon node.".to_string(), + )) + } else { + // Configs match. + Ok(()) + } + } else { + // No config exists in the DB. + database::insert_active_config(&mut conn, bn_config_name, bn_slots_per_epoch)?; + Ok(()) + } +} + +pub struct UpdateHandler { + pub pool: PgPool, + pub bn: BeaconNodeHttpClient, + pub blockprint: Option, + pub config: Config, + pub slots_per_epoch: u64, + pub spec: WatchSpec, +} + +impl UpdateHandler { + pub async fn new( + bn: BeaconNodeHttpClient, + spec: WatchSpec, + config: FullConfig, + ) -> Result, Error> { + let blockprint = if config.blockprint.enabled { + if let Some(server) = config.blockprint.url { + let blockprint_url = SensitiveUrl::parse(&server).map_err(Error::SensitiveUrl)?; + Some(WatchBlockprintClient { + client: reqwest::Client::new(), + server: blockprint_url, + username: config.blockprint.username, + password: config.blockprint.password, + }) + } else { + return Err(Error::NotEnabled( + "blockprint was enabled but url was not set".to_string(), + )); + } + } else { + None + }; + + let mut pool = database::build_connection_pool(&config.database)?; + + ensure_valid_database(&spec, &mut pool).await?; + + Ok(Self { + pool, + bn, + blockprint, + config: config.updater, + slots_per_epoch: spec.slots_per_epoch(), + spec, + }) + } + + /// Gets the syncing status of the connected beacon node. + pub async fn get_bn_syncing_status(&mut self) -> Result { + Ok(self.bn.get_node_syncing().await?.data) + } + + /// Gets a list of block roots from the database which do not yet contain a corresponding + /// entry in the `beacon_blocks` table and inserts them. + pub async fn update_unknown_blocks(&mut self) -> Result<(), Error> { + let mut conn = database::get_connection(&self.pool)?; + let roots = database::get_unknown_canonical_blocks(&mut conn)?; + for root in roots { + let block_opt: Option> = + get_beacon_block(&self.bn, BlockId::Root(root.as_hash())).await?; + if let Some(block) = block_opt { + database::insert_beacon_block(&mut conn, block, root)?; + } + } + + Ok(()) + } + + /// Performs a head update with the following steps: + /// 1. Pull the latest header from the beacon node and the latest canonical slot from the + /// database. + /// 2. Loop back through the beacon node and database to find the first matching slot -> root + /// pair. + /// 3. Go back `MAX_EXPECTED_REORG_LENGTH` slots through the database ensuring it is + /// consistent with the beacon node. If a re-org occurs beyond this range, we cannot recover. + /// 4. Remove any invalid slots from the database. + /// 5. Sync all blocks between the first valid block of the database and the head of the beacon + /// chain. + /// + /// In the event there are no slots present in the database, it will sync from the head block + /// block back to the first slot of the epoch. + /// This will ensure backfills are always done in full epochs (which helps keep certain syncing + /// tasks efficient). + pub async fn perform_head_update(&mut self) -> Result<(), Error> { + let mut conn = database::get_connection(&self.pool)?; + // Load the head from the beacon node. + let bn_header = get_header(&self.bn, BlockId::Head) + .await? + .ok_or(Error::UnableToGetRemoteHead)?; + let header_root = bn_header.canonical_root(); + + if let Some(latest_matching_canonical_slot) = + self.get_first_matching_block(bn_header.clone()).await? + { + // Check for reorgs. + let latest_db_slot = self.check_for_reorg(latest_matching_canonical_slot).await?; + + // Remove all slots above `latest_db_slot` from the database. + let result = database::delete_canonical_slots_above( + &mut conn, + WatchSlot::from_slot(latest_db_slot), + )?; + info!("{result} old records removed during head update"); + + if result > 0 { + // If slots were removed, we need to resync the suboptimal_attestations table for + // the epoch since they will have changed and cannot be fixed by a simple update. + let epoch = latest_db_slot + .epoch(self.slots_per_epoch) + .saturating_sub(1_u64); + debug!("Preparing to resync attestations above epoch {epoch}"); + database::delete_suboptimal_attestations_above( + &mut conn, + WatchSlot::from_slot(epoch.start_slot(self.slots_per_epoch)), + )?; + } + + // Since we are syncing backwards, `start_slot > `end_slot`. + let start_slot = bn_header.slot; + let end_slot = latest_db_slot + 1; + self.reverse_fill_canonical_slots(bn_header, header_root, false, start_slot, end_slot) + .await?; + info!("Reverse sync begun at slot {start_slot} and stopped at slot {end_slot}"); + + // Attempt to sync new blocks with blockprint. + //self.sync_blockprint_until(start_slot).await?; + } else { + // There are no matching parent blocks. Sync from the head block back until the first + // block of the epoch. + let start_slot = bn_header.slot; + let end_slot = start_slot.saturating_sub(start_slot % self.slots_per_epoch); + self.reverse_fill_canonical_slots(bn_header, header_root, false, start_slot, end_slot) + .await?; + info!("Reverse sync begun at slot {start_slot} and stopped at slot {end_slot}"); + } + + Ok(()) + } + + /// Attempt to find a row in the `canonical_slots` table which matches the `canonical_root` of + /// the block header as reported by the beacon node. + /// + /// Any blocks above this value are not canonical according to the beacon node. + /// + /// Note: In the event that there are skip slots above the slot returned by the function, + /// they will not be returned, so may be pruned or re-synced by other code despite being + /// canonical. + pub async fn get_first_matching_block( + &mut self, + mut bn_header: BeaconBlockHeader, + ) -> Result, Error> { + let mut conn = database::get_connection(&self.pool)?; + + // Load latest non-skipped canonical slot from database. + if let Some(db_canonical_slot) = + database::get_highest_non_skipped_canonical_slot(&mut conn)? + { + // Check if the header or parent root matches the entry in the database. + if bn_header.parent_root == db_canonical_slot.root.as_hash() + || bn_header.canonical_root() == db_canonical_slot.root.as_hash() + { + Ok(Some(db_canonical_slot)) + } else { + // Header is not the child of the highest entry in the database. + // From here we need to iterate backwards through the database until we find + // a slot -> root pair that matches the beacon node. + loop { + // Store working `parent_root`. + let parent_root = bn_header.parent_root; + + // Try the next header. + let next_header = get_header(&self.bn, BlockId::Root(parent_root)).await?; + if let Some(header) = next_header { + bn_header = header.clone(); + if let Some(db_canonical_slot) = database::get_canonical_slot_by_root( + &mut conn, + WatchHash::from_hash(header.parent_root), + )? { + // Check if the entry in the database matches the parent of + // the header. + if header.parent_root == db_canonical_slot.root.as_hash() { + return Ok(Some(db_canonical_slot)); + } else { + // Move on to the next header. + continue; + } + } else { + // Database does not have the referenced root. Try the next header. + continue; + } + } else { + // If we get this error it means that the `parent_root` of the header + // did not reference a canonical block. + return Err(Error::BeaconChain(BeaconChainError::MissingBeaconBlock( + parent_root, + ))); + } + } + } + } else { + // There are no non-skipped blocks present in the database. + Ok(None) + } + } + + /// Given the latest slot in the database which matches a root in the beacon node, + /// traverse back through the database for `MAX_EXPECTED_REORG_LENGTH` slots to ensure the tip + /// of the database is consistent with the beacon node (in the case that reorgs have occured). + /// + /// Returns the slot before the oldest canonical_slot which has an invalid child. + pub async fn check_for_reorg( + &mut self, + latest_canonical_slot: WatchCanonicalSlot, + ) -> Result { + let mut conn = database::get_connection(&self.pool)?; + + let end_slot = latest_canonical_slot.slot.as_u64(); + let start_slot = end_slot.saturating_sub(MAX_EXPECTED_REORG_LENGTH); + + for i in start_slot..end_slot { + let slot = Slot::new(i); + let db_canonical_slot_opt = + database::get_canonical_slot(&mut conn, WatchSlot::from_slot(slot))?; + if let Some(db_canonical_slot) = db_canonical_slot_opt { + let header_opt = get_header(&self.bn, BlockId::Slot(slot)).await?; + if let Some(header) = header_opt { + if header.canonical_root() == db_canonical_slot.root.as_hash() { + // The roots match (or are both skip slots). + continue; + } else { + // The block roots do not match. We need to re-sync from here. + warn!("Block {slot} does not match the beacon node. Resyncing"); + return Ok(slot.saturating_sub(1_u64)); + } + } else if !db_canonical_slot.skipped { + // The block exists in the database, but does not exist on the beacon node. + // We need to re-sync from here. + warn!("Block {slot} does not exist on the beacon node. Resyncing"); + return Ok(slot.saturating_sub(1_u64)); + } + } else { + // This slot does not exist in the database. + let lowest_slot = database::get_lowest_canonical_slot(&mut conn)? + .map(|canonical_slot| canonical_slot.slot.as_slot()); + if lowest_slot > Some(slot) { + // The database has not back-filled this slot yet, so skip it. + continue; + } else { + // The database does not contain this block, but has back-filled past it. + // We need to resync from here. + warn!("Slot {slot} missing from database. Resyncing"); + return Ok(slot.saturating_sub(1_u64)); + } + } + } + + // The database is consistent with the beacon node, so return the head of the database. + Ok(latest_canonical_slot.slot.as_slot()) + } + + /// Fills the canonical slots table beginning from `start_slot` and ending at `end_slot`. + /// It fills in reverse order, that is, `start_slot` is higher than `end_slot`. + /// + /// Skip slots set `root` to the root of the previous non-skipped slot and also sets + /// `skipped == true`. + /// + /// Since it uses `insert_canonical_slot` to interact with the database, it WILL NOT overwrite + /// existing rows. This means that any part of the chain within `end_slot..=start_slot` that + /// needs to be resynced, must first be deleted from the database. + pub async fn reverse_fill_canonical_slots( + &mut self, + mut header: BeaconBlockHeader, + mut header_root: Hash256, + mut skipped: bool, + start_slot: Slot, + end_slot: Slot, + ) -> Result { + let mut count = 0; + + let mut conn = database::get_connection(&self.pool)?; + + // Iterate, descending from `start_slot` (higher) to `end_slot` (lower). + for slot in (end_slot.as_u64()..=start_slot.as_u64()).rev() { + // Insert header. + database::insert_canonical_slot( + &mut conn, + WatchCanonicalSlot { + slot: WatchSlot::new(slot), + root: WatchHash::from_hash(header_root), + skipped, + beacon_block: None, + }, + )?; + count += 1; + + // Load the next header: + // We must use BlockId::Slot since we want to include skip slots. + header = if let Some(new_header) = get_header( + &self.bn, + BlockId::Slot(Slot::new(slot.saturating_sub(1_u64))), + ) + .await? + { + header_root = new_header.canonical_root(); + skipped = false; + new_header + } else { + if header.slot == 0 { + info!("Reverse fill exhausted at slot 0"); + break; + } + // Slot was skipped, so use the parent_root (most recent non-skipped block). + skipped = true; + header_root = header.parent_root; + header + }; + } + + Ok(count) + } + + /// Backfills the `canonical_slots` table starting from the lowest non-skipped slot and + /// stopping after `max_backfill_size_epochs` epochs. + pub async fn backfill_canonical_slots(&mut self) -> Result<(), Error> { + let mut conn = database::get_connection(&self.pool)?; + let backfill_stop_slot = self.config.backfill_stop_epoch * self.slots_per_epoch; + // Check to see if we have finished backfilling. + if let Some(lowest_slot) = database::get_lowest_canonical_slot(&mut conn)? { + if lowest_slot.slot.as_slot() == backfill_stop_slot { + debug!("Backfill sync complete, all slots filled"); + return Ok(()); + } + } + + let backfill_slot_count = self.config.max_backfill_size_epochs * self.slots_per_epoch; + + if let Some(lowest_non_skipped_canonical_slot) = + database::get_lowest_non_skipped_canonical_slot(&mut conn)? + { + // Set `start_slot` equal to the lowest non-skipped slot in the database. + // While this will attempt to resync some parts of the bottom of the chain, it reduces + // complexity when dealing with skip slots. + let start_slot = lowest_non_skipped_canonical_slot.slot.as_slot(); + let mut end_slot = lowest_non_skipped_canonical_slot + .slot + .as_slot() + .saturating_sub(backfill_slot_count); + + // Ensure end_slot doesn't go below `backfill_stop_epoch` + if end_slot <= backfill_stop_slot { + end_slot = Slot::new(backfill_stop_slot); + } + + let header_opt = get_header(&self.bn, BlockId::Slot(start_slot)).await?; + + if let Some(header) = header_opt { + let header_root = header.canonical_root(); + let count = self + .reverse_fill_canonical_slots(header, header_root, false, start_slot, end_slot) + .await?; + + info!("Backfill completed to slot: {end_slot}, records added: {count}"); + } else { + // The lowest slot of the database is inconsistent with the beacon node. + // Currently we have no way to recover from this. The entire database will need to + // be re-synced. + error!( + "Database is inconsistent with the beacon node. \ + Please ensure your beacon node is set to the right network, \ + otherwise you may need to resync" + ); + } + } else { + // There are no blocks in the database. Forward sync needs to happen first. + info!("Backfill was not performed since there are no blocks in the database"); + return Ok(()); + }; + + Ok(()) + } + + // Attempt to update the validator set. + // This downloads the latest validator set from the beacon node, and pulls the known validator + // set from the database. + // We then take any new or updated validators and insert them into the database (overwriting + // exiting validators). + // + // In the event there are no validators in the database, it will initialize the validator set. + pub async fn update_validator_set(&mut self) -> Result<(), Error> { + let mut conn = database::get_connection(&self.pool)?; + + let current_validators = database::get_all_validators(&mut conn)?; + + if !current_validators.is_empty() { + let old_validators = HashSet::from_iter(current_validators); + + // Pull the new validator set from the beacon node. + let new_validators = get_validators(&self.bn).await?; + + // The difference should only contain validators that contain either a new `exit_epoch` (implying an + // exit) or a new `index` (implying a validator activation). + let val_diff = new_validators.difference(&old_validators); + + for diff in val_diff { + database::insert_validator(&mut conn, diff.clone())?; + } + } else { + info!("No validators present in database. Initializing the validator set"); + self.initialize_validator_set().await?; + } + + Ok(()) + } + + // Initialize the validator set by downloading it from the beacon node, inserting blockprint + // data (if required) and writing it to the database. + pub async fn initialize_validator_set(&mut self) -> Result<(), Error> { + let mut conn = database::get_connection(&self.pool)?; + + // Pull all validators from the beacon node. + let validators = Vec::from_iter(get_validators(&self.bn).await?); + + database::insert_batch_validators(&mut conn, validators)?; + + Ok(()) + } +} diff --git a/watch/src/updater/mod.rs b/watch/src/updater/mod.rs new file mode 100644 index 0000000000..1fbb0107ae --- /dev/null +++ b/watch/src/updater/mod.rs @@ -0,0 +1,234 @@ +use crate::config::Config as FullConfig; +use crate::database::{WatchPK, WatchValidator}; +use eth2::{ + types::{BlockId, StateId}, + BeaconNodeHttpClient, SensitiveUrl, Timeouts, +}; +use log::{debug, error, info}; +use std::collections::{HashMap, HashSet}; +use std::marker::PhantomData; +use std::time::{Duration, Instant}; +use types::{BeaconBlockHeader, EthSpec, GnosisEthSpec, MainnetEthSpec, SignedBeaconBlock}; + +pub use config::Config; +pub use error::Error; +pub use handler::UpdateHandler; + +mod config; +pub mod error; +pub mod handler; + +const FAR_FUTURE_EPOCH: u64 = u64::MAX; +const DEFAULT_TIMEOUT: Duration = Duration::from_secs(5); + +const MAINNET: &str = "mainnet"; +const GNOSIS: &str = "gnosis"; + +pub struct WatchSpec { + network: String, + spec: PhantomData, +} + +impl WatchSpec { + fn slots_per_epoch(&self) -> u64 { + T::slots_per_epoch() + } +} + +impl WatchSpec { + pub fn mainnet(network: String) -> Self { + Self { + network, + spec: PhantomData, + } + } +} + +impl WatchSpec { + fn gnosis(network: String) -> Self { + Self { + network, + spec: PhantomData, + } + } +} + +pub async fn run_updater(config: FullConfig) -> Result<(), Error> { + let beacon_node_url = + SensitiveUrl::parse(&config.updater.beacon_node_url).map_err(Error::SensitiveUrl)?; + let bn = BeaconNodeHttpClient::new(beacon_node_url, Timeouts::set_all(DEFAULT_TIMEOUT)); + + let config_map = bn.get_config_spec::>().await?.data; + + let config_name = config_map + .get("CONFIG_NAME") + .ok_or_else(|| { + Error::BeaconNodeNotCompatible("No field CONFIG_NAME on beacon node spec".to_string()) + })? + .clone(); + + match config_map + .get("PRESET_BASE") + .ok_or_else(|| { + Error::BeaconNodeNotCompatible("No field PRESET_BASE on beacon node spec".to_string()) + })? + .to_lowercase() + .as_str() + { + MAINNET => { + let spec = WatchSpec::mainnet(config_name); + run_once(bn, spec, config).await + } + GNOSIS => { + let spec = WatchSpec::gnosis(config_name); + run_once(bn, spec, config).await + } + _ => unimplemented!("unsupported PRESET_BASE"), + } +} + +pub async fn run_once( + bn: BeaconNodeHttpClient, + spec: WatchSpec, + config: FullConfig, +) -> Result<(), Error> { + let mut watch = UpdateHandler::new(bn, spec, config.clone()).await?; + + let sync_data = watch.get_bn_syncing_status().await?; + if sync_data.is_syncing { + error!( + "Connected beacon node is still syncing: head_slot => {:?}, distance => {}", + sync_data.head_slot, sync_data.sync_distance + ); + return Err(Error::BeaconNodeSyncing); + } + + info!("Performing head update"); + let head_timer = Instant::now(); + watch.perform_head_update().await?; + let head_timer_elapsed = head_timer.elapsed(); + debug!("Head update complete, time taken: {head_timer_elapsed:?}"); + + info!("Performing block backfill"); + let block_backfill_timer = Instant::now(); + watch.backfill_canonical_slots().await?; + let block_backfill_timer_elapsed = block_backfill_timer.elapsed(); + debug!("Block backfill complete, time taken: {block_backfill_timer_elapsed:?}"); + + info!("Updating validator set"); + let validator_timer = Instant::now(); + watch.update_validator_set().await?; + let validator_timer_elapsed = validator_timer.elapsed(); + debug!("Validator update complete, time taken: {validator_timer_elapsed:?}"); + + // Update blocks after updating the validator set since the `proposer_index` must exist in the + // `validators` table. + info!("Updating unknown blocks"); + let unknown_block_timer = Instant::now(); + watch.update_unknown_blocks().await?; + let unknown_block_timer_elapsed = unknown_block_timer.elapsed(); + debug!("Unknown block update complete, time taken: {unknown_block_timer_elapsed:?}"); + + // Run additional modules + if config.updater.attestations { + info!("Updating suboptimal attestations"); + let attestation_timer = Instant::now(); + watch.fill_suboptimal_attestations().await?; + watch.backfill_suboptimal_attestations().await?; + let attestation_timer_elapsed = attestation_timer.elapsed(); + debug!("Attestation update complete, time taken: {attestation_timer_elapsed:?}"); + } + + if config.updater.block_rewards { + info!("Updating block rewards"); + let rewards_timer = Instant::now(); + watch.fill_block_rewards().await?; + watch.backfill_block_rewards().await?; + let rewards_timer_elapsed = rewards_timer.elapsed(); + debug!("Block Rewards update complete, time taken: {rewards_timer_elapsed:?}"); + } + + if config.updater.block_packing { + info!("Updating block packing statistics"); + let packing_timer = Instant::now(); + watch.fill_block_packing().await?; + watch.backfill_block_packing().await?; + let packing_timer_elapsed = packing_timer.elapsed(); + debug!("Block packing update complete, time taken: {packing_timer_elapsed:?}"); + } + + if config.blockprint.enabled { + info!("Updating blockprint"); + let blockprint_timer = Instant::now(); + watch.fill_blockprint().await?; + watch.backfill_blockprint().await?; + let blockprint_timer_elapsed = blockprint_timer.elapsed(); + debug!("Blockprint update complete, time taken: {blockprint_timer_elapsed:?}"); + } + + Ok(()) +} + +/// Queries the beacon node for a given `BlockId` and returns the `BeaconBlockHeader` if it exists. +pub async fn get_header( + bn: &BeaconNodeHttpClient, + block_id: BlockId, +) -> Result, Error> { + let resp = bn + .get_beacon_headers_block_id(block_id) + .await? + .map(|resp| (resp.data.root, resp.data.header.message)); + // When quering with root == 0x000... , slot 0 will be returned with parent_root == 0x0000... + // This check escapes the loop. + if let Some((root, header)) = resp { + if root == header.parent_root { + return Ok(None); + } else { + return Ok(Some(header)); + } + } + Ok(None) +} + +pub async fn get_beacon_block( + bn: &BeaconNodeHttpClient, + block_id: BlockId, +) -> Result>, Error> { + let block = bn.get_beacon_blocks(block_id).await?.map(|resp| resp.data); + + Ok(block) +} + +/// Queries the beacon node for the current validator set. +pub async fn get_validators(bn: &BeaconNodeHttpClient) -> Result, Error> { + let mut validator_map = HashSet::new(); + + let validators = bn + .get_beacon_states_validators(StateId::Head, None, None) + .await? + .ok_or(Error::NoValidatorsFound)? + .data; + + for val in validators { + // Only store `activation_epoch` if it not the `FAR_FUTURE_EPOCH`. + let activation_epoch = if val.validator.activation_epoch.as_u64() == FAR_FUTURE_EPOCH { + None + } else { + Some(val.validator.activation_epoch.as_u64() as i32) + }; + // Only store `exit_epoch` if it is not the `FAR_FUTURE_EPOCH`. + let exit_epoch = if val.validator.exit_epoch.as_u64() == FAR_FUTURE_EPOCH { + None + } else { + Some(val.validator.exit_epoch.as_u64() as i32) + }; + validator_map.insert(WatchValidator { + index: val.index as i32, + public_key: WatchPK::from_pubkey(val.validator.pubkey), + status: val.status.to_string(), + activation_epoch, + exit_epoch, + }); + } + Ok(validator_map) +} diff --git a/watch/tests/tests.rs b/watch/tests/tests.rs new file mode 100644 index 0000000000..acdda8c306 --- /dev/null +++ b/watch/tests/tests.rs @@ -0,0 +1,1254 @@ +#![recursion_limit = "256"] +#![cfg(unix)] + +use beacon_chain::test_utils::{ + AttestationStrategy, BeaconChainHarness, BlockStrategy, EphemeralHarnessType, +}; +use eth2::{types::BlockId, BeaconNodeHttpClient, SensitiveUrl, Timeouts}; +use http_api::test_utils::{create_api_server, ApiServer}; +use network::NetworkReceivers; + +use rand::distributions::Alphanumeric; +use rand::{thread_rng, Rng}; +use tokio::sync::oneshot; +use types::{Hash256, MainnetEthSpec, Slot}; +use url::Url; +use watch::{ + client::WatchHttpClient, + config::Config, + database::{self, Config as DatabaseConfig, PgPool, WatchSlot}, + server::{start_server, Config as ServerConfig}, + updater::{handler::*, run_updater, Config as UpdaterConfig, WatchSpec}, +}; + +use log::error; +use std::net::SocketAddr; +use std::time::Duration; +use tokio::{runtime, task::JoinHandle}; +use tokio_postgres::{config::Config as PostgresConfig, Client, NoTls}; +use unused_port::unused_tcp4_port; + +use testcontainers::{clients::Cli, images::postgres::Postgres, RunnableImage}; + +type E = MainnetEthSpec; + +const VALIDATOR_COUNT: usize = 32; +const SLOTS_PER_EPOCH: u64 = 32; +const DEFAULT_TIMEOUT: Duration = Duration::from_secs(5); + +fn build_test_config(config: &DatabaseConfig) -> PostgresConfig { + let mut postgres_config = PostgresConfig::new(); + postgres_config + .user(&config.user) + .password(&config.password) + .dbname(&config.default_dbname) + .host(&config.host) + .port(config.port) + .connect_timeout(Duration::from_millis(config.connect_timeout_millis)); + postgres_config +} + +async fn connect(config: &DatabaseConfig) -> (Client, JoinHandle<()>) { + let db_config = build_test_config(config); + let (client, conn) = db_config + .connect(NoTls) + .await + .expect("Could not connect to db"); + let connection = runtime::Handle::current().spawn(async move { + if let Err(e) = conn.await { + error!("Connection error {:?}", e); + } + }); + + (client, connection) +} + +pub async fn create_test_database(config: &DatabaseConfig) { + let (db, _) = connect(config).await; + + db.execute(&format!("CREATE DATABASE {};", config.dbname), &[]) + .await + .expect("Database creation failed"); +} + +struct TesterBuilder { + pub harness: BeaconChainHarness>, + pub config: Config, + _bn_network_rx: NetworkReceivers, + _bn_api_shutdown_tx: oneshot::Sender<()>, +} + +impl TesterBuilder { + pub async fn new() -> TesterBuilder { + let harness = BeaconChainHarness::builder(E::default()) + .default_spec() + .deterministic_keypairs(VALIDATOR_COUNT) + .fresh_ephemeral_store() + .build(); + + /* + * Spawn a Beacon Node HTTP API. + */ + let ApiServer { + server, + listening_socket: bn_api_listening_socket, + shutdown_tx: _bn_api_shutdown_tx, + network_rx: _bn_network_rx, + .. + } = create_api_server(harness.chain.clone(), harness.logger().clone()).await; + tokio::spawn(server); + + /* + * Create a watch configuration + */ + let database_port = unused_tcp4_port().expect("Unable to find unused port."); + let server_port = unused_tcp4_port().expect("Unable to find unused port."); + let config = Config { + database: DatabaseConfig { + dbname: random_dbname(), + port: database_port, + ..Default::default() + }, + server: ServerConfig { + listen_port: server_port, + ..Default::default() + }, + updater: UpdaterConfig { + beacon_node_url: format!( + "http://{}:{}", + bn_api_listening_socket.ip(), + bn_api_listening_socket.port() + ), + ..Default::default() + }, + ..Default::default() + }; + + Self { + harness, + config, + _bn_network_rx, + _bn_api_shutdown_tx, + } + } + pub async fn build(self, pool: PgPool) -> Tester { + /* + * Spawn a Watch HTTP API. + */ + let (_watch_shutdown_tx, watch_shutdown_rx) = oneshot::channel(); + let watch_server = start_server(&self.config, SLOTS_PER_EPOCH, pool, async { + let _ = watch_shutdown_rx.await; + }) + .unwrap(); + tokio::spawn(watch_server); + + let addr = SocketAddr::new( + self.config.server.listen_addr, + self.config.server.listen_port, + ); + + /* + * Create a HTTP client to talk to the watch HTTP API. + */ + let client = WatchHttpClient { + client: reqwest::Client::new(), + server: Url::parse(&format!("http://{}:{}", addr.ip(), addr.port())).unwrap(), + }; + + /* + * Create a HTTP client to talk to the Beacon Node API. + */ + let beacon_node_url = SensitiveUrl::parse(&self.config.updater.beacon_node_url).unwrap(); + let bn = BeaconNodeHttpClient::new(beacon_node_url, Timeouts::set_all(DEFAULT_TIMEOUT)); + let spec = WatchSpec::mainnet("mainnet".to_string()); + + /* + * Build update service + */ + let updater = UpdateHandler::new(bn, spec, self.config.clone()) + .await + .unwrap(); + + Tester { + harness: self.harness, + client, + config: self.config, + updater, + _bn_network_rx: self._bn_network_rx, + _bn_api_shutdown_tx: self._bn_api_shutdown_tx, + _watch_shutdown_tx, + } + } + async fn initialize_database(&self) -> PgPool { + create_test_database(&self.config.database).await; + database::utils::run_migrations(&self.config.database); + database::build_connection_pool(&self.config.database) + .expect("Could not build connection pool") + } +} + +struct Tester { + pub harness: BeaconChainHarness>, + pub client: WatchHttpClient, + pub config: Config, + pub updater: UpdateHandler, + _bn_network_rx: NetworkReceivers, + _bn_api_shutdown_tx: oneshot::Sender<()>, + _watch_shutdown_tx: oneshot::Sender<()>, +} + +impl Tester { + /// Extend the chain on the beacon chain harness. Do not update the beacon watch database. + pub async fn extend_chain(&mut self, num_blocks: u64) -> &mut Self { + self.harness.advance_slot(); + self.harness + .extend_chain( + num_blocks as usize, + BlockStrategy::OnCanonicalHead, + AttestationStrategy::AllValidators, + ) + .await; + self + } + + // Advance the slot clock without a block. This results in a skipped slot. + pub fn skip_slot(&mut self) -> &mut Self { + self.harness.advance_slot(); + self + } + + // Perform a single slot re-org. + pub async fn reorg_chain(&mut self) -> &mut Self { + let previous_slot = self.harness.get_current_slot(); + self.harness.advance_slot(); + let first_slot = self.harness.get_current_slot(); + self.harness + .extend_chain( + 1, + BlockStrategy::ForkCanonicalChainAt { + previous_slot, + first_slot, + }, + AttestationStrategy::AllValidators, + ) + .await; + self + } + + /// Run the watch updater service. + pub async fn run_update_service(&mut self, num_runs: usize) -> &mut Self { + for _ in 0..num_runs { + run_updater(self.config.clone()).await.unwrap(); + } + self + } + + pub async fn perform_head_update(&mut self) -> &mut Self { + self.updater.perform_head_update().await.unwrap(); + self + } + + pub async fn perform_backfill(&mut self) -> &mut Self { + self.updater.backfill_canonical_slots().await.unwrap(); + self + } + + pub async fn update_unknown_blocks(&mut self) -> &mut Self { + self.updater.update_unknown_blocks().await.unwrap(); + self + } + + pub async fn update_validator_set(&mut self) -> &mut Self { + self.updater.update_validator_set().await.unwrap(); + self + } + + pub async fn fill_suboptimal_attestations(&mut self) -> &mut Self { + self.updater.fill_suboptimal_attestations().await.unwrap(); + + self + } + + pub async fn backfill_suboptimal_attestations(&mut self) -> &mut Self { + self.updater + .backfill_suboptimal_attestations() + .await + .unwrap(); + + self + } + + pub async fn fill_block_rewards(&mut self) -> &mut Self { + self.updater.fill_block_rewards().await.unwrap(); + + self + } + + pub async fn backfill_block_rewards(&mut self) -> &mut Self { + self.updater.backfill_block_rewards().await.unwrap(); + + self + } + + pub async fn fill_block_packing(&mut self) -> &mut Self { + self.updater.fill_block_packing().await.unwrap(); + + self + } + + pub async fn backfill_block_packing(&mut self) -> &mut Self { + self.updater.backfill_block_packing().await.unwrap(); + + self + } + + pub async fn assert_canonical_slots_empty(&mut self) -> &mut Self { + let lowest_slot = self + .client + .get_lowest_canonical_slot() + .await + .unwrap() + .map(|slot| slot.slot.as_slot()); + + assert_eq!(lowest_slot, None); + + self + } + + pub async fn assert_lowest_canonical_slot(&mut self, expected: u64) -> &mut Self { + let slot = self + .client + .get_lowest_canonical_slot() + .await + .unwrap() + .unwrap() + .slot + .as_slot(); + + assert_eq!(slot, Slot::new(expected)); + + self + } + + pub async fn assert_highest_canonical_slot(&mut self, expected: u64) -> &mut Self { + let slot = self + .client + .get_highest_canonical_slot() + .await + .unwrap() + .unwrap() + .slot + .as_slot(); + + assert_eq!(slot, Slot::new(expected)); + + self + } + + pub async fn assert_canonical_slots_not_empty(&mut self) -> &mut Self { + self.client + .get_lowest_canonical_slot() + .await + .unwrap() + .unwrap(); + + self + } + + pub async fn assert_slot_is_skipped(&mut self, slot: u64) -> &mut Self { + assert!(self + .client + .get_beacon_blocks(BlockId::Slot(Slot::new(slot))) + .await + .unwrap() + .is_none()); + self + } + + pub async fn assert_all_validators_exist(&mut self) -> &mut Self { + assert_eq!( + self.client + .get_all_validators() + .await + .unwrap() + .unwrap() + .len(), + VALIDATOR_COUNT + ); + self + } + + pub async fn assert_lowest_block_has_proposer_info(&mut self) -> &mut Self { + let mut block = self + .client + .get_lowest_beacon_block() + .await + .unwrap() + .unwrap(); + + if block.slot.as_slot() == 0 { + block = self + .client + .get_next_beacon_block(block.root.as_hash()) + .await + .unwrap() + .unwrap() + } + + self.client + .get_proposer_info(BlockId::Root(block.root.as_hash())) + .await + .unwrap() + .unwrap(); + + self + } + + pub async fn assert_highest_block_has_proposer_info(&mut self) -> &mut Self { + let block = self + .client + .get_highest_beacon_block() + .await + .unwrap() + .unwrap(); + + self.client + .get_proposer_info(BlockId::Root(block.root.as_hash())) + .await + .unwrap() + .unwrap(); + + self + } + + pub async fn assert_lowest_block_has_block_rewards(&mut self) -> &mut Self { + let mut block = self + .client + .get_lowest_beacon_block() + .await + .unwrap() + .unwrap(); + + if block.slot.as_slot() == 0 { + block = self + .client + .get_next_beacon_block(block.root.as_hash()) + .await + .unwrap() + .unwrap() + } + + self.client + .get_block_reward(BlockId::Root(block.root.as_hash())) + .await + .unwrap() + .unwrap(); + + self + } + + pub async fn assert_highest_block_has_block_rewards(&mut self) -> &mut Self { + let block = self + .client + .get_highest_beacon_block() + .await + .unwrap() + .unwrap(); + + self.client + .get_block_reward(BlockId::Root(block.root.as_hash())) + .await + .unwrap() + .unwrap(); + + self + } + + pub async fn assert_lowest_block_has_block_packing(&mut self) -> &mut Self { + let mut block = self + .client + .get_lowest_beacon_block() + .await + .unwrap() + .unwrap(); + + while block.slot.as_slot() <= SLOTS_PER_EPOCH { + block = self + .client + .get_next_beacon_block(block.root.as_hash()) + .await + .unwrap() + .unwrap() + } + + self.client + .get_block_packing(BlockId::Root(block.root.as_hash())) + .await + .unwrap() + .unwrap(); + + self + } + + pub async fn assert_highest_block_has_block_packing(&mut self) -> &mut Self { + let block = self + .client + .get_highest_beacon_block() + .await + .unwrap() + .unwrap(); + + self.client + .get_block_packing(BlockId::Root(block.root.as_hash())) + .await + .unwrap() + .unwrap(); + + self + } + + /// Check that the canonical chain in watch matches that of the harness. Also check that all + /// canonical blocks can be retrieved. + pub async fn assert_canonical_chain_consistent(&mut self, last_slot: u64) -> &mut Self { + let head_root = self.harness.chain.head_beacon_block_root(); + let mut chain: Vec<(Hash256, Slot)> = self + .harness + .chain + .rev_iter_block_roots_from(head_root) + .unwrap() + .map(Result::unwrap) + .collect(); + + // `chain` contains skip slots, but the `watch` API will not return blocks that do not + // exist. + // We need to filter them out. + chain.reverse(); + chain.dedup_by(|(hash1, _), (hash2, _)| hash1 == hash2); + + // Remove any slots below `last_slot` since it is known that the database has not + // backfilled past it. + chain.retain(|(_, slot)| slot.as_u64() >= last_slot); + + for (root, slot) in &chain { + let block = self + .client + .get_beacon_blocks(BlockId::Root(*root)) + .await + .unwrap() + .unwrap(); + assert_eq!(block.slot.as_slot(), *slot); + } + + self + } + + /// Check that every block in the `beacon_blocks` table has corresponding entries in the + /// `proposer_info`, `block_rewards` and `block_packing` tables. + pub async fn assert_all_blocks_have_metadata(&mut self) -> &mut Self { + let pool = database::build_connection_pool(&self.config.database).unwrap(); + + let mut conn = database::get_connection(&pool).unwrap(); + let highest_block_slot = database::get_highest_beacon_block(&mut conn) + .unwrap() + .unwrap() + .slot + .as_slot(); + let lowest_block_slot = database::get_lowest_beacon_block(&mut conn) + .unwrap() + .unwrap() + .slot + .as_slot(); + for slot in lowest_block_slot.as_u64()..=highest_block_slot.as_u64() { + let canonical_slot = database::get_canonical_slot(&mut conn, WatchSlot::new(slot)) + .unwrap() + .unwrap(); + if !canonical_slot.skipped { + database::get_block_rewards_by_slot(&mut conn, WatchSlot::new(slot)) + .unwrap() + .unwrap(); + database::get_proposer_info_by_slot(&mut conn, WatchSlot::new(slot)) + .unwrap() + .unwrap(); + database::get_block_packing_by_slot(&mut conn, WatchSlot::new(slot)) + .unwrap() + .unwrap(); + } + } + + self + } +} + +pub fn random_dbname() -> String { + let mut s: String = thread_rng() + .sample_iter(&Alphanumeric) + .take(8) + .map(char::from) + .collect(); + // Postgres gets weird about capitals in database names. + s.make_ascii_lowercase(); + format!("test_{}", s) +} + +#[cfg(unix)] +#[tokio::test] +async fn short_chain() { + let builder = TesterBuilder::new().await; + + let docker = Cli::default(); + let image = RunnableImage::from(Postgres::default()) + .with_mapped_port((builder.config.database.port, 5432)); + let _node = docker.run(image); + + let pool = builder.initialize_database().await; + let mut tester = builder.build(pool).await; + + tester + .extend_chain(16) + .await + .assert_canonical_slots_empty() + .await + .run_update_service(1) + .await + .assert_all_validators_exist() + .await + .assert_canonical_slots_not_empty() + .await + .assert_canonical_chain_consistent(0) + .await; +} + +#[cfg(unix)] +#[tokio::test] +async fn short_chain_sync_starts_on_skip_slot() { + let builder = TesterBuilder::new().await; + + let docker = Cli::default(); + let image = RunnableImage::from(Postgres::default()) + .with_mapped_port((builder.config.database.port, 5432)); + let _node = docker.run(image); + + let pool = builder.initialize_database().await; + let mut tester = builder.build(pool).await; + + tester + .skip_slot() + .skip_slot() + .extend_chain(6) + .await + .skip_slot() + .extend_chain(6) + .await + .skip_slot() + .assert_canonical_slots_empty() + .await + .run_update_service(1) + .await + .assert_all_validators_exist() + .await + .assert_canonical_slots_not_empty() + .await + .assert_canonical_chain_consistent(0) + .await + .assert_lowest_block_has_block_rewards() + .await + .assert_highest_block_has_block_rewards() + .await; +} + +#[cfg(unix)] +#[tokio::test] +async fn short_chain_with_skip_slot() { + let builder = TesterBuilder::new().await; + + let docker = Cli::default(); + let image = RunnableImage::from(Postgres::default()) + .with_mapped_port((builder.config.database.port, 5432)); + let _node = docker.run(image); + + let pool = builder.initialize_database().await; + let mut tester = builder.build(pool).await; + + tester + .extend_chain(5) + .await + .assert_canonical_slots_empty() + .await + .run_update_service(1) + .await + .assert_all_validators_exist() + .await + .assert_canonical_slots_not_empty() + .await + .assert_highest_canonical_slot(5) + .await + .assert_lowest_canonical_slot(0) + .await + .assert_canonical_chain_consistent(0) + .await + .skip_slot() + .extend_chain(1) + .await + .run_update_service(1) + .await + .assert_all_validators_exist() + .await + .assert_highest_canonical_slot(7) + .await + .assert_slot_is_skipped(6) + .await + .assert_canonical_chain_consistent(0) + .await; +} + +#[cfg(unix)] +#[tokio::test] +async fn short_chain_with_reorg() { + let builder = TesterBuilder::new().await; + + let docker = Cli::default(); + let image = RunnableImage::from(Postgres::default()) + .with_mapped_port((builder.config.database.port, 5432)); + let _node = docker.run(image); + + let pool = builder.initialize_database().await; + let mut tester = builder.build(pool).await; + + tester + .extend_chain(5) + .await + .assert_canonical_slots_empty() + .await + .run_update_service(1) + .await + .assert_all_validators_exist() + .await + .assert_canonical_slots_not_empty() + .await + .assert_highest_canonical_slot(5) + .await + .assert_lowest_canonical_slot(0) + .await + .assert_canonical_chain_consistent(0) + .await + .skip_slot() + .reorg_chain() + .await + .extend_chain(1) + .await + .run_update_service(1) + .await + .assert_all_validators_exist() + .await + .assert_highest_canonical_slot(8) + .await + .assert_slot_is_skipped(6) + .await + .assert_canonical_chain_consistent(0) + .await; +} + +#[cfg(unix)] +#[tokio::test] +async fn chain_grows() { + let builder = TesterBuilder::new().await; + + let docker = Cli::default(); + let image = RunnableImage::from(Postgres::default()) + .with_mapped_port((builder.config.database.port, 5432)); + let _node = docker.run(image); + + let pool = builder.initialize_database().await; + let mut tester = builder.build(pool).await; + + // Apply four blocks to the chain. + tester + .extend_chain(4) + .await + .perform_head_update() + .await + // Head update should insert the head block. + .assert_highest_canonical_slot(4) + .await + // And also backfill to the epoch boundary. + .assert_lowest_canonical_slot(0) + .await + // Fill back to genesis. + .perform_backfill() + .await + // All blocks should be present. + .assert_lowest_canonical_slot(0) + .await + .assert_highest_canonical_slot(4) + .await + // Apply one block to the chain. + .extend_chain(1) + .await + .perform_head_update() + .await + // All blocks should be present. + .assert_lowest_canonical_slot(0) + .await + .assert_highest_canonical_slot(5) + .await + // Apply two blocks to the chain. + .extend_chain(2) + .await + // Update the head. + .perform_head_update() + .await + // All blocks should be present. + .assert_lowest_canonical_slot(0) + .await + .assert_highest_canonical_slot(7) + .await + .update_validator_set() + .await + // Insert all blocks. + .update_unknown_blocks() + .await + // Check the chain is consistent + .assert_canonical_chain_consistent(0) + .await; +} + +#[cfg(unix)] +#[tokio::test] +async fn chain_grows_with_metadata() { + let builder = TesterBuilder::new().await; + + let docker = Cli::default(); + let image = RunnableImage::from(Postgres::default()) + .with_mapped_port((builder.config.database.port, 5432)); + let _node = docker.run(image); + + let pool = builder.initialize_database().await; + let mut tester = builder.build(pool).await; + + tester + // Apply four blocks to the chain. + .extend_chain(4) + .await + .perform_head_update() + .await + // Head update should insert the head block. + .assert_highest_canonical_slot(4) + .await + // And also backfill to the epoch boundary. + .assert_lowest_canonical_slot(0) + .await + // Fill back to genesis. + .perform_backfill() + .await + // Insert all validators + .update_validator_set() + .await + // Insert all blocks. + .update_unknown_blocks() + .await + // All validators should be present. + .assert_all_validators_exist() + .await + // Check the chain is consistent + .assert_canonical_chain_consistent(0) + .await + // Get other chain data. + // Backfill before forward fill to ensure order is arbitrary. + .backfill_block_rewards() + .await + .fill_block_rewards() + .await + // All blocks should be present. + .assert_lowest_canonical_slot(0) + .await + .assert_highest_canonical_slot(4) + .await + // All rewards should be present. + .assert_lowest_block_has_block_rewards() + .await + .assert_highest_block_has_block_rewards() + .await + // All proposers should be present. + .assert_lowest_block_has_proposer_info() + .await + .assert_highest_block_has_proposer_info() + .await + // Apply one block to the chain. + .extend_chain(1) + .await + .perform_head_update() + .await + // All blocks should be present. + .assert_lowest_canonical_slot(0) + .await + .assert_highest_canonical_slot(5) + .await + // Apply two blocks to the chain. + .extend_chain(2) + .await + // Update the head. + .perform_head_update() + .await + // All blocks should be present. + .assert_lowest_canonical_slot(0) + .await + .assert_highest_canonical_slot(7) + .await + .update_validator_set() + .await + // Insert all blocks. + .update_unknown_blocks() + .await + // Check the chain is consistent + .assert_canonical_chain_consistent(0) + .await + // Get other chain data. + .fill_block_rewards() + .await + .backfill_block_rewards() + .await + // All rewards should be present. + .assert_lowest_block_has_block_rewards() + .await + .assert_highest_block_has_block_rewards() + .await + // All proposers should be present. + .assert_lowest_block_has_proposer_info() + .await + .assert_highest_block_has_proposer_info() + .await; +} + +#[cfg(unix)] +#[tokio::test] +async fn chain_grows_with_metadata_and_multiple_skip_slots() { + let builder = TesterBuilder::new().await; + + let docker = Cli::default(); + let image = RunnableImage::from(Postgres::default()) + .with_mapped_port((builder.config.database.port, 5432)); + let _node = docker.run(image); + + let pool = builder.initialize_database().await; + let mut tester = builder.build(pool).await; + + // Apply four blocks to the chain. + tester + .extend_chain(4) + .await + .perform_head_update() + .await + // Head update should insert the head block. + .assert_highest_canonical_slot(4) + // And also backfill to the epoch boundary. + .await + .assert_lowest_canonical_slot(0) + .await + // Fill back to genesis. + .perform_backfill() + .await + // Insert all validators + .update_validator_set() + .await + // Insert all blocks. + .update_unknown_blocks() + .await + // All validators should be present. + .assert_all_validators_exist() + .await + // Check the chain is consistent. + .assert_canonical_chain_consistent(0) + .await + // Get other chain data. + .fill_block_rewards() + .await + .backfill_block_rewards() + .await + // All blocks should be present. + .assert_lowest_canonical_slot(0) + .await + .assert_highest_canonical_slot(4) + .await + // All rewards should be present. + .assert_lowest_block_has_block_rewards() + .await + .assert_highest_block_has_block_rewards() + .await + // All proposers should be present. + .assert_lowest_block_has_proposer_info() + .await + .assert_highest_block_has_proposer_info() + .await + // Add multiple skip slots. + .skip_slot() + .skip_slot() + .skip_slot() + // Apply one block to the chain. + .extend_chain(1) + .await + .perform_head_update() + .await + // All blocks should be present. + .assert_lowest_canonical_slot(0) + .await + .assert_highest_canonical_slot(8) + .await + // Apply two blocks to the chain. + .extend_chain(2) + .await + // Update the head. + .perform_head_update() + .await + // All validators should be present. + .assert_all_validators_exist() + .await + // All blocks should be present. + .assert_lowest_canonical_slot(0) + .await + .assert_highest_canonical_slot(10) + .await + .update_validator_set() + .await + // Insert all blocks. + .update_unknown_blocks() + .await + // Check the chain is consistent + .assert_canonical_chain_consistent(0) + .await + // Get other chain data. + // Backfill before forward fill to ensure order is arbitrary. + .backfill_block_rewards() + .await + .fill_block_rewards() + .await + // All rewards should be present. + .assert_lowest_block_has_block_rewards() + .await + .assert_highest_block_has_block_rewards() + .await + // All proposers should be present. + .assert_lowest_block_has_proposer_info() + .await + .assert_highest_block_has_proposer_info() + .await; +} + +#[cfg(unix)] +#[tokio::test] +async fn chain_grows_to_second_epoch() { + let builder = TesterBuilder::new().await; + + let docker = Cli::default(); + let image = RunnableImage::from(Postgres::default()) + .with_mapped_port((builder.config.database.port, 5432)); + let _node = docker.run(image); + + let pool = builder.initialize_database().await; + let mut tester = builder.build(pool).await; + // Apply 40 blocks to the chain. + tester + .extend_chain(40) + .await + .perform_head_update() + .await + // Head update should insert the head block. + .assert_highest_canonical_slot(40) + .await + // And also backfill to the epoch boundary. + .assert_lowest_canonical_slot(32) + .await + // Fill back to genesis. + .perform_backfill() + .await + // Insert all validators + .update_validator_set() + .await + // Insert all blocks. + .update_unknown_blocks() + .await + // All validators should be present. + .assert_all_validators_exist() + .await + // Check the chain is consistent. + .assert_canonical_chain_consistent(0) + .await + // Get block packings. + .fill_block_packing() + .await + .backfill_block_packing() + .await + // All blocks should be present. + .assert_lowest_canonical_slot(0) + .await + .assert_highest_canonical_slot(40) + .await + // All packings should be present. + .assert_lowest_block_has_block_packing() + .await + .assert_highest_block_has_block_packing() + .await + // Skip a slot + .skip_slot() + // Apply two blocks to the chain. + .extend_chain(2) + .await + // Update the head. + .perform_head_update() + .await + // All blocks should be present. + .assert_lowest_canonical_slot(0) + .await + .assert_highest_canonical_slot(43) + .await + .update_validator_set() + .await + // Insert all blocks. + .update_unknown_blocks() + .await + // Update new block_packing + // Backfill before forward fill to ensure order is arbitrary + .backfill_block_packing() + .await + .fill_block_packing() + .await + // All packings should be present. + .assert_lowest_block_has_block_packing() + .await + .assert_highest_block_has_block_packing() + .await + // Check the chain is consistent + .assert_canonical_chain_consistent(0) + .await; +} + +#[cfg(unix)] +#[tokio::test] +async fn large_chain() { + let builder = TesterBuilder::new().await; + + let docker = Cli::default(); + let image = RunnableImage::from(Postgres::default()) + .with_mapped_port((builder.config.database.port, 5432)); + let _node = docker.run(image); + + let pool = builder.initialize_database().await; + let mut tester = builder.build(pool).await; + // Apply 40 blocks to the chain. + tester + .extend_chain(400) + .await + .perform_head_update() + .await + // Head update should insert the head block. + .assert_highest_canonical_slot(400) + .await + // And also backfill to the epoch boundary. + .assert_lowest_canonical_slot(384) + .await + // Backfill 2 epochs as per default config. + .perform_backfill() + .await + // Insert all validators + .update_validator_set() + .await + // Insert all blocks. + .update_unknown_blocks() + .await + // All validators should be present. + .assert_all_validators_exist() + .await + // Check the chain is consistent. + .assert_canonical_chain_consistent(384) + .await + // Get block rewards and proposer info. + .fill_block_rewards() + .await + .backfill_block_rewards() + .await + // Get block packings. + .fill_block_packing() + .await + .backfill_block_packing() + .await + // Should have backfilled 2 more epochs. + .assert_lowest_canonical_slot(320) + .await + .assert_highest_canonical_slot(400) + .await + // All rewards should be present. + .assert_lowest_block_has_block_rewards() + .await + .assert_highest_block_has_block_rewards() + .await + // All proposers should be present. + .assert_lowest_block_has_proposer_info() + .await + .assert_highest_block_has_proposer_info() + .await + // All packings should be present. + .assert_lowest_block_has_block_packing() + .await + .assert_highest_block_has_block_packing() + .await + // Skip a slot + .skip_slot() + // Apply two blocks to the chain. + .extend_chain(2) + .await + // Update the head. + .perform_head_update() + .await + .perform_backfill() + .await + // Should have backfilled 2 more epochs + .assert_lowest_canonical_slot(256) + .await + .assert_highest_canonical_slot(403) + .await + // Update validators + .update_validator_set() + .await + // Insert all blocks. + .update_unknown_blocks() + .await + // All validators should be present. + .assert_all_validators_exist() + .await + // Get suboptimal attestations. + .fill_suboptimal_attestations() + .await + .backfill_suboptimal_attestations() + .await + // Get block rewards and proposer info. + .fill_block_rewards() + .await + .backfill_block_rewards() + .await + // Get block packing. + // Backfill before forward fill to ensure order is arbitrary. + .backfill_block_packing() + .await + .fill_block_packing() + .await + // All rewards should be present. + .assert_lowest_block_has_block_rewards() + .await + .assert_highest_block_has_block_rewards() + .await + // All proposers should be present. + .assert_lowest_block_has_proposer_info() + .await + .assert_highest_block_has_proposer_info() + .await + // All packings should be present. + .assert_lowest_block_has_block_packing() + .await + .assert_highest_block_has_block_packing() + .await + // Check the chain is consistent. + .assert_canonical_chain_consistent(256) + .await + // Check every block has rewards, proposer info and packing statistics. + .assert_all_blocks_have_metadata() + .await; +} From 4d17fb3af6eeb37f4cd2f8c79873700e7d0d6587 Mon Sep 17 00:00:00 2001 From: Jimmy Chen Date: Thu, 6 Apr 2023 06:36:21 +0000 Subject: [PATCH 17/56] CI fix: move download web3signer binary out of build script (#4163) ## Issue Addressed Attempt to fix #3812 ## Proposed Changes Move web3signer binary download script out of build script to avoid downloading unless necessary. If this works, it should also reduce the build time for all jobs that runs compilation. --- Cargo.lock | 2 + testing/web3signer_tests/Cargo.toml | 8 +--- .../{build.rs => src/get_web3signer.rs} | 11 ------ testing/web3signer_tests/src/lib.rs | 39 ++++++++++++++++--- 4 files changed, 38 insertions(+), 22 deletions(-) rename testing/web3signer_tests/{build.rs => src/get_web3signer.rs} (88%) diff --git a/Cargo.lock b/Cargo.lock index 7a67b77bf9..08b7e2a808 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -9227,6 +9227,8 @@ dependencies = [ "eth2_network_config", "exit-future", "futures", + "lazy_static", + "parking_lot 0.12.1", "reqwest", "serde", "serde_derive", diff --git a/testing/web3signer_tests/Cargo.toml b/testing/web3signer_tests/Cargo.toml index 8ce5830062..c0fbf66723 100644 --- a/testing/web3signer_tests/Cargo.toml +++ b/testing/web3signer_tests/Cargo.toml @@ -3,8 +3,6 @@ name = "web3signer_tests" version = "0.1.0" edition = "2021" -build = "build.rs" - # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [dependencies] @@ -27,9 +25,7 @@ serde = "1.0.116" serde_derive = "1.0.116" serde_yaml = "0.8.13" eth2_network_config = { path = "../../common/eth2_network_config" } - -[build-dependencies] -tokio = { version = "1.14.0", features = ["rt-multi-thread", "macros"] } -reqwest = { version = "0.11.0", features = ["json","stream"] } serde_json = "1.0.58" zip = "0.5.13" +lazy_static = "1.4.0" +parking_lot = "0.12.0" \ No newline at end of file diff --git a/testing/web3signer_tests/build.rs b/testing/web3signer_tests/src/get_web3signer.rs similarity index 88% rename from testing/web3signer_tests/build.rs rename to testing/web3signer_tests/src/get_web3signer.rs index a55c39376a..800feb204a 100644 --- a/testing/web3signer_tests/build.rs +++ b/testing/web3signer_tests/src/get_web3signer.rs @@ -15,17 +15,6 @@ use zip::ZipArchive; /// Use `Some("21.8.1")` to download a specific version. const FIXED_VERSION_STRING: Option<&str> = None; -#[tokio::main] -async fn main() { - let out_dir = env::var("OUT_DIR").unwrap(); - - // Read a Github API token from the environment. This is intended to prevent rate-limits on CI. - // We use a name that is unlikely to accidentally collide with anything the user has configured. - let github_token = env::var("LIGHTHOUSE_GITHUB_TOKEN"); - - download_binary(out_dir.into(), github_token.as_deref().unwrap_or("")).await; -} - pub async fn download_binary(dest_dir: PathBuf, github_token: &str) { let version_file = dest_dir.join("version"); diff --git a/testing/web3signer_tests/src/lib.rs b/testing/web3signer_tests/src/lib.rs index 16bffd04f9..dd17ae23b1 100644 --- a/testing/web3signer_tests/src/lib.rs +++ b/testing/web3signer_tests/src/lib.rs @@ -9,16 +9,21 @@ //! - Lighthouse can issue valid requests to Web3Signer. //! - The signatures generated by Web3Signer are identical to those which Lighthouse generates. //! -//! There is a build script in this crate which obtains the latest version of Web3Signer and makes -//! it available via the `OUT_DIR`. +//! There is a `download_binary` function in the `get_web3signer` module which obtains the latest version of Web3Signer and makes +//! it available via the `TEMP_DIR`. +#![cfg(all(test, unix, not(debug_assertions)))] + +mod get_web3signer; -#[cfg(all(test, unix, not(debug_assertions)))] mod tests { + use crate::get_web3signer::download_binary; use account_utils::validator_definitions::{ SigningDefinition, ValidatorDefinition, ValidatorDefinitions, Web3SignerDefinition, }; use eth2_keystore::KeystoreBuilder; use eth2_network_config::Eth2NetworkConfig; + use lazy_static::lazy_static; + use parking_lot::Mutex; use reqwest::Client; use serde::Serialize; use slot_clock::{SlotClock, TestingSlotClock}; @@ -31,7 +36,8 @@ mod tests { use std::sync::Arc; use std::time::{Duration, Instant}; use task_executor::TaskExecutor; - use tempfile::TempDir; + use tempfile::{tempdir, TempDir}; + use tokio::sync::OnceCell; use tokio::time::sleep; use types::*; use url::Url; @@ -51,6 +57,13 @@ mod tests { /// debugging. const SUPPRESS_WEB3SIGNER_LOGS: bool = true; + lazy_static! { + static ref TEMP_DIR: Arc> = Arc::new(Mutex::new( + tempdir().expect("Failed to create temporary directory") + )); + static ref GET_WEB3SIGNER_BIN: OnceCell<()> = OnceCell::new(); + } + type E = MainnetEthSpec; /// This marker trait is implemented for objects that we wish to compare to ensure Web3Signer @@ -99,7 +112,10 @@ mod tests { /// The location of the Web3Signer binary generated by the build script. fn web3signer_binary() -> PathBuf { - PathBuf::from(env::var("OUT_DIR").unwrap()) + TEMP_DIR + .lock() + .path() + .to_path_buf() .join("web3signer") .join("bin") .join("web3signer") @@ -143,6 +159,19 @@ mod tests { impl Web3SignerRig { pub async fn new(network: &str, listen_address: &str, listen_port: u16) -> Self { + GET_WEB3SIGNER_BIN + .get_or_init(|| async { + // Read a Github API token from the environment. This is intended to prevent rate-limits on CI. + // We use a name that is unlikely to accidentally collide with anything the user has configured. + let github_token = env::var("LIGHTHOUSE_GITHUB_TOKEN"); + download_binary( + TEMP_DIR.lock().path().to_path_buf(), + github_token.as_deref().unwrap_or(""), + ) + .await; + }) + .await; + let keystore_dir = TempDir::new().unwrap(); let keypair = testing_keypair(); let keystore = From 3b117f4bf68666747b20e39e4333073a7764b1e2 Mon Sep 17 00:00:00 2001 From: Pawan Dhananjay Date: Wed, 12 Apr 2023 01:48:19 +0000 Subject: [PATCH 18/56] Add a flag to disable peer scoring (#4135) ## Issue Addressed N/A ## Proposed Changes Adds a flag for disabling peer scoring. This is useful for local testing and testing small networks for new features. --- beacon_node/http_api/src/test_utils.rs | 1 + beacon_node/lighthouse_network/src/config.rs | 4 ++ .../lighthouse_network/src/discovery/mod.rs | 1 + .../src/peer_manager/peerdb.rs | 39 +++++++++++++++++-- .../lighthouse_network/src/service/mod.rs | 1 + .../lighthouse_network/src/types/globals.rs | 4 +- .../network/src/beacon_processor/tests.rs | 1 + beacon_node/src/cli.rs | 8 ++++ beacon_node/src/config.rs | 4 ++ lighthouse/tests/beacon_node.rs | 7 ++++ 10 files changed, 65 insertions(+), 5 deletions(-) diff --git a/beacon_node/http_api/src/test_utils.rs b/beacon_node/http_api/src/test_utils.rs index 6f918e1b9e..8dc9be7dd4 100644 --- a/beacon_node/http_api/src/test_utils.rs +++ b/beacon_node/http_api/src/test_utils.rs @@ -155,6 +155,7 @@ pub async fn create_api_server_on_port( None, meta_data, vec![], + false, &log, )); diff --git a/beacon_node/lighthouse_network/src/config.rs b/beacon_node/lighthouse_network/src/config.rs index 79041f6d90..d8efa20209 100644 --- a/beacon_node/lighthouse_network/src/config.rs +++ b/beacon_node/lighthouse_network/src/config.rs @@ -101,6 +101,9 @@ pub struct Config { /// List of trusted libp2p nodes which are not scored. pub trusted_peers: Vec, + /// Disables peer scoring altogether. + pub disable_peer_scoring: bool, + /// Client version pub client_version: String, @@ -309,6 +312,7 @@ impl Default for Config { boot_nodes_multiaddr: vec![], libp2p_nodes: vec![], trusted_peers: vec![], + disable_peer_scoring: false, client_version: lighthouse_version::version_with_platform(), disable_discovery: false, upnp_enabled: true, diff --git a/beacon_node/lighthouse_network/src/discovery/mod.rs b/beacon_node/lighthouse_network/src/discovery/mod.rs index 2966644a89..13fdf8ed57 100644 --- a/beacon_node/lighthouse_network/src/discovery/mod.rs +++ b/beacon_node/lighthouse_network/src/discovery/mod.rs @@ -1162,6 +1162,7 @@ mod tests { syncnets: Default::default(), }), vec![], + false, &log, ); Discovery::new(&keypair, &config, Arc::new(globals), &log) diff --git a/beacon_node/lighthouse_network/src/peer_manager/peerdb.rs b/beacon_node/lighthouse_network/src/peer_manager/peerdb.rs index 70d3399d6a..2087065688 100644 --- a/beacon_node/lighthouse_network/src/peer_manager/peerdb.rs +++ b/beacon_node/lighthouse_network/src/peer_manager/peerdb.rs @@ -41,12 +41,14 @@ pub struct PeerDB { disconnected_peers: usize, /// Counts banned peers in total and per ip banned_peers_count: BannedPeersCount, + /// Specifies if peer scoring is disabled. + disable_peer_scoring: bool, /// PeerDB's logger log: slog::Logger, } impl PeerDB { - pub fn new(trusted_peers: Vec, log: &slog::Logger) -> Self { + pub fn new(trusted_peers: Vec, disable_peer_scoring: bool, log: &slog::Logger) -> Self { // Initialize the peers hashmap with trusted peers let peers = trusted_peers .into_iter() @@ -56,6 +58,7 @@ impl PeerDB { log: log.clone(), disconnected_peers: 0, banned_peers_count: BannedPeersCount::default(), + disable_peer_scoring, peers, } } @@ -704,7 +707,11 @@ impl PeerDB { warn!(log_ref, "Updating state of unknown peer"; "peer_id" => %peer_id, "new_state" => ?new_state); } - PeerInfo::default() + if self.disable_peer_scoring { + PeerInfo::trusted_peer_info() + } else { + PeerInfo::default() + } }); // Ban the peer if the score is not already low enough. @@ -1300,7 +1307,7 @@ mod tests { fn get_db() -> PeerDB { let log = build_log(slog::Level::Debug, false); - PeerDB::new(vec![], &log) + PeerDB::new(vec![], false, &log) } #[test] @@ -1999,7 +2006,7 @@ mod tests { fn test_trusted_peers_score() { let trusted_peer = PeerId::random(); let log = build_log(slog::Level::Debug, false); - let mut pdb: PeerDB = PeerDB::new(vec![trusted_peer], &log); + let mut pdb: PeerDB = PeerDB::new(vec![trusted_peer], false, &log); pdb.connect_ingoing(&trusted_peer, "/ip4/0.0.0.0".parse().unwrap(), None); @@ -2018,4 +2025,28 @@ mod tests { Score::max_score().score() ); } + + #[test] + fn test_disable_peer_scoring() { + let peer = PeerId::random(); + let log = build_log(slog::Level::Debug, false); + let mut pdb: PeerDB = PeerDB::new(vec![], true, &log); + + pdb.connect_ingoing(&peer, "/ip4/0.0.0.0".parse().unwrap(), None); + + // Check trusted status and score + assert!(pdb.peer_info(&peer).unwrap().is_trusted()); + assert_eq!( + pdb.peer_info(&peer).unwrap().score().score(), + Score::max_score().score() + ); + + // Adding/Subtracting score should have no effect on a trusted peer + add_score(&mut pdb, &peer, -50.0); + + assert_eq!( + pdb.peer_info(&peer).unwrap().score().score(), + Score::max_score().score() + ); + } } diff --git a/beacon_node/lighthouse_network/src/service/mod.rs b/beacon_node/lighthouse_network/src/service/mod.rs index dc9b44849f..f815e3bd36 100644 --- a/beacon_node/lighthouse_network/src/service/mod.rs +++ b/beacon_node/lighthouse_network/src/service/mod.rs @@ -171,6 +171,7 @@ impl Network { .iter() .map(|x| PeerId::from(x.clone())) .collect(), + config.disable_peer_scoring, &log, ); Arc::new(globals) diff --git a/beacon_node/lighthouse_network/src/types/globals.rs b/beacon_node/lighthouse_network/src/types/globals.rs index ee2b300e20..43e8ebd76a 100644 --- a/beacon_node/lighthouse_network/src/types/globals.rs +++ b/beacon_node/lighthouse_network/src/types/globals.rs @@ -39,6 +39,7 @@ impl NetworkGlobals { listen_port_tcp6: Option, local_metadata: MetaData, trusted_peers: Vec, + disable_peer_scoring: bool, log: &slog::Logger, ) -> Self { NetworkGlobals { @@ -48,7 +49,7 @@ impl NetworkGlobals { listen_port_tcp4, listen_port_tcp6, local_metadata: RwLock::new(local_metadata), - peers: RwLock::new(PeerDB::new(trusted_peers, log)), + peers: RwLock::new(PeerDB::new(trusted_peers, disable_peer_scoring, log)), gossipsub_subscriptions: RwLock::new(HashSet::new()), sync_state: RwLock::new(SyncState::Stalled), backfill_state: RwLock::new(BackFillState::NotRequired), @@ -144,6 +145,7 @@ impl NetworkGlobals { syncnets: Default::default(), }), vec![], + false, log, ) } diff --git a/beacon_node/network/src/beacon_processor/tests.rs b/beacon_node/network/src/beacon_processor/tests.rs index b7c102ae11..4b0a159eb4 100644 --- a/beacon_node/network/src/beacon_processor/tests.rs +++ b/beacon_node/network/src/beacon_processor/tests.rs @@ -185,6 +185,7 @@ impl TestRig { None, meta_data, vec![], + false, &log, )); diff --git a/beacon_node/src/cli.rs b/beacon_node/src/cli.rs index 71d7d68c45..72a5dda952 100644 --- a/beacon_node/src/cli.rs +++ b/beacon_node/src/cli.rs @@ -233,6 +233,14 @@ pub fn cli_app<'a, 'b>() -> App<'a, 'b> { .help("Disables the discv5 discovery protocol. The node will not search for new peers or participate in the discovery protocol.") .takes_value(false), ) + .arg( + Arg::with_name("disable-peer-scoring") + .long("disable-peer-scoring") + .help("Disables peer scoring in lighthouse. WARNING: This is a dev only flag is only meant to be used in local testing scenarios \ + Using this flag on a real network may cause your node to become eclipsed and see a different view of the network") + .takes_value(false) + .hidden(true), + ) .arg( Arg::with_name("trusted-peers") .long("trusted-peers") diff --git a/beacon_node/src/config.rs b/beacon_node/src/config.rs index 8799bdeeec..6ad1fea3b2 100644 --- a/beacon_node/src/config.rs +++ b/beacon_node/src/config.rs @@ -1008,6 +1008,10 @@ pub fn set_network_config( .collect::, _>>()?; } + if cli_args.is_present("disable-peer-scoring") { + config.disable_peer_scoring = true; + } + if let Some(trusted_peers_str) = cli_args.value_of("trusted-peers") { config.trusted_peers = trusted_peers_str .split(',') diff --git a/lighthouse/tests/beacon_node.rs b/lighthouse/tests/beacon_node.rs index a61d9cbf74..64646a6c57 100644 --- a/lighthouse/tests/beacon_node.rs +++ b/lighthouse/tests/beacon_node.rs @@ -1045,6 +1045,13 @@ fn disable_discovery_flag() { .with_config(|config| assert!(config.network.disable_discovery)); } #[test] +fn disable_peer_scoring_flag() { + CommandLineTest::new() + .flag("disable-peer-scoring", None) + .run_with_zero_port() + .with_config(|config| assert!(config.network.disable_peer_scoring)); +} +#[test] fn disable_upnp_flag() { CommandLineTest::new() .flag("disable-upnp", None) From 0e2e23e08859e0d241a76331c8bd4ba5aacd12bc Mon Sep 17 00:00:00 2001 From: Mac L Date: Wed, 12 Apr 2023 01:48:21 +0000 Subject: [PATCH 19/56] Remove the unused `ExecutionOptimisticForkVersionedResponse` type (#4160) ## Issue Addressed #4146 ## Proposed Changes Removes the `ExecutionOptimisticForkVersionedResponse` type and the associated Beacon API endpoint which is now deprecated. Also removes the test associated with the endpoint. --- beacon_node/http_api/tests/tests.rs | 15 -------- common/eth2/src/lib.rs | 17 --------- .../types/src/fork_versioned_response.rs | 37 ------------------- consensus/types/src/lib.rs | 4 +- 4 files changed, 1 insertion(+), 72 deletions(-) diff --git a/beacon_node/http_api/tests/tests.rs b/beacon_node/http_api/tests/tests.rs index 0ef27febea..a54f17e96f 100644 --- a/beacon_node/http_api/tests/tests.rs +++ b/beacon_node/http_api/tests/tests.rs @@ -1875,21 +1875,6 @@ impl ApiTester { .unwrap(); assert_eq!(result_ssz, expected, "{:?}", state_id); - // Check legacy v1 API. - let result_v1 = self - .client - .get_debug_beacon_states_v1(state_id.0) - .await - .unwrap(); - - if let (Some(json), Some(expected)) = (&result_v1, &expected) { - assert_eq!(json.version, None); - assert_eq!(json.data, *expected, "{:?}", state_id); - } else { - assert_eq!(result_v1, None); - assert_eq!(expected, None); - } - // Check that version headers are provided. let url = self .client diff --git a/common/eth2/src/lib.rs b/common/eth2/src/lib.rs index 1a7cf29790..e03cc2e9b0 100644 --- a/common/eth2/src/lib.rs +++ b/common/eth2/src/lib.rs @@ -1280,23 +1280,6 @@ impl BeaconNodeHttpClient { self.get_opt(path).await } - /// `GET v1/debug/beacon/states/{state_id}` (LEGACY) - pub async fn get_debug_beacon_states_v1( - &self, - state_id: StateId, - ) -> Result>>, Error> { - let mut path = self.eth_path(V1)?; - - path.path_segments_mut() - .map_err(|()| Error::InvalidUrl(self.server.clone()))? - .push("debug") - .push("beacon") - .push("states") - .push(&state_id.to_string()); - - self.get_opt(path).await - } - /// `GET debug/beacon/states/{state_id}` /// `-H "accept: application/octet-stream"` pub async fn get_debug_beacon_states_ssz( diff --git a/consensus/types/src/fork_versioned_response.rs b/consensus/types/src/fork_versioned_response.rs index 45df151eb4..2d97dc1219 100644 --- a/consensus/types/src/fork_versioned_response.rs +++ b/consensus/types/src/fork_versioned_response.rs @@ -45,43 +45,6 @@ where } } -#[derive(Debug, PartialEq, Clone, Serialize)] -pub struct ExecutionOptimisticForkVersionedResponse { - #[serde(skip_serializing_if = "Option::is_none")] - pub version: Option, - pub execution_optimistic: Option, - pub data: T, -} - -impl<'de, F> serde::Deserialize<'de> for ExecutionOptimisticForkVersionedResponse -where - F: ForkVersionDeserialize, -{ - fn deserialize(deserializer: D) -> Result - where - D: Deserializer<'de>, - { - #[derive(Deserialize)] - struct Helper { - version: Option, - execution_optimistic: Option, - data: serde_json::Value, - } - - let helper = Helper::deserialize(deserializer)?; - let data = match helper.version { - Some(fork_name) => F::deserialize_by_fork::<'de, D>(helper.data, fork_name)?, - None => serde_json::from_value(helper.data).map_err(serde::de::Error::custom)?, - }; - - Ok(ExecutionOptimisticForkVersionedResponse { - version: helper.version, - execution_optimistic: helper.execution_optimistic, - data, - }) - } -} - pub trait ForkVersionDeserialize: Sized + DeserializeOwned { fn deserialize_by_fork<'de, D: Deserializer<'de>>( value: Value, diff --git a/consensus/types/src/lib.rs b/consensus/types/src/lib.rs index 8240742441..aefb45490a 100644 --- a/consensus/types/src/lib.rs +++ b/consensus/types/src/lib.rs @@ -143,9 +143,7 @@ pub use crate::fork::Fork; pub use crate::fork_context::ForkContext; pub use crate::fork_data::ForkData; pub use crate::fork_name::{ForkName, InconsistentFork}; -pub use crate::fork_versioned_response::{ - ExecutionOptimisticForkVersionedResponse, ForkVersionDeserialize, ForkVersionedResponse, -}; +pub use crate::fork_versioned_response::{ForkVersionDeserialize, ForkVersionedResponse}; pub use crate::graffiti::{Graffiti, GRAFFITI_BYTES_LEN}; pub use crate::historical_batch::HistoricalBatch; pub use crate::indexed_attestation::IndexedAttestation; From 00cf5fc1848181ca69ed39e1447916b0a4387aba Mon Sep 17 00:00:00 2001 From: ethDreamer Date: Wed, 12 Apr 2023 01:48:22 +0000 Subject: [PATCH 20/56] Remove Redundant Trait Bound (#4169) I realized this is redundant while reasoning about how the `store` is implemented given the [definition of `ItemStore`](https://github.com/sigp/lighthouse/blob/v4.0.1/beacon_node/store/src/lib.rs#L107) ```rust pub trait ItemStore: KeyValueStore + Sync + Send + Sized + 'static { ... } ``` --- beacon_node/store/src/reconstruct.rs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/beacon_node/store/src/reconstruct.rs b/beacon_node/store/src/reconstruct.rs index c939fd3f51..c399f1b457 100644 --- a/beacon_node/store/src/reconstruct.rs +++ b/beacon_node/store/src/reconstruct.rs @@ -1,6 +1,6 @@ //! Implementation of historic state reconstruction (given complete block history). use crate::hot_cold_store::{HotColdDB, HotColdDBError}; -use crate::{Error, ItemStore, KeyValueStore}; +use crate::{Error, ItemStore}; use itertools::{process_results, Itertools}; use slog::info; use state_processing::{ @@ -13,8 +13,8 @@ use types::{EthSpec, Hash256}; impl HotColdDB where E: EthSpec, - Hot: KeyValueStore + ItemStore, - Cold: KeyValueStore + ItemStore, + Hot: ItemStore, + Cold: ItemStore, { pub fn reconstruct_historic_states(self: &Arc) -> Result<(), Error> { let mut anchor = if let Some(anchor) = self.get_anchor_info() { From b90c0c3fb1badd86247b8a338b44e7e17e134a85 Mon Sep 17 00:00:00 2001 From: Michael Sproul Date: Thu, 13 Apr 2023 07:05:01 +0000 Subject: [PATCH 21/56] Make re-org strat more cautious and add more config (#4151) ## Proposed Changes This change attempts to prevent failed re-orgs by: 1. Lowering the re-org cutoff from 2s to 1s. This is informed by a failed re-org attempted by @yorickdowne's node. The failed block was requested in the 1.5-2s window due to a Vouch failure, and failed to propagate to the majority of the network before the attestation deadline at 4s. 2. Allow users to adjust their re-org cutoff depending on observed network conditions and their risk profile. The static 2 second cutoff was too rigid. 3. Add a `--proposer-reorg-disallowed-offsets` flag which can be used to prohibit reorgs at certain slots. This is intended to help workaround an issue whereby reorging blocks at slot 1 are currently taking ~1.6s to propagate on gossip rather than ~500ms. This is suspected to be due to a cache miss in current versions of Prysm, which should be fixed in their next release. ## Additional Info I'm of two minds about removing the `shuffling_stable` check which checks for blocks at slot 0 in the epoch. If we removed it users would be able to configure Lighthouse to try reorging at slot 0, which likely wouldn't work very well due to interactions with the proposer index cache. I think we could leave it for now and revisit it later. --- beacon_node/beacon_chain/src/beacon_chain.rs | 15 ++---- beacon_node/beacon_chain/src/builder.rs | 11 ++++- beacon_node/beacon_chain/src/chain_config.rs | 24 +++++++++- .../http_api/tests/interactive_tests.rs | 35 +++++++++++++- beacon_node/src/cli.rs | 22 +++++++++ beacon_node/src/config.rs | 19 +++++++- book/src/late-block-re-orgs.md | 9 ++++ consensus/fork_choice/src/fork_choice.rs | 8 +++- consensus/proto_array/src/error.rs | 1 + consensus/proto_array/src/lib.rs | 4 +- .../src/proto_array_fork_choice.rs | 40 ++++++++++++++++ lighthouse/tests/beacon_node.rs | 48 +++++++++++++++++++ 12 files changed, 218 insertions(+), 18 deletions(-) diff --git a/beacon_node/beacon_chain/src/beacon_chain.rs b/beacon_node/beacon_chain/src/beacon_chain.rs index d3c391e4ed..283dcf96c0 100644 --- a/beacon_node/beacon_chain/src/beacon_chain.rs +++ b/beacon_node/beacon_chain/src/beacon_chain.rs @@ -106,7 +106,6 @@ use task_executor::{ShutdownReason, TaskExecutor}; use tokio_stream::Stream; use tree_hash::TreeHash; use types::beacon_state::CloneConfig; -use types::consts::merge::INTERVALS_PER_SLOT; use types::*; pub type ForkChoiceError = fork_choice::Error; @@ -128,12 +127,6 @@ pub const VALIDATOR_PUBKEY_CACHE_LOCK_TIMEOUT: Duration = Duration::from_secs(1) /// The timeout for the eth1 finalization cache pub const ETH1_FINALIZATION_CACHE_LOCK_TIMEOUT: Duration = Duration::from_millis(200); -/// The latest delay from the start of the slot at which to attempt a 1-slot re-org. -fn max_re_org_slot_delay(seconds_per_slot: u64) -> Duration { - // Allow at least half of the attestation deadline for the block to propagate. - Duration::from_secs(seconds_per_slot) / INTERVALS_PER_SLOT as u32 / 2 -} - // These keys are all zero because they get stored in different columns, see `DBColumn` type. pub const BEACON_CHAIN_DB_KEY: Hash256 = Hash256::zero(); pub const OP_POOL_DB_KEY: Hash256 = Hash256::zero(); @@ -3761,7 +3754,7 @@ impl BeaconChain { // 1. It seems we have time to propagate and still receive the proposer boost. // 2. The current head block was seen late. // 3. The `get_proposer_head` conditions from fork choice pass. - let proposing_on_time = slot_delay < max_re_org_slot_delay(self.spec.seconds_per_slot); + let proposing_on_time = slot_delay < self.config.re_org_cutoff(self.spec.seconds_per_slot); if !proposing_on_time { debug!( self.log, @@ -3791,6 +3784,7 @@ impl BeaconChain { slot, canonical_head, re_org_threshold, + &self.config.re_org_disallowed_offsets, self.config.re_org_max_epochs_since_finalization, ) .map_err(|e| match e { @@ -4069,6 +4063,7 @@ impl BeaconChain { .get_preliminary_proposer_head( head_block_root, re_org_threshold, + &self.config.re_org_disallowed_offsets, self.config.re_org_max_epochs_since_finalization, ) .map_err(|e| e.map_inner_error(Error::ProposerHeadForkChoiceError))?; @@ -4079,7 +4074,7 @@ impl BeaconChain { let re_org_block_slot = head_slot + 1; let fork_choice_slot = info.current_slot; - // If a re-orging proposal isn't made by the `max_re_org_slot_delay` then we give up + // If a re-orging proposal isn't made by the `re_org_cutoff` then we give up // and allow the fork choice update for the canonical head through so that we may attest // correctly. let current_slot_ok = if head_slot == fork_choice_slot { @@ -4090,7 +4085,7 @@ impl BeaconChain { .and_then(|slot_start| { let now = self.slot_clock.now_duration()?; let slot_delay = now.saturating_sub(slot_start); - Some(slot_delay <= max_re_org_slot_delay(self.spec.seconds_per_slot)) + Some(slot_delay <= self.config.re_org_cutoff(self.spec.seconds_per_slot)) }) .unwrap_or(false) } else { diff --git a/beacon_node/beacon_chain/src/builder.rs b/beacon_node/beacon_chain/src/builder.rs index 8ad874ea09..6ee97a95c1 100644 --- a/beacon_node/beacon_chain/src/builder.rs +++ b/beacon_node/beacon_chain/src/builder.rs @@ -22,7 +22,7 @@ use fork_choice::{CountUnrealized, ForkChoice, ResetPayloadStatuses}; use futures::channel::mpsc::Sender; use operation_pool::{OperationPool, PersistedOperationPool}; use parking_lot::RwLock; -use proto_array::ReOrgThreshold; +use proto_array::{DisallowedReOrgOffsets, ReOrgThreshold}; use slasher::Slasher; use slog::{crit, error, info, Logger}; use slot_clock::{SlotClock, TestingSlotClock}; @@ -175,6 +175,15 @@ where self } + /// Sets the proposer re-org disallowed offsets list. + pub fn proposer_re_org_disallowed_offsets( + mut self, + disallowed_offsets: DisallowedReOrgOffsets, + ) -> Self { + self.chain_config.re_org_disallowed_offsets = disallowed_offsets; + self + } + /// Sets the store (database). /// /// Should generally be called early in the build chain. diff --git a/beacon_node/beacon_chain/src/chain_config.rs b/beacon_node/beacon_chain/src/chain_config.rs index c72c3d2cd4..9921435313 100644 --- a/beacon_node/beacon_chain/src/chain_config.rs +++ b/beacon_node/beacon_chain/src/chain_config.rs @@ -1,10 +1,12 @@ -pub use proto_array::ReOrgThreshold; +pub use proto_array::{DisallowedReOrgOffsets, ReOrgThreshold}; use serde_derive::{Deserialize, Serialize}; use std::time::Duration; use types::{Checkpoint, Epoch}; pub const DEFAULT_RE_ORG_THRESHOLD: ReOrgThreshold = ReOrgThreshold(20); pub const DEFAULT_RE_ORG_MAX_EPOCHS_SINCE_FINALIZATION: Epoch = Epoch::new(2); +/// Default to 1/12th of the slot, which is 1 second on mainnet. +pub const DEFAULT_RE_ORG_CUTOFF_DENOMINATOR: u32 = 12; pub const DEFAULT_FORK_CHOICE_BEFORE_PROPOSAL_TIMEOUT: u64 = 250; /// Default fraction of a slot lookahead for payload preparation (12/3 = 4 seconds on mainnet). @@ -34,6 +36,13 @@ pub struct ChainConfig { pub re_org_threshold: Option, /// Maximum number of epochs since finalization for attempting a proposer re-org. pub re_org_max_epochs_since_finalization: Epoch, + /// Maximum delay after the start of the slot at which to propose a reorging block. + pub re_org_cutoff_millis: Option, + /// Additional epoch offsets at which re-orging block proposals are not permitted. + /// + /// By default this list is empty, but it can be useful for reacting to network conditions, e.g. + /// slow gossip of re-org blocks at slot 1 in the epoch. + pub re_org_disallowed_offsets: DisallowedReOrgOffsets, /// Number of milliseconds to wait for fork choice before proposing a block. /// /// If set to 0 then block proposal will not wait for fork choice at all. @@ -82,6 +91,8 @@ impl Default for ChainConfig { max_network_size: 10 * 1_048_576, // 10M re_org_threshold: Some(DEFAULT_RE_ORG_THRESHOLD), re_org_max_epochs_since_finalization: DEFAULT_RE_ORG_MAX_EPOCHS_SINCE_FINALIZATION, + re_org_cutoff_millis: None, + re_org_disallowed_offsets: DisallowedReOrgOffsets::default(), fork_choice_before_proposal_timeout_ms: DEFAULT_FORK_CHOICE_BEFORE_PROPOSAL_TIMEOUT, // Builder fallback configs that are set in `clap` will override these. builder_fallback_skips: 3, @@ -100,3 +111,14 @@ impl Default for ChainConfig { } } } + +impl ChainConfig { + /// The latest delay from the start of the slot at which to attempt a 1-slot re-org. + pub fn re_org_cutoff(&self, seconds_per_slot: u64) -> Duration { + self.re_org_cutoff_millis + .map(Duration::from_millis) + .unwrap_or_else(|| { + Duration::from_secs(seconds_per_slot) / DEFAULT_RE_ORG_CUTOFF_DENOMINATOR + }) + } +} diff --git a/beacon_node/http_api/tests/interactive_tests.rs b/beacon_node/http_api/tests/interactive_tests.rs index 9763b8037b..da92419744 100644 --- a/beacon_node/http_api/tests/interactive_tests.rs +++ b/beacon_node/http_api/tests/interactive_tests.rs @@ -1,6 +1,6 @@ //! Generic tests that make use of the (newer) `InteractiveApiTester` use beacon_chain::{ - chain_config::ReOrgThreshold, + chain_config::{DisallowedReOrgOffsets, ReOrgThreshold}, test_utils::{AttestationStrategy, BlockStrategy, SyncCommitteeStrategy}, }; use eth2::types::DepositContractData; @@ -110,6 +110,8 @@ pub struct ReOrgTest { misprediction: bool, /// Whether to expect withdrawals to change on epoch boundaries. expect_withdrawals_change_on_epoch: bool, + /// Epoch offsets to avoid proposing reorg blocks at. + disallowed_offsets: Vec, } impl Default for ReOrgTest { @@ -127,6 +129,7 @@ impl Default for ReOrgTest { should_re_org: true, misprediction: false, expect_withdrawals_change_on_epoch: false, + disallowed_offsets: vec![], } } } @@ -238,6 +241,32 @@ pub async fn proposer_boost_re_org_head_distance() { .await; } +// Check that a re-org at a disallowed offset fails. +#[tokio::test(flavor = "multi_thread", worker_threads = 2)] +pub async fn proposer_boost_re_org_disallowed_offset() { + let offset = 4; + proposer_boost_re_org_test(ReOrgTest { + head_slot: Slot::new(E::slots_per_epoch() + offset - 1), + disallowed_offsets: vec![offset], + should_re_org: false, + ..Default::default() + }) + .await; +} + +// Check that a re-org at the *only* allowed offset succeeds. +#[tokio::test(flavor = "multi_thread", worker_threads = 2)] +pub async fn proposer_boost_re_org_disallowed_offset_exact() { + let offset = 4; + let disallowed_offsets = (0..E::slots_per_epoch()).filter(|o| *o != offset).collect(); + proposer_boost_re_org_test(ReOrgTest { + head_slot: Slot::new(E::slots_per_epoch() + offset - 1), + disallowed_offsets, + ..Default::default() + }) + .await; +} + #[tokio::test(flavor = "multi_thread", worker_threads = 2)] pub async fn proposer_boost_re_org_very_unhealthy() { proposer_boost_re_org_test(ReOrgTest { @@ -286,6 +315,7 @@ pub async fn proposer_boost_re_org_test( should_re_org, misprediction, expect_withdrawals_change_on_epoch, + disallowed_offsets, }: ReOrgTest, ) { assert!(head_slot > 0); @@ -320,6 +350,9 @@ pub async fn proposer_boost_re_org_test( .proposer_re_org_max_epochs_since_finalization(Epoch::new( max_epochs_since_finalization, )) + .proposer_re_org_disallowed_offsets( + DisallowedReOrgOffsets::new::(disallowed_offsets).unwrap(), + ) })), ) .await; diff --git a/beacon_node/src/cli.rs b/beacon_node/src/cli.rs index 72a5dda952..8a5c33ac0f 100644 --- a/beacon_node/src/cli.rs +++ b/beacon_node/src/cli.rs @@ -885,6 +885,28 @@ pub fn cli_app<'a, 'b>() -> App<'a, 'b> { allowed. Default: 2") .conflicts_with("disable-proposer-reorgs") ) + .arg( + Arg::with_name("proposer-reorg-cutoff") + .long("proposer-reorg-cutoff") + .value_name("MILLISECONDS") + .help("Maximum delay after the start of the slot at which to propose a reorging \ + block. Lower values can prevent failed reorgs by ensuring the block has \ + ample time to propagate and be processed by the network. The default is \ + 1/12th of a slot (1 second on mainnet)") + .conflicts_with("disable-proposer-reorgs") + ) + .arg( + Arg::with_name("proposer-reorg-disallowed-offsets") + .long("proposer-reorg-disallowed-offsets") + .value_name("N1,N2,...") + .help("Comma-separated list of integer offsets which can be used to avoid \ + proposing reorging blocks at certain slots. An offset of N means that \ + reorging proposals will not be attempted at any slot such that \ + `slot % SLOTS_PER_EPOCH == N`. By default only re-orgs at offset 0 will be \ + avoided. Any offsets supplied with this flag will impose additional \ + restrictions.") + .conflicts_with("disable-proposer-reorgs") + ) .arg( Arg::with_name("prepare-payload-lookahead") .long("prepare-payload-lookahead") diff --git a/beacon_node/src/config.rs b/beacon_node/src/config.rs index 6ad1fea3b2..55664897e8 100644 --- a/beacon_node/src/config.rs +++ b/beacon_node/src/config.rs @@ -1,5 +1,5 @@ use beacon_chain::chain_config::{ - ReOrgThreshold, DEFAULT_PREPARE_PAYLOAD_LOOKAHEAD_FACTOR, + DisallowedReOrgOffsets, ReOrgThreshold, DEFAULT_PREPARE_PAYLOAD_LOOKAHEAD_FACTOR, DEFAULT_RE_ORG_MAX_EPOCHS_SINCE_FINALIZATION, DEFAULT_RE_ORG_THRESHOLD, }; use clap::ArgMatches; @@ -686,6 +686,23 @@ pub fn get_config( client_config.chain.re_org_max_epochs_since_finalization = clap_utils::parse_optional(cli_args, "proposer-reorg-epochs-since-finalization")? .unwrap_or(DEFAULT_RE_ORG_MAX_EPOCHS_SINCE_FINALIZATION); + client_config.chain.re_org_cutoff_millis = + clap_utils::parse_optional(cli_args, "proposer-reorg-cutoff")?; + + if let Some(disallowed_offsets_str) = + clap_utils::parse_optional::(cli_args, "proposer-reorg-disallowed-offsets")? + { + let disallowed_offsets = disallowed_offsets_str + .split(',') + .map(|s| { + s.parse() + .map_err(|e| format!("invalid disallowed-offsets: {e:?}")) + }) + .collect::, _>>()?; + client_config.chain.re_org_disallowed_offsets = + DisallowedReOrgOffsets::new::(disallowed_offsets) + .map_err(|e| format!("invalid disallowed-offsets: {e:?}"))?; + } } // Note: This overrides any previous flags that enable this option. diff --git a/book/src/late-block-re-orgs.md b/book/src/late-block-re-orgs.md index 0014af8f15..fc4530589d 100644 --- a/book/src/late-block-re-orgs.md +++ b/book/src/late-block-re-orgs.md @@ -14,6 +14,15 @@ There are three flags which control the re-orging behaviour: * `--proposer-reorg-threshold N`: attempt to orphan blocks with less than N% of the committee vote. If this parameter isn't set then N defaults to 20% when the feature is enabled. * `--proposer-reorg-epochs-since-finalization N`: only attempt to re-org late blocks when the number of epochs since finalization is less than or equal to N. The default is 2 epochs, meaning re-orgs will only be attempted when the chain is finalizing optimally. +* `--proposer-reorg-cutoff T`: only attempt to re-org late blocks when the proposal is being made + before T milliseconds into the slot. Delays between the validator client and the beacon node can + cause some blocks to be requested later than the start of the slot, which makes them more likely + to fail. The default cutoff is 1000ms on mainnet, which gives blocks 3000ms to be signed and + propagated before the attestation deadline at 4000ms. +* `--proposer-reorg-disallowed-offsets N1,N2,N3...`: Prohibit Lighthouse from attempting to reorg at + specific offsets in each epoch. A disallowed offset `N` prevents reorging blocks from being + proposed at any `slot` such that `slot % SLOTS_PER_EPOCH == N`. The value to this flag is a + comma-separated list of integer offsets. All flags should be applied to `lighthouse bn`. The default configuration is recommended as it balances the chance of the re-org succeeding against the chance of failure due to attestations diff --git a/consensus/fork_choice/src/fork_choice.rs b/consensus/fork_choice/src/fork_choice.rs index b9d2046761..e6c46e83e7 100644 --- a/consensus/fork_choice/src/fork_choice.rs +++ b/consensus/fork_choice/src/fork_choice.rs @@ -1,7 +1,7 @@ use crate::{ForkChoiceStore, InvalidationOperation}; use proto_array::{ - Block as ProtoBlock, ExecutionStatus, ProposerHeadError, ProposerHeadInfo, - ProtoArrayForkChoice, ReOrgThreshold, + Block as ProtoBlock, DisallowedReOrgOffsets, ExecutionStatus, ProposerHeadError, + ProposerHeadInfo, ProtoArrayForkChoice, ReOrgThreshold, }; use slog::{crit, debug, warn, Logger}; use ssz_derive::{Decode, Encode}; @@ -533,6 +533,7 @@ where current_slot: Slot, canonical_head: Hash256, re_org_threshold: ReOrgThreshold, + disallowed_offsets: &DisallowedReOrgOffsets, max_epochs_since_finalization: Epoch, ) -> Result>> { // Ensure that fork choice has already been updated for the current slot. This prevents @@ -564,6 +565,7 @@ where canonical_head, self.fc_store.justified_balances(), re_org_threshold, + disallowed_offsets, max_epochs_since_finalization, ) .map_err(ProposerHeadError::convert_inner_error) @@ -573,6 +575,7 @@ where &self, canonical_head: Hash256, re_org_threshold: ReOrgThreshold, + disallowed_offsets: &DisallowedReOrgOffsets, max_epochs_since_finalization: Epoch, ) -> Result>> { let current_slot = self.fc_store.get_current_slot(); @@ -582,6 +585,7 @@ where canonical_head, self.fc_store.justified_balances(), re_org_threshold, + disallowed_offsets, max_epochs_since_finalization, ) .map_err(ProposerHeadError::convert_inner_error) diff --git a/consensus/proto_array/src/error.rs b/consensus/proto_array/src/error.rs index c55739da79..1fe45fd0f1 100644 --- a/consensus/proto_array/src/error.rs +++ b/consensus/proto_array/src/error.rs @@ -50,6 +50,7 @@ pub enum Error { block_root: Hash256, parent_root: Hash256, }, + InvalidEpochOffset(u64), Arith(ArithError), } diff --git a/consensus/proto_array/src/lib.rs b/consensus/proto_array/src/lib.rs index e84139345a..481daba47e 100644 --- a/consensus/proto_array/src/lib.rs +++ b/consensus/proto_array/src/lib.rs @@ -8,8 +8,8 @@ mod ssz_container; pub use crate::justified_balances::JustifiedBalances; pub use crate::proto_array::{calculate_committee_fraction, InvalidationOperation}; pub use crate::proto_array_fork_choice::{ - Block, DoNotReOrg, ExecutionStatus, ProposerHeadError, ProposerHeadInfo, ProtoArrayForkChoice, - ReOrgThreshold, + Block, DisallowedReOrgOffsets, DoNotReOrg, ExecutionStatus, ProposerHeadError, + ProposerHeadInfo, ProtoArrayForkChoice, ReOrgThreshold, }; pub use error::Error; diff --git a/consensus/proto_array/src/proto_array_fork_choice.rs b/consensus/proto_array/src/proto_array_fork_choice.rs index 6db1ac132f..d376e62e8f 100644 --- a/consensus/proto_array/src/proto_array_fork_choice.rs +++ b/consensus/proto_array/src/proto_array_fork_choice.rs @@ -250,6 +250,9 @@ pub enum DoNotReOrg { ParentDistance, HeadDistance, ShufflingUnstable, + DisallowedOffset { + offset: u64, + }, JustificationAndFinalizationNotCompetitive, ChainNotFinalizing { epochs_since_finalization: u64, @@ -271,6 +274,9 @@ impl std::fmt::Display for DoNotReOrg { Self::ParentDistance => write!(f, "parent too far from head"), Self::HeadDistance => write!(f, "head too far from current slot"), Self::ShufflingUnstable => write!(f, "shuffling unstable at epoch boundary"), + Self::DisallowedOffset { offset } => { + write!(f, "re-orgs disabled at offset {offset}") + } Self::JustificationAndFinalizationNotCompetitive => { write!(f, "justification or finalization not competitive") } @@ -304,6 +310,31 @@ impl std::fmt::Display for DoNotReOrg { #[serde(transparent)] pub struct ReOrgThreshold(pub u64); +/// New-type for disallowed re-org slots. +#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)] +#[serde(transparent)] +pub struct DisallowedReOrgOffsets { + // Vecs are faster than hashmaps for small numbers of items. + offsets: Vec, +} + +impl Default for DisallowedReOrgOffsets { + fn default() -> Self { + DisallowedReOrgOffsets { offsets: vec![0] } + } +} + +impl DisallowedReOrgOffsets { + pub fn new(offsets: Vec) -> Result { + for &offset in &offsets { + if offset >= E::slots_per_epoch() { + return Err(Error::InvalidEpochOffset(offset)); + } + } + Ok(Self { offsets }) + } +} + #[derive(PartialEq)] pub struct ProtoArrayForkChoice { pub(crate) proto_array: ProtoArray, @@ -460,6 +491,7 @@ impl ProtoArrayForkChoice { canonical_head: Hash256, justified_balances: &JustifiedBalances, re_org_threshold: ReOrgThreshold, + disallowed_offsets: &DisallowedReOrgOffsets, max_epochs_since_finalization: Epoch, ) -> Result> { let info = self.get_proposer_head_info::( @@ -467,6 +499,7 @@ impl ProtoArrayForkChoice { canonical_head, justified_balances, re_org_threshold, + disallowed_offsets, max_epochs_since_finalization, )?; @@ -501,6 +534,7 @@ impl ProtoArrayForkChoice { canonical_head: Hash256, justified_balances: &JustifiedBalances, re_org_threshold: ReOrgThreshold, + disallowed_offsets: &DisallowedReOrgOffsets, max_epochs_since_finalization: Epoch, ) -> Result> { let mut nodes = self @@ -545,6 +579,12 @@ impl ProtoArrayForkChoice { return Err(DoNotReOrg::ShufflingUnstable.into()); } + // Check allowed slot offsets. + let offset = (re_org_block_slot % E::slots_per_epoch()).as_u64(); + if disallowed_offsets.offsets.contains(&offset) { + return Err(DoNotReOrg::DisallowedOffset { offset }.into()); + } + // Check FFG. let ffg_competitive = parent_node.unrealized_justified_checkpoint == head_node.unrealized_justified_checkpoint diff --git a/lighthouse/tests/beacon_node.rs b/lighthouse/tests/beacon_node.rs index 64646a6c57..c116979366 100644 --- a/lighthouse/tests/beacon_node.rs +++ b/lighthouse/tests/beacon_node.rs @@ -2,6 +2,7 @@ use beacon_node::ClientConfig as Config; use crate::exec::{CommandLineTestExec, CompletedTest}; use beacon_node::beacon_chain::chain_config::{ + DisallowedReOrgOffsets, DEFAULT_RE_ORG_CUTOFF_DENOMINATOR, DEFAULT_RE_ORG_MAX_EPOCHS_SINCE_FINALIZATION, DEFAULT_RE_ORG_THRESHOLD, }; use eth1::Eth1Endpoint; @@ -1888,6 +1889,10 @@ fn enable_proposer_re_orgs_default() { config.chain.re_org_max_epochs_since_finalization, DEFAULT_RE_ORG_MAX_EPOCHS_SINCE_FINALIZATION, ); + assert_eq!( + config.chain.re_org_cutoff(12), + Duration::from_secs(12) / DEFAULT_RE_ORG_CUTOFF_DENOMINATOR + ); }); } @@ -1920,6 +1925,49 @@ fn proposer_re_org_max_epochs_since_finalization() { }); } +#[test] +fn proposer_re_org_cutoff() { + CommandLineTest::new() + .flag("proposer-reorg-cutoff", Some("500")) + .run_with_zero_port() + .with_config(|config| { + assert_eq!(config.chain.re_org_cutoff(12), Duration::from_millis(500)) + }); +} + +#[test] +fn proposer_re_org_disallowed_offsets_default() { + CommandLineTest::new() + .run_with_zero_port() + .with_config(|config| { + assert_eq!( + config.chain.re_org_disallowed_offsets, + DisallowedReOrgOffsets::new::(vec![0]).unwrap() + ) + }); +} + +#[test] +fn proposer_re_org_disallowed_offsets_override() { + CommandLineTest::new() + .flag("--proposer-reorg-disallowed-offsets", Some("1,2,3")) + .run_with_zero_port() + .with_config(|config| { + assert_eq!( + config.chain.re_org_disallowed_offsets, + DisallowedReOrgOffsets::new::(vec![1, 2, 3]).unwrap() + ) + }); +} + +#[test] +#[should_panic] +fn proposer_re_org_disallowed_offsets_invalid() { + CommandLineTest::new() + .flag("--proposer-reorg-disallowed-offsets", Some("32,33,34")) + .run_with_zero_port(); +} + #[test] fn monitoring_endpoint() { CommandLineTest::new() From a3669abac593e6233709d8a0ae7566d04c0b4cd5 Mon Sep 17 00:00:00 2001 From: Michael Sproul Date: Thu, 13 Apr 2023 07:05:02 +0000 Subject: [PATCH 22/56] Avoid processing redundant RPC blocks (#4179) ## Proposed Changes We already make some attempts to avoid processing RPC blocks when a block from the same proposer is already being processed through gossip. This PR strengthens that guarantee by using the existing cache for `observed_block_producers` to inform whether an RPC block's processing should be delayed. --- beacon_node/beacon_chain/src/beacon_chain.rs | 2 +- .../work_reprocessing_queue.rs | 4 +- .../beacon_processor/worker/sync_methods.rs | 46 +++++++++++++++++++ 3 files changed, 49 insertions(+), 3 deletions(-) diff --git a/beacon_node/beacon_chain/src/beacon_chain.rs b/beacon_node/beacon_chain/src/beacon_chain.rs index 283dcf96c0..08a88f5db9 100644 --- a/beacon_node/beacon_chain/src/beacon_chain.rs +++ b/beacon_node/beacon_chain/src/beacon_chain.rs @@ -352,7 +352,7 @@ pub struct BeaconChain { /// in recent epochs. pub(crate) observed_sync_aggregators: RwLock>, /// Maintains a record of which validators have proposed blocks for each slot. - pub(crate) observed_block_producers: RwLock>, + pub observed_block_producers: RwLock>, /// Maintains a record of which validators have submitted voluntary exits. pub(crate) observed_voluntary_exits: Mutex>, /// Maintains a record of which validators we've seen proposer slashings for. diff --git a/beacon_node/network/src/beacon_processor/work_reprocessing_queue.rs b/beacon_node/network/src/beacon_processor/work_reprocessing_queue.rs index 9f04d99725..427be6d513 100644 --- a/beacon_node/network/src/beacon_processor/work_reprocessing_queue.rs +++ b/beacon_node/network/src/beacon_processor/work_reprocessing_queue.rs @@ -56,7 +56,7 @@ pub const QUEUED_ATTESTATION_DELAY: Duration = Duration::from_secs(12); pub const QUEUED_LIGHT_CLIENT_UPDATE_DELAY: Duration = Duration::from_secs(12); /// For how long to queue rpc blocks before sending them back for reprocessing. -pub const QUEUED_RPC_BLOCK_DELAY: Duration = Duration::from_secs(3); +pub const QUEUED_RPC_BLOCK_DELAY: Duration = Duration::from_secs(4); /// Set an arbitrary upper-bound on the number of queued blocks to avoid DoS attacks. The fact that /// we signature-verify blocks before putting them in the queue *should* protect against this, but @@ -521,7 +521,7 @@ impl ReprocessQueue { return; } - // Queue the block for 1/4th of a slot + // Queue the block for 1/3rd of a slot self.rpc_block_delay_queue .insert(rpc_block, QUEUED_RPC_BLOCK_DELAY); } diff --git a/beacon_node/network/src/beacon_processor/worker/sync_methods.rs b/beacon_node/network/src/beacon_processor/worker/sync_methods.rs index e8182a1d5a..61ecc30d41 100644 --- a/beacon_node/network/src/beacon_processor/worker/sync_methods.rs +++ b/beacon_node/network/src/beacon_processor/worker/sync_methods.rs @@ -83,6 +83,52 @@ impl Worker { return; } }; + // Check if a block from this proposer is already known. If so, defer processing until later + // to avoid wasting time processing duplicates. + let proposal_already_known = self + .chain + .observed_block_producers + .read() + .proposer_has_been_observed(block.message()) + .map_err(|e| { + error!( + self.log, + "Failed to check observed proposers"; + "error" => ?e, + "source" => "rpc", + "block_root" => %block_root + ); + }) + .unwrap_or(true); + if proposal_already_known { + debug!( + self.log, + "Delaying processing of duplicate RPC block"; + "block_root" => ?block_root, + "proposer" => block.message().proposer_index(), + "slot" => block.slot() + ); + + // Send message to work reprocess queue to retry the block + let reprocess_msg = ReprocessQueueMessage::RpcBlock(QueuedRpcBlock { + block_root, + block: block.clone(), + process_type, + seen_timestamp, + should_process: true, + }); + + if reprocess_tx.try_send(reprocess_msg).is_err() { + error!( + self.log, + "Failed to inform block import"; + "source" => "rpc", + "block_root" => %block_root + ); + } + return; + } + let slot = block.slot(); let parent_root = block.message().parent_root(); let result = self From 56dba963195b9a0d0831a94013ba4e31aaa7a57b Mon Sep 17 00:00:00 2001 From: chonghe <44791194+chong-he@users.noreply.github.com> Date: Fri, 14 Apr 2023 01:11:45 +0000 Subject: [PATCH 23/56] Update Lighthouse book and some FAQs (#4178) ## Issue Addressed Updated Lighthouse book on Section 2 and added some FAQs ## Proposed Changes All changes are made in the book/src .md files. ## Additional Info Please provide any additional information. For example, future considerations or information useful for reviewers. Co-authored-by: chonghe Co-authored-by: Michael Sproul --- book/src/SUMMARY.md | 1 - book/src/docker.md | 41 +++++++++++++------------ book/src/faq.md | 50 ++++++++++++++++++++++++++++++- book/src/installation-binaries.md | 21 +++++++------ book/src/installation-source.md | 45 +++++++++++++++++++++++----- book/src/installation.md | 29 ++++++++++-------- book/src/pi.md | 27 +++++++++-------- book/src/system-requirements.md | 23 -------------- 8 files changed, 149 insertions(+), 88 deletions(-) delete mode 100644 book/src/system-requirements.md diff --git a/book/src/SUMMARY.md b/book/src/SUMMARY.md index 7def1821dd..ff5c1e9805 100644 --- a/book/src/SUMMARY.md +++ b/book/src/SUMMARY.md @@ -2,7 +2,6 @@ * [Introduction](./intro.md) * [Installation](./installation.md) - * [System Requirements](./system-requirements.md) * [Pre-Built Binaries](./installation-binaries.md) * [Docker](./docker.md) * [Build from Source](./installation-source.md) diff --git a/book/src/docker.md b/book/src/docker.md index 7484f9f525..d67b084da6 100644 --- a/book/src/docker.md +++ b/book/src/docker.md @@ -16,21 +16,18 @@ way to run Lighthouse without building the image yourself. Obtain the latest image with: ```bash -$ docker pull sigp/lighthouse +docker pull sigp/lighthouse ``` Download and test the image with: ```bash -$ docker run sigp/lighthouse lighthouse --version +docker run sigp/lighthouse lighthouse --version ``` If you can see the latest [Lighthouse release](https://github.com/sigp/lighthouse/releases) version (see example below), then you've successfully installed Lighthouse via Docker. -> Pro tip: try the `latest-modern` image for a 20-30% speed-up! See [Available Docker -> Images](#available-docker-images) below. - ### Example Version Output ``` @@ -38,6 +35,9 @@ Lighthouse vx.x.xx-xxxxxxxxx BLS Library: xxxx-xxxxxxx ``` +> Pro tip: try the `latest-modern` image for a 20-30% speed-up! See [Available Docker +> Images](#available-docker-images) below. + ### Available Docker Images There are several images available on Docker Hub. @@ -47,11 +47,10 @@ Lighthouse with optimizations enabled. If you are running on older hardware then `latest` image bundles a _portable_ version of Lighthouse which is slower but with better hardware compatibility (see [Portability](./installation-binaries.md#portability)). -To install a specific tag (in this case `latest-modern`) add the tag name to your `docker` commands -like so: +To install a specific tag (in this case `latest-modern`), add the tag name to your `docker` commands: ``` -$ docker pull sigp/lighthouse:latest-modern +docker pull sigp/lighthouse:latest-modern ``` Image tags follow this format: @@ -65,17 +64,17 @@ The `version` is: * `vX.Y.Z` for a tagged Lighthouse release, e.g. `v2.1.1` * `latest` for the `stable` branch (latest release) or `unstable` branch -The `stability` is: - -* `-unstable` for the `unstable` branch -* empty for a tagged release or the `stable` branch - The `arch` is: * `-amd64` for x86_64, e.g. Intel, AMD * `-arm64` for aarch64, e.g. Raspberry Pi 4 * empty for a multi-arch image (works on either `amd64` or `arm64` platforms) +The `stability` is: + +* `-unstable` for the `unstable` branch +* empty for a tagged release or the `stable` branch + The `modernity` is: * `-modern` for optimized builds @@ -99,13 +98,13 @@ To build the image from source, navigate to the root of the repository and run: ```bash -$ docker build . -t lighthouse:local +docker build . -t lighthouse:local ``` The build will likely take several minutes. Once it's built, test it with: ```bash -$ docker run lighthouse:local lighthouse --help +docker run lighthouse:local lighthouse --help ``` ## Using the Docker image @@ -113,12 +112,12 @@ $ docker run lighthouse:local lighthouse --help You can run a Docker beacon node with the following command: ```bash -$ docker run -p 9000:9000/tcp -p 9000:9000/udp -p 127.0.0.1:5052:5052 -v $HOME/.lighthouse:/root/.lighthouse sigp/lighthouse lighthouse --network mainnet beacon --http --http-address 0.0.0.0 +docker run -p 9000:9000/tcp -p 9000:9000/udp -p 127.0.0.1:5052:5052 -v $HOME/.lighthouse:/root/.lighthouse sigp/lighthouse lighthouse --network mainnet beacon --http --http-address 0.0.0.0 ``` -> To join the Prater testnet, use `--network prater` instead. +> To join the Goerli testnet, use `--network goerli` instead. -> The `-p` and `-v` and values are described below. +> The `-v` (Volumes) and `-p` (Ports) and values are described below. ### Volumes @@ -131,7 +130,7 @@ The following example runs a beacon node with the data directory mapped to the users home directory: ```bash -$ docker run -v $HOME/.lighthouse:/root/.lighthouse sigp/lighthouse lighthouse beacon +docker run -v $HOME/.lighthouse:/root/.lighthouse sigp/lighthouse lighthouse beacon ``` ### Ports @@ -140,14 +139,14 @@ In order to be a good peer and serve other peers you should expose port `9000` f Use the `-p` flag to do this: ```bash -$ docker run -p 9000:9000/tcp -p 9000:9000/udp sigp/lighthouse lighthouse beacon +docker run -p 9000:9000/tcp -p 9000:9000/udp sigp/lighthouse lighthouse beacon ``` If you use the `--http` flag you may also want to expose the HTTP port with `-p 127.0.0.1:5052:5052`. ```bash -$ docker run -p 9000:9000/tcp -p 9000:9000/udp -p 127.0.0.1:5052:5052 sigp/lighthouse lighthouse beacon --http --http-address 0.0.0.0 +docker run -p 9000:9000/tcp -p 9000:9000/udp -p 127.0.0.1:5052:5052 sigp/lighthouse lighthouse beacon --http --http-address 0.0.0.0 ``` [docker_hub]: https://hub.docker.com/repository/docker/sigp/lighthouse/ diff --git a/book/src/faq.md b/book/src/faq.md index 43de40eee3..b42e197a00 100644 --- a/book/src/faq.md +++ b/book/src/faq.md @@ -9,6 +9,11 @@ - [What is "Syncing deposit contract block cache"?](#what-is-syncing-deposit-contract-block-cache) - [Can I use redundancy in my staking setup?](#can-i-use-redundancy-in-my-staking-setup) - [How can I monitor my validators?](#how-can-i-monitor-my-validators) +- [I see beacon logs showing `WARN: Execution engine called failed`, what should I do?](#i-see-beacon-logs-showing-warn-execution-engine-called-failed-what-should-i-do) +- [How do I check or update my withdrawal credentials?](#how-do-i-check-or-update-my-withdrawal-credentials) +- [I am missing attestations. Why?](#i-am-missing-attestations-why) +- [Sometimes I miss the attestation head vote, resulting in penalty. Is this normal?](#sometimes-i-miss-the-attestation-head-vote-resulting-in-penalty-is-this-normal) +- [My beacon node is stuck at downloading historical block using checkpoing sync. What can I do?](#my-beacon-node-is-stuck-at-downloading-historical-block-using-checkpoing-sync-what-can-i-do) ### Why does it take so long for a validator to be activated? @@ -185,4 +190,47 @@ However, there are some components which can be configured with redundancy. See Apart from using block explorers, you may use the "Validator Monitor" built into Lighthouse which provides logging and Prometheus/Grafana metrics for individual validators. See [Validator -Monitoring](./validator-monitoring.md) for more information. +Monitoring](./validator-monitoring.md) for more information. Lighthouse has also developed Lighthouse UI (Siren) to monitor performance, see [Lighthouse UI (Siren)](./lighthouse-ui.md). + +### I see beacon logs showing `WARN: Execution engine called failed`, what should I do? + +The `WARN Execution engine called failed` log is shown when the beacon node cannot reach the execution engine. When this warning occurs, it will be followed by a detailed message. A frequently encountered example of the error message is: + +`error: Reqwest(reqwest::Error { kind: Request, url: Url { scheme: "http", cannot_be_a_base: false, username: "", password: None, host: Some(Ipv4(127.0.0.1)), port: Some(8551), path: "/", query: None, fragment: None }, source: TimedOut }), service: exec` + +which says `TimedOut` at the end of the message. This means that the execution engine has not responded in time to the beacon node. There are a few reasons why this can occur: +1. The execution engine is not synced. Check the log of the execution engine to make sure that it is synced. If it is syncing, wait until it is synced and the error will disappear. You will see the beacon node logs `INFO Execution engine online` when it is synced. +1. The computer is overloaded. Check the CPU and RAM usage to see if it has overloaded. You can use `htop` to check for CPU and RAM usage. +1. Your SSD is slow. Check if your SSD is in "The Bad" list [here](https://gist.github.com/yorickdowne/f3a3e79a573bf35767cd002cc977b038). If your SSD is in "The Bad" list, it means it cannot keep in sync to the network and you may want to consider upgrading to a better SSD. + +If the reason for the error message is caused by no. 1 above, you may want to look further. If the execution engine is out of sync suddenly, it is usually caused by ungraceful shutdown. The common causes for ungraceful shutdown are: +- Power outage. If power outages are an issue at your place, consider getting a UPS to avoid ungraceful shutdown of services. +- The service file is not stopped properly. To overcome this, make sure that the process is stop properly, e.g., during client updates. +- Out of memory (oom) error. This can happen when the system memory usage has reached its maximum and causes the execution engine to be killed. When this occurs, the log file will show `Main process exited, code=killed, status=9/KILL`. You can also run `sudo journalctl -a --since "18 hours ago" | grep -i "killed process` to confirm that the execution client has been killed due to oom. If you are using geth as the execution client, a short term solution is to reduce the resources used, for example: (1) reduce the cache by adding the flag `--cache 2048` (2) connect to less peers using the flag `--maxpeers 10`. If the oom occurs rather frequently, a long term solution is to increase the memory capacity of the computer. + + +### How do I check or update my withdrawal credentials? +Withdrawals will be available after the Capella/Shanghai upgrades on 12th April 2023. To check that if you are eligible for withdrawals, go to [Staking launchpad](https://launchpad.ethereum.org/en/withdrawals), enter your validator index and click `verify on mainnet`: +- `withdrawals enabled` means you will automatically receive withdrawals to the withdrawal address that you set. +- `withdrawals not enabled` means you will need to update your withdrawal credentials from `0x00` type to `0x01` type. The common way to do this is using `Staking deposit CLI` or `ethdo`, with the instructions available [here](https://launchpad.ethereum.org/en/withdrawals#update-your-keys). + +For the case of `withdrawals not enabled`, you can update your withdrawal credentials **anytime**, and there is no deadline for that. The catch is that as long as you do not update your withdrawal credentials, your rewards in the beacon chain will continue to be locked in the beacon chain. Only after you update the withdrawal credentials, will the rewards be withdrawn to the withdrawal address. + + +### I am missing attestations. Why? +The first thing is to ensure both consensus and execution clients are synced with the network. If they are synced, there may still be some issues with the node setup itself that is causing the missed attestations. Check the setup to ensure that: +- the clock is synced +- the computer has sufficient resources and is not overloaded +- the internet is working well +- you have sufficient peers + +You can see more information on the [Ethstaker KB](https://ethstaker.gitbook.io/ethstaker-knowledge-base/help/missed-attestations). Once the above points are good, missing attestation should be a rare occurance. + +### Sometimes I miss the attestation head vote, resulting in penalty. Is this normal? + +In general it is unavoiadable to have some penalties occasionally. This is particularly the case when you are assigned to attest on the first slot of an epoch and if the proposer of that slot releases the block late, then you will get penalised for missing the target and head votes. Your attestation performance does not only depend on your own setup, but also on everyone else's performance. + + +### My beacon node is stuck at downloading historical block using checkpoing sync. What can I do? + +Check the number of peers you are connected to. If you have low peers (less than 50), try to do port forwarding on the port 9000 TCP/UDP to increase peer count. \ No newline at end of file diff --git a/book/src/installation-binaries.md b/book/src/installation-binaries.md index 2365ea7ed7..30bf03e14e 100644 --- a/book/src/installation-binaries.md +++ b/book/src/installation-binaries.md @@ -23,21 +23,24 @@ For details, see [Portability](#portability). ## Usage Each binary is contained in a `.tar.gz` archive. For this example, lets assume the user needs -a portable `x86_64` binary. +a `x86_64` binary. ### Steps 1. Go to the [Releases](https://github.com/sigp/lighthouse/releases) page and select the latest release. -1. Download the `lighthouse-${VERSION}-x86_64-unknown-linux-gnu-portable.tar.gz` binary. -1. Extract the archive: - 1. `cd Downloads` - 1. `tar -xvf lighthouse-${VERSION}-x86_64-unknown-linux-gnu.tar.gz` +1. Download the `lighthouse-${VERSION}-x86_64-unknown-linux-gnu.tar.gz` binary. For example, to obtain the binary file for v4.0.1 (the latest version at the time of writing), a user can run the following commands in a linux terminal: + ```bash + cd ~ + curl -LO https://github.com/sigp/lighthouse/releases/download/v4.0.1/lighthouse-v4.0.1-x86_64-unknown-linux-gnu.tar.gz + tar -xvf lighthouse-v4.0.1-x86_64-unknown-linux-gnu.tar.gz + ``` 1. Test the binary with `./lighthouse --version` (it should print the version). -1. (Optional) Move the `lighthouse` binary to a location in your `PATH`, so the `lighthouse` command can be called from anywhere. - - E.g., `cp lighthouse /usr/bin` +1. (Optional) Move the `lighthouse` binary to a location in your `PATH`, so the `lighthouse` command can be called from anywhere. For example, to copy `lighthouse` from the current directory to `usr/bin`, run `sudo cp lighthouse /usr/bin`. -> Windows users will need to execute the commands in Step 3 from PowerShell. + + +> Windows users will need to execute the commands in Step 2 from PowerShell. ## Portability @@ -64,4 +67,4 @@ WARN CPU seems incompatible with optimized Lighthouse build, advice: If you get On some VPS providers, the virtualization can make it appear as if CPU features are not available, even when they are. In this case you might see the warning above, but so long as the client -continues to function it's nothing to worry about. +continues to function, it's nothing to worry about. diff --git a/book/src/installation-source.md b/book/src/installation-source.md index c89dd1add4..b9c9df163d 100644 --- a/book/src/installation-source.md +++ b/book/src/installation-source.md @@ -5,8 +5,20 @@ the instructions below, and then proceed to [Building Lighthouse](#build-lightho ## Dependencies -First, **install Rust** using [rustup](https://rustup.rs/). The rustup installer provides an easy way -to update the Rust compiler, and works on all platforms. +First, **install Rust** using [rustup](https://rustup.rs/): + +```bash +curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh +``` + +The rustup installer provides an easy way to update the Rust compiler, and works on all platforms. + +> Tips: +> +> - During installation, when prompted, enter `1` for the default installation. +> - After Rust installation completes, try running `cargo version` . If it cannot +> be found, run `source $HOME/.cargo/env`. After that, running `cargo version` should return the version, for example `cargo 1.68.2`. +> - It's generally advisable to append `source $HOME/.cargo/env` to `~/.bashrc`. With Rust installed, follow the instructions below to install dependencies relevant to your operating system. @@ -19,10 +31,17 @@ Install the following packages: sudo apt install -y git gcc g++ make cmake pkg-config llvm-dev libclang-dev clang protobuf-compiler ``` +> Tips: +> +> - If there are difficulties, try updating the package manager with `sudo apt +> update`. + > Note: Lighthouse requires CMake v3.12 or newer, which isn't available in the package repositories > of Ubuntu 18.04 or earlier. On these distributions CMake can still be installed via PPA: > [https://apt.kitware.com/](https://apt.kitware.com) +After this, you are ready to [build Lighthouse](#build-lighthouse). + #### macOS 1. Install the [Homebrew][] package manager. @@ -39,10 +58,19 @@ brew install protobuf [Homebrew]: https://brew.sh/ +After this, you are ready to [build Lighthouse](#build-lighthouse). + #### Windows -1. Install [Git](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git). +1. Install [Git](https://git-scm.com/download/win). 1. Install the [Chocolatey](https://chocolatey.org/install) package manager for Windows. + > Tips: + > - Use PowerShell to install. In Windows, search for PowerShell and run as administrator. + > - You must ensure `Get-ExecutionPolicy` is not Restricted. To test this, run `Get-ExecutionPolicy` in PowerShell. If it returns `restricted`, then run `Set-ExecutionPolicy AllSigned`, and then run + ```bash + Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1')) + ``` + > - To verify that Chocolatey is ready, run `choco` and it should return the version. 1. Install Make, CMake, LLVM and protoc using Chocolatey: ``` @@ -67,6 +95,8 @@ should follow the instructions for Ubuntu listed in the [Dependencies (Ubuntu)]( [WSL]: https://docs.microsoft.com/en-us/windows/wsl/about +After this, you are ready to [build Lighthouse](#build-lighthouse). + ## Build Lighthouse Once you have Rust and the build dependencies you're ready to build Lighthouse: @@ -136,7 +166,7 @@ Commonly used features include: * `spec-minimal`: support for the minimal preset (useful for testing). Default features (e.g. `slasher-mdbx`) may be opted out of using the `--no-default-features` -argument for `cargo`, which can plumbed in via the `CARGO_INSTALL_EXTRA_FLAGS` environment variable. +argument for `cargo`, which can be plumbed in via the `CARGO_INSTALL_EXTRA_FLAGS` environment variable. E.g. ``` @@ -171,12 +201,11 @@ PROFILE=maxperf make Lighthouse will be installed to `CARGO_HOME` or `$HOME/.cargo`. This directory needs to be on your `PATH` before you can run `$ lighthouse`. -See ["Configuring the `PATH` environment variable" -(rust-lang.org)](https://www.rust-lang.org/tools/install) for more information. +See ["Configuring the `PATH` environment variable"](https://www.rust-lang.org/tools/install) for more information. ### Compilation error -Make sure you are running the latest version of Rust. If you have installed Rust using rustup, simply type `rustup update`. +Make sure you are running the latest version of Rust. If you have installed Rust using rustup, simply run `rustup update`. If you can't install the latest version of Rust you can instead compile using the Minimum Supported Rust Version (MSRV) which is listed under the `rust-version` key in Lighthouse's @@ -185,7 +214,7 @@ Rust Version (MSRV) which is listed under the `rust-version` key in Lighthouse's If compilation fails with `(signal: 9, SIGKILL: kill)`, this could mean your machine ran out of memory during compilation. If you are on a resource-constrained device you can look into [cross compilation](./cross-compiling.md), or use a [pre-built -binary](./installation-binaries.md). +binary](https://github.com/sigp/lighthouse/releases). If compilation fails with `error: linking with cc failed: exit code: 1`, try running `cargo clean`. diff --git a/book/src/installation.md b/book/src/installation.md index bc546e0987..627326d2a4 100644 --- a/book/src/installation.md +++ b/book/src/installation.md @@ -8,24 +8,27 @@ There are three core methods to obtain the Lighthouse application: - [Docker images](./docker.md). - [Building from source](./installation-source.md). -Community-maintained additional installation methods: - -- [Homebrew package](./homebrew.md). -- Arch Linux AUR packages: [source](https://aur.archlinux.org/packages/lighthouse-ethereum), - [binary](https://aur.archlinux.org/packages/lighthouse-ethereum-bin). - Additionally, there are two extra guides for specific uses: - [Raspberry Pi 4 guide](./pi.md). - [Cross-compiling guide for developers](./cross-compiling.md). -## Minimum System Requirements +There are also community-maintained installation methods: -* Dual-core CPU, 2015 or newer -* 8 GB RAM -* 128 GB solid state storage -* 10 Mb/s download, 5 Mb/s upload broadband connection +- [Homebrew package](./homebrew.md). +- Arch Linux AUR packages: [source](https://aur.archlinux.org/packages/lighthouse-ethereum), + [binary](https://aur.archlinux.org/packages/lighthouse-ethereum-bin). -For more information see [System Requirements](./system-requirements.md). -[WSL]: https://docs.microsoft.com/en-us/windows/wsl/about + +## Recommended System Requirements + +Before [The Merge](https://ethereum.org/en/roadmap/merge/), Lighthouse was able to run on its own with low to mid-range consumer hardware, but would perform best when provided with ample system resources. + +After [The Merge](https://ethereum.org/en/roadmap/merge/) on 15th September 2022, it is necessary to run Lighthouse together with an execution client ([Nethermind](https://nethermind.io/), [Besu](https://www.hyperledger.org/use/besu), [Erigon](https://github.com/ledgerwatch/erigon), [Geth](https://geth.ethereum.org/)). The following system requirements listed are therefore for running a Lighthouse beacon node combined with an execution client , and a validator client with a modest number of validator keys (less than 100): + + +* CPU: Quad-core AMD Ryzen, Intel Broadwell, ARMv8 or newer +* Memory: 16 GB RAM or more +* Storage: 2 TB solid state storage +* Network: 100 Mb/s download, 20 Mb/s upload broadband connection diff --git a/book/src/pi.md b/book/src/pi.md index 24796d394e..d8d154d765 100644 --- a/book/src/pi.md +++ b/book/src/pi.md @@ -12,18 +12,18 @@ desktop) may be convenient.* ### 1. Install Ubuntu -Follow the [Ubuntu Raspberry Pi installation instructions](https://ubuntu.com/download/raspberry-pi). - -**A 64-bit version is required** and latest version is recommended (Ubuntu -20.04 LTS was the latest at the time of writing). +Follow the [Ubuntu Raspberry Pi installation instructions](https://ubuntu.com/download/raspberry-pi). **A 64-bit version is required** A graphical environment is not required in order to use Lighthouse. Only the terminal and an Internet connection are necessary. ### 2. Install Packages -Install the [Ubuntu Dependencies](installation-source.md#ubuntu). -(I.e., run the `sudo apt install ...` command at that link). +Install the Ubuntu dependencies: + +```bash +sudo apt install -y git gcc g++ make cmake pkg-config llvm-dev libclang-dev clang protobuf-compiler +``` > Tips: > @@ -32,15 +32,18 @@ Install the [Ubuntu Dependencies](installation-source.md#ubuntu). ### 3. Install Rust -Install Rust as per [rustup](https://rustup.rs/). (I.e., run the `curl ... ` -command). +Install Rust as per [rustup](https://rustup.rs/): + +```bash +curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh +``` > Tips: > -> - When prompted, enter `1` for the default installation. -> - Try running `cargo version` after Rust installation completes. If it cannot -> be found, run `source $HOME/.cargo/env`. -> - It's generally advised to append `source $HOME/.cargo/env` to `~/.bashrc`. +> - During installation, when prompted, enter `1` for the default installation. +> - After Rust installation completes, try running `cargo version` . If it cannot +> be found, run `source $HOME/.cargo/env`. After that, running `cargo version` should return the version, for example `cargo 1.68.2`. +> - It's generally advisable to append `source $HOME/.cargo/env` to `~/.bashrc`. ### 4. Install Lighthouse diff --git a/book/src/system-requirements.md b/book/src/system-requirements.md deleted file mode 100644 index 0c51d07cce..0000000000 --- a/book/src/system-requirements.md +++ /dev/null @@ -1,23 +0,0 @@ -# System Requirements - -Lighthouse is able to run on most low to mid-range consumer hardware, but will perform best when -provided with ample system resources. The following system requirements are for running a beacon -node and a validator client with a modest number of validator keys (less than 100). - -## Minimum - -* Dual-core CPU, 2015 or newer -* 8 GB RAM -* 128 GB solid state storage -* 10 Mb/s download, 5 Mb/s upload broadband connection - -During smooth network conditions, Lighthouse's database will fit within 15 GB, but in case of a long -period of non-finality, it is **strongly recommended** that at least 128 GB is available. - -## Recommended - -* Quad-core AMD Ryzen, Intel Broadwell, ARMv8 or newer -* 16 GB RAM -* 256 GB solid state storage -* 100 Mb/s download, 20 Mb/s upload broadband connection - From 2b3084f5785dfb48c809d4838757341db4142eef Mon Sep 17 00:00:00 2001 From: Paul Hauner Date: Fri, 14 Apr 2023 01:11:46 +0000 Subject: [PATCH 24/56] Use head state for exit verification (#4183) ## Issue Addressed NA ## Proposed Changes Similar to #4181 but without the version bump and a more nuanced fix. Patches the high CPU usage seen after the Capella fork which was caused by processing exits when there are skip slots. ## Additional Info ~~This is an imperfect solution that will cause us to drop some exits at the fork boundary. This is tracked at #4184.~~ --- beacon_node/beacon_chain/src/beacon_chain.rs | 8 ++-- .../beacon_chain/src/observed_operations.rs | 37 ++++++++++++++++--- beacon_node/operation_pool/src/lib.rs | 3 +- consensus/state_processing/src/lib.rs | 2 +- .../process_operations.rs | 3 +- .../src/per_block_processing/tests.rs | 30 ++++++++++++--- .../src/per_block_processing/verify_exit.rs | 12 +++--- .../state_processing/src/verify_operation.rs | 34 ++++++++++++++++- 8 files changed, 106 insertions(+), 23 deletions(-) diff --git a/beacon_node/beacon_chain/src/beacon_chain.rs b/beacon_node/beacon_chain/src/beacon_chain.rs index 08a88f5db9..6b6379d62d 100644 --- a/beacon_node/beacon_chain/src/beacon_chain.rs +++ b/beacon_node/beacon_chain/src/beacon_chain.rs @@ -2206,12 +2206,14 @@ impl BeaconChain { &self, exit: SignedVoluntaryExit, ) -> Result, Error> { - // NOTE: this could be more efficient if it avoided cloning the head state - let wall_clock_state = self.wall_clock_state()?; + let head_snapshot = self.head().snapshot; + let head_state = &head_snapshot.beacon_state; + let wall_clock_epoch = self.epoch()?; + Ok(self .observed_voluntary_exits .lock() - .verify_and_observe(exit, &wall_clock_state, &self.spec) + .verify_and_observe_at(exit, wall_clock_epoch, head_state, &self.spec) .map(|exit| { // this method is called for both API and gossip exits, so this covers all exit events if let Some(event_handler) = self.event_handler.as_ref() { diff --git a/beacon_node/beacon_chain/src/observed_operations.rs b/beacon_node/beacon_chain/src/observed_operations.rs index 6e53373939..4121111b3e 100644 --- a/beacon_node/beacon_chain/src/observed_operations.rs +++ b/beacon_node/beacon_chain/src/observed_operations.rs @@ -1,11 +1,11 @@ use derivative::Derivative; use smallvec::{smallvec, SmallVec}; use ssz::{Decode, Encode}; -use state_processing::{SigVerifiedOp, VerifyOperation}; +use state_processing::{SigVerifiedOp, VerifyOperation, VerifyOperationAt}; use std::collections::HashSet; use std::marker::PhantomData; use types::{ - AttesterSlashing, BeaconState, ChainSpec, EthSpec, ForkName, ProposerSlashing, + AttesterSlashing, BeaconState, ChainSpec, Epoch, EthSpec, ForkName, ProposerSlashing, SignedBlsToExecutionChange, SignedVoluntaryExit, Slot, }; @@ -87,12 +87,16 @@ impl ObservableOperation for SignedBlsToExecutionChange { } impl, E: EthSpec> ObservedOperations { - pub fn verify_and_observe( + pub fn verify_and_observe_parametric( &mut self, op: T, + validate: F, head_state: &BeaconState, spec: &ChainSpec, - ) -> Result, T::Error> { + ) -> Result, T::Error> + where + F: Fn(T) -> Result, T::Error>, + { self.reset_at_fork_boundary(head_state.slot(), spec); let observed_validator_indices = &mut self.observed_validator_indices; @@ -112,7 +116,7 @@ impl, E: EthSpec> ObservedOperations { } // Validate the op using operation-specific logic (`verify_attester_slashing`, etc). - let verified_op = op.validate(head_state, spec)?; + let verified_op = validate(op)?; // Add the relevant indices to the set of known indices to prevent processing of duplicates // in the future. @@ -121,6 +125,16 @@ impl, E: EthSpec> ObservedOperations { Ok(ObservationOutcome::New(verified_op)) } + pub fn verify_and_observe( + &mut self, + op: T, + head_state: &BeaconState, + spec: &ChainSpec, + ) -> Result, T::Error> { + let validate = |op: T| op.validate(head_state, spec); + self.verify_and_observe_parametric(op, validate, head_state, spec) + } + /// Reset the cache when crossing a fork boundary. /// /// This prevents an attacker from crafting a self-slashing which is only valid before the fork @@ -140,3 +154,16 @@ impl, E: EthSpec> ObservedOperations { } } } + +impl + VerifyOperationAt, E: EthSpec> ObservedOperations { + pub fn verify_and_observe_at( + &mut self, + op: T, + verify_at_epoch: Epoch, + head_state: &BeaconState, + spec: &ChainSpec, + ) -> Result, T::Error> { + let validate = |op: T| op.validate_at(head_state, verify_at_epoch, spec); + self.verify_and_observe_parametric(op, validate, head_state, spec) + } +} diff --git a/beacon_node/operation_pool/src/lib.rs b/beacon_node/operation_pool/src/lib.rs index c5be4f0a61..24c0623f5c 100644 --- a/beacon_node/operation_pool/src/lib.rs +++ b/beacon_node/operation_pool/src/lib.rs @@ -497,7 +497,8 @@ impl OperationPool { |exit| { filter(exit.as_inner()) && exit.signature_is_still_valid(&state.fork()) - && verify_exit(state, exit.as_inner(), VerifySignatures::False, spec).is_ok() + && verify_exit(state, None, exit.as_inner(), VerifySignatures::False, spec) + .is_ok() }, |exit| exit.as_inner().clone(), T::MaxVoluntaryExits::to_usize(), diff --git a/consensus/state_processing/src/lib.rs b/consensus/state_processing/src/lib.rs index e4f36bedd8..9641e8f96e 100644 --- a/consensus/state_processing/src/lib.rs +++ b/consensus/state_processing/src/lib.rs @@ -41,4 +41,4 @@ pub use per_epoch_processing::{ errors::EpochProcessingError, process_epoch as per_epoch_processing, }; pub use per_slot_processing::{per_slot_processing, Error as SlotProcessingError}; -pub use verify_operation::{SigVerifiedOp, VerifyOperation}; +pub use verify_operation::{SigVerifiedOp, VerifyOperation, VerifyOperationAt}; diff --git a/consensus/state_processing/src/per_block_processing/process_operations.rs b/consensus/state_processing/src/per_block_processing/process_operations.rs index 7d04cad90b..4bee596615 100644 --- a/consensus/state_processing/src/per_block_processing/process_operations.rs +++ b/consensus/state_processing/src/per_block_processing/process_operations.rs @@ -282,7 +282,8 @@ pub fn process_exits( // Verify and apply each exit in series. We iterate in series because higher-index exits may // become invalid due to the application of lower-index ones. for (i, exit) in voluntary_exits.iter().enumerate() { - verify_exit(state, exit, verify_signatures, spec).map_err(|e| e.into_with_index(i))?; + verify_exit(state, None, exit, verify_signatures, spec) + .map_err(|e| e.into_with_index(i))?; initiate_validator_exit(state, exit.message.validator_index as usize, spec)?; } diff --git a/consensus/state_processing/src/per_block_processing/tests.rs b/consensus/state_processing/src/per_block_processing/tests.rs index b7d28832db..6eabbf0d44 100644 --- a/consensus/state_processing/src/per_block_processing/tests.rs +++ b/consensus/state_processing/src/per_block_processing/tests.rs @@ -978,8 +978,14 @@ async fn fork_spanning_exit() { let head = harness.chain.canonical_head.cached_head(); let head_state = &head.snapshot.beacon_state; assert!(head_state.current_epoch() < spec.altair_fork_epoch.unwrap()); - verify_exit(head_state, &signed_exit, VerifySignatures::True, &spec) - .expect("phase0 exit verifies against phase0 state"); + verify_exit( + head_state, + None, + &signed_exit, + VerifySignatures::True, + &spec, + ) + .expect("phase0 exit verifies against phase0 state"); /* * Ensure the exit verifies after Altair. @@ -992,8 +998,14 @@ async fn fork_spanning_exit() { let head_state = &head.snapshot.beacon_state; assert!(head_state.current_epoch() >= spec.altair_fork_epoch.unwrap()); assert!(head_state.current_epoch() < spec.bellatrix_fork_epoch.unwrap()); - verify_exit(head_state, &signed_exit, VerifySignatures::True, &spec) - .expect("phase0 exit verifies against altair state"); + verify_exit( + head_state, + None, + &signed_exit, + VerifySignatures::True, + &spec, + ) + .expect("phase0 exit verifies against altair state"); /* * Ensure the exit no longer verifies after Bellatrix. @@ -1009,6 +1021,12 @@ async fn fork_spanning_exit() { let head = harness.chain.canonical_head.cached_head(); let head_state = &head.snapshot.beacon_state; assert!(head_state.current_epoch() >= spec.bellatrix_fork_epoch.unwrap()); - verify_exit(head_state, &signed_exit, VerifySignatures::True, &spec) - .expect_err("phase0 exit does not verify against bellatrix state"); + verify_exit( + head_state, + None, + &signed_exit, + VerifySignatures::True, + &spec, + ) + .expect_err("phase0 exit does not verify against bellatrix state"); } diff --git a/consensus/state_processing/src/per_block_processing/verify_exit.rs b/consensus/state_processing/src/per_block_processing/verify_exit.rs index f17e5fcd23..9e9282912d 100644 --- a/consensus/state_processing/src/per_block_processing/verify_exit.rs +++ b/consensus/state_processing/src/per_block_processing/verify_exit.rs @@ -20,10 +20,12 @@ fn error(reason: ExitInvalid) -> BlockOperationError { /// Spec v0.12.1 pub fn verify_exit( state: &BeaconState, + current_epoch: Option, signed_exit: &SignedVoluntaryExit, verify_signatures: VerifySignatures, spec: &ChainSpec, ) -> Result<()> { + let current_epoch = current_epoch.unwrap_or(state.current_epoch()); let exit = &signed_exit.message; let validator = state @@ -33,7 +35,7 @@ pub fn verify_exit( // Verify the validator is active. verify!( - validator.is_active_at(state.current_epoch()), + validator.is_active_at(current_epoch), ExitInvalid::NotActive(exit.validator_index) ); @@ -45,9 +47,9 @@ pub fn verify_exit( // Exits must specify an epoch when they become valid; they are not valid before then. verify!( - state.current_epoch() >= exit.epoch, + current_epoch >= exit.epoch, ExitInvalid::FutureEpoch { - state: state.current_epoch(), + state: current_epoch, exit: exit.epoch } ); @@ -57,9 +59,9 @@ pub fn verify_exit( .activation_epoch .safe_add(spec.shard_committee_period)?; verify!( - state.current_epoch() >= earliest_exit_epoch, + current_epoch >= earliest_exit_epoch, ExitInvalid::TooYoungToExit { - current_epoch: state.current_epoch(), + current_epoch, earliest_exit_epoch, } ); diff --git a/consensus/state_processing/src/verify_operation.rs b/consensus/state_processing/src/verify_operation.rs index 50ac2ff3de..864844080f 100644 --- a/consensus/state_processing/src/verify_operation.rs +++ b/consensus/state_processing/src/verify_operation.rs @@ -134,7 +134,7 @@ impl VerifyOperation for SignedVoluntaryExit { state: &BeaconState, spec: &ChainSpec, ) -> Result, Self::Error> { - verify_exit(state, &self, VerifySignatures::True, spec)?; + verify_exit(state, None, &self, VerifySignatures::True, spec)?; Ok(SigVerifiedOp::new(self, state)) } @@ -205,3 +205,35 @@ impl VerifyOperation for SignedBlsToExecutionChange { smallvec![] } } + +/// Trait for operations that can be verified and transformed into a +/// `SigVerifiedOp`. +/// +/// The `At` suffix indicates that we can specify a particular epoch at which to +/// verify the operation. +pub trait VerifyOperationAt: VerifyOperation + Sized { + fn validate_at( + self, + state: &BeaconState, + validate_at_epoch: Epoch, + spec: &ChainSpec, + ) -> Result, Self::Error>; +} + +impl VerifyOperationAt for SignedVoluntaryExit { + fn validate_at( + self, + state: &BeaconState, + validate_at_epoch: Epoch, + spec: &ChainSpec, + ) -> Result, Self::Error> { + verify_exit( + state, + Some(validate_at_epoch), + &self, + VerifySignatures::True, + spec, + )?; + Ok(SigVerifiedOp::new(self, state)) + } +} From dd124b2d6804d02e4e221f29387a56775acccd08 Mon Sep 17 00:00:00 2001 From: Paul Hauner Date: Fri, 14 Apr 2023 06:37:16 +0000 Subject: [PATCH 25/56] Address observed proposers behaviour (#4192) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## Issue Addressed NA ## Proposed Changes Apply two changes to code introduced in #4179: 1. Remove the `ERRO` log for when we error on `proposer_has_been_observed()`. We were seeing a lot of this in our logs for finalized blocks and it's a bit noisy. 1. Use `false` rather than `true` for `proposal_already_known` when there is an error. If a block raises an error in `proposer_has_been_observed()` then the block must be invalid, so we should process (and reject) it now rather than queuing it. For reference, here is one of the offending `ERRO` logs: ``` ERRO Failed to check observed proposers block_root: 0x5845…878e, source: rpc, error: FinalizedBlock { slot: Slot(5410983), finalized_slot: Slot(5411232) } ``` ## Additional Info NA --- beacon_node/beacon_chain/src/lib.rs | 2 +- .../beacon_processor/worker/sync_methods.rs | 23 ++++++++----------- 2 files changed, 11 insertions(+), 14 deletions(-) diff --git a/beacon_node/beacon_chain/src/lib.rs b/beacon_node/beacon_chain/src/lib.rs index af4780e46e..be1522a3b8 100644 --- a/beacon_node/beacon_chain/src/lib.rs +++ b/beacon_node/beacon_chain/src/lib.rs @@ -32,7 +32,7 @@ pub mod migrate; mod naive_aggregation_pool; mod observed_aggregates; mod observed_attesters; -mod observed_block_producers; +pub mod observed_block_producers; pub mod observed_operations; pub mod otb_verification_service; mod persisted_beacon_chain; diff --git a/beacon_node/network/src/beacon_processor/worker/sync_methods.rs b/beacon_node/network/src/beacon_processor/worker/sync_methods.rs index 61ecc30d41..6faf7ebd37 100644 --- a/beacon_node/network/src/beacon_processor/worker/sync_methods.rs +++ b/beacon_node/network/src/beacon_processor/worker/sync_methods.rs @@ -9,8 +9,8 @@ use crate::sync::manager::{BlockProcessType, SyncMessage}; use crate::sync::{BatchProcessResult, ChainId}; use beacon_chain::CountUnrealized; use beacon_chain::{ - BeaconChainError, BeaconChainTypes, BlockError, ChainSegmentResult, HistoricalBlockError, - NotifyExecutionLayer, + observed_block_producers::Error as ObserveError, BeaconChainError, BeaconChainTypes, + BlockError, ChainSegmentResult, HistoricalBlockError, NotifyExecutionLayer, }; use lighthouse_network::PeerAction; use slog::{debug, error, info, warn}; @@ -85,21 +85,18 @@ impl Worker { }; // Check if a block from this proposer is already known. If so, defer processing until later // to avoid wasting time processing duplicates. - let proposal_already_known = self + let proposal_already_known = match self .chain .observed_block_producers .read() .proposer_has_been_observed(block.message()) - .map_err(|e| { - error!( - self.log, - "Failed to check observed proposers"; - "error" => ?e, - "source" => "rpc", - "block_root" => %block_root - ); - }) - .unwrap_or(true); + { + Ok(is_observed) => is_observed, + // Both of these blocks will be rejected, so reject them now rather + // than re-queuing them. + Err(ObserveError::FinalizedBlock { .. }) + | Err(ObserveError::ValidatorIndexTooHigh { .. }) => false, + }; if proposal_already_known { debug!( self.log, From 1d92e3f77c5900ed96bac4fae23cad02d885c74a Mon Sep 17 00:00:00 2001 From: Michael Sproul Date: Tue, 18 Apr 2023 02:47:35 +0000 Subject: [PATCH 26/56] Use efficient payload reconstruction for HTTP API (#4102) ## Proposed Changes Builds on #4028 to use the new payload bodies methods in the HTTP API as well. ## Caveats The payloads by range method only works for the finalized chain, so it can't be used in the execution engine integration tests because we try to reconstruct unfinalized payloads there. --- beacon_node/beacon_chain/src/beacon_chain.rs | 2 +- beacon_node/execution_layer/src/lib.rs | 55 +++++++++++++++++-- .../src/test_rig.rs | 3 +- 3 files changed, 54 insertions(+), 6 deletions(-) diff --git a/beacon_node/beacon_chain/src/beacon_chain.rs b/beacon_node/beacon_chain/src/beacon_chain.rs index 6b6379d62d..0165c54dc3 100644 --- a/beacon_node/beacon_chain/src/beacon_chain.rs +++ b/beacon_node/beacon_chain/src/beacon_chain.rs @@ -1043,7 +1043,7 @@ impl BeaconChain { .execution_layer .as_ref() .ok_or(Error::ExecutionLayerMissing)? - .get_payload_by_block_hash(exec_block_hash, fork) + .get_payload_for_header(&execution_payload_header, fork) .await .map_err(|e| { Error::ExecutionLayerErrorPayloadReconstruction(exec_block_hash, Box::new(e)) diff --git a/beacon_node/execution_layer/src/lib.rs b/beacon_node/execution_layer/src/lib.rs index 2c2d8c7dce..dd956d1d75 100644 --- a/beacon_node/execution_layer/src/lib.rs +++ b/beacon_node/execution_layer/src/lib.rs @@ -103,6 +103,8 @@ pub enum Error { transactions_root: Hash256, }, InvalidJWTSecret(String), + InvalidForkForPayload, + InvalidPayloadBody(String), BeaconStateError(BeaconStateError), } @@ -1602,14 +1604,59 @@ impl ExecutionLayer { .map_err(Error::EngineError) } - pub async fn get_payload_by_block_hash( + /// Fetch a full payload from the execution node. + /// + /// This will fail if the payload is not from the finalized portion of the chain. + pub async fn get_payload_for_header( + &self, + header: &ExecutionPayloadHeader, + fork: ForkName, + ) -> Result>, Error> { + let hash = header.block_hash(); + let block_number = header.block_number(); + + // Handle default payload body. + if header.block_hash() == ExecutionBlockHash::zero() { + let payload = match fork { + ForkName::Merge => ExecutionPayloadMerge::default().into(), + ForkName::Capella => ExecutionPayloadCapella::default().into(), + ForkName::Base | ForkName::Altair => { + return Err(Error::InvalidForkForPayload); + } + }; + return Ok(Some(payload)); + } + + // Use efficient payload bodies by range method if supported. + let capabilities = self.get_engine_capabilities(None).await?; + if capabilities.get_payload_bodies_by_range_v1 { + let mut payload_bodies = self.get_payload_bodies_by_range(block_number, 1).await?; + + if payload_bodies.len() != 1 { + return Ok(None); + } + + let opt_payload_body = payload_bodies.pop().flatten(); + opt_payload_body + .map(|body| { + body.to_payload(header.clone()) + .map_err(Error::InvalidPayloadBody) + }) + .transpose() + } else { + // Fall back to eth_blockByHash. + self.get_payload_by_hash_legacy(hash, fork).await + } + } + + pub async fn get_payload_by_hash_legacy( &self, hash: ExecutionBlockHash, fork: ForkName, ) -> Result>, Error> { self.engine() .request(|engine| async move { - self.get_payload_by_block_hash_from_engine(engine, hash, fork) + self.get_payload_by_hash_from_engine(engine, hash, fork) .await }) .await @@ -1617,7 +1664,7 @@ impl ExecutionLayer { .map_err(Error::EngineError) } - async fn get_payload_by_block_hash_from_engine( + async fn get_payload_by_hash_from_engine( &self, engine: &Engine, hash: ExecutionBlockHash, @@ -1630,7 +1677,7 @@ impl ExecutionLayer { ForkName::Merge => Ok(Some(ExecutionPayloadMerge::default().into())), ForkName::Capella => Ok(Some(ExecutionPayloadCapella::default().into())), ForkName::Base | ForkName::Altair => Err(ApiError::UnsupportedForkVariant( - format!("called get_payload_by_block_hash_from_engine with {}", fork), + format!("called get_payload_by_hash_from_engine with {}", fork), )), }; } diff --git a/testing/execution_engine_integration/src/test_rig.rs b/testing/execution_engine_integration/src/test_rig.rs index ff333332ba..726019a848 100644 --- a/testing/execution_engine_integration/src/test_rig.rs +++ b/testing/execution_engine_integration/src/test_rig.rs @@ -626,9 +626,10 @@ async fn check_payload_reconstruction( ee: &ExecutionPair, payload: &ExecutionPayload, ) { + // check via legacy eth_getBlockByHash let reconstructed = ee .execution_layer - .get_payload_by_block_hash(payload.block_hash(), payload.fork_name()) + .get_payload_by_hash_legacy(payload.block_hash(), payload.fork_name()) .await .unwrap() .unwrap(); From e9a7316f1de113d118f1aa16856ae97e181ceb82 Mon Sep 17 00:00:00 2001 From: Michael Sproul Date: Tue, 18 Apr 2023 02:47:36 +0000 Subject: [PATCH 27/56] Set user agent on requests to builder (#4199) ## Issue Addressed Closes #4185 ## Proposed Changes - Set user agent to `Lighthouse/vX.Y.Z-` by default - Allow tweaking user agent via `--builder-user-agent "agent"` --- Cargo.lock | 1 + beacon_node/builder_client/Cargo.toml | 1 + beacon_node/builder_client/src/lib.rs | 19 ++++++++------ beacon_node/execution_layer/src/lib.rs | 16 +++++++++--- beacon_node/src/cli.rs | 9 +++++++ beacon_node/src/config.rs | 3 +++ lighthouse/tests/beacon_node.rs | 34 ++++++++++++++++++++++++++ 7 files changed, 71 insertions(+), 12 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 08b7e2a808..47fab8c0f6 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -863,6 +863,7 @@ name = "builder_client" version = "0.1.0" dependencies = [ "eth2", + "lighthouse_version", "reqwest", "sensitive_url", "serde", diff --git a/beacon_node/builder_client/Cargo.toml b/beacon_node/builder_client/Cargo.toml index 48ac0300c9..b79fc5e407 100644 --- a/beacon_node/builder_client/Cargo.toml +++ b/beacon_node/builder_client/Cargo.toml @@ -10,3 +10,4 @@ sensitive_url = { path = "../../common/sensitive_url" } eth2 = { path = "../../common/eth2" } serde = { version = "1.0.116", features = ["derive"] } serde_json = "1.0.58" +lighthouse_version = { path = "../../common/lighthouse_version" } diff --git a/beacon_node/builder_client/src/lib.rs b/beacon_node/builder_client/src/lib.rs index fecf6512ac..255c2fdd19 100644 --- a/beacon_node/builder_client/src/lib.rs +++ b/beacon_node/builder_client/src/lib.rs @@ -17,6 +17,9 @@ pub const DEFAULT_TIMEOUT_MILLIS: u64 = 15000; /// This timeout is in accordance with v0.2.0 of the [builder specs](https://github.com/flashbots/mev-boost/pull/20). pub const DEFAULT_GET_HEADER_TIMEOUT_MILLIS: u64 = 1000; +/// Default user agent for HTTP requests. +pub const DEFAULT_USER_AGENT: &str = lighthouse_version::VERSION; + #[derive(Clone)] pub struct Timeouts { get_header: Duration, @@ -41,23 +44,23 @@ pub struct BuilderHttpClient { client: reqwest::Client, server: SensitiveUrl, timeouts: Timeouts, + user_agent: String, } impl BuilderHttpClient { - pub fn new(server: SensitiveUrl) -> Result { + pub fn new(server: SensitiveUrl, user_agent: Option) -> Result { + let user_agent = user_agent.unwrap_or(DEFAULT_USER_AGENT.to_string()); + let client = reqwest::Client::builder().user_agent(&user_agent).build()?; Ok(Self { - client: reqwest::Client::new(), + client, server, timeouts: Timeouts::default(), + user_agent, }) } - pub fn new_with_timeouts(server: SensitiveUrl, timeouts: Timeouts) -> Result { - Ok(Self { - client: reqwest::Client::new(), - server, - timeouts, - }) + pub fn get_user_agent(&self) -> &str { + &self.user_agent } async fn get_with_timeout( diff --git a/beacon_node/execution_layer/src/lib.rs b/beacon_node/execution_layer/src/lib.rs index dd956d1d75..09be379d24 100644 --- a/beacon_node/execution_layer/src/lib.rs +++ b/beacon_node/execution_layer/src/lib.rs @@ -230,6 +230,8 @@ pub struct Config { pub execution_endpoints: Vec, /// Endpoint urls for services providing the builder api. pub builder_url: Option, + /// User agent to send with requests to the builder API. + pub builder_user_agent: Option, /// JWT secrets for the above endpoints running the engine api. pub secret_files: Vec, /// The default fee recipient to use on the beacon node if none if provided from @@ -260,6 +262,7 @@ impl ExecutionLayer { let Config { execution_endpoints: urls, builder_url, + builder_user_agent, secret_files, suggested_fee_recipient, jwt_id, @@ -320,12 +323,17 @@ impl ExecutionLayer { let builder = builder_url .map(|url| { - let builder_client = BuilderHttpClient::new(url.clone()).map_err(Error::Builder); - info!(log, + let builder_client = BuilderHttpClient::new(url.clone(), builder_user_agent) + .map_err(Error::Builder)?; + + info!( + log, "Connected to external block builder"; "builder_url" => ?url, - "builder_profit_threshold" => builder_profit_threshold); - builder_client + "builder_profit_threshold" => builder_profit_threshold, + "local_user_agent" => builder_client.get_user_agent(), + ); + Ok::<_, Error>(builder_client) }) .transpose()?; diff --git a/beacon_node/src/cli.rs b/beacon_node/src/cli.rs index 8a5c33ac0f..25521ec242 100644 --- a/beacon_node/src/cli.rs +++ b/beacon_node/src/cli.rs @@ -1000,6 +1000,15 @@ pub fn cli_app<'a, 'b>() -> App<'a, 'b> { .default_value("0") .takes_value(true) ) + .arg( + Arg::with_name("builder-user-agent") + .long("builder-user-agent") + .value_name("STRING") + .help("The HTTP user agent to send alongside requests to the builder URL. The \ + default is Lighthouse's version string.") + .requires("builder") + .takes_value(true) + ) .arg( Arg::with_name("count-unrealized") .long("count-unrealized") diff --git a/beacon_node/src/config.rs b/beacon_node/src/config.rs index 55664897e8..8cc38a534b 100644 --- a/beacon_node/src/config.rs +++ b/beacon_node/src/config.rs @@ -329,6 +329,9 @@ pub fn get_config( let payload_builder = parse_only_one_value(endpoint, SensitiveUrl::parse, "--builder", log)?; el_config.builder_url = Some(payload_builder); + + el_config.builder_user_agent = + clap_utils::parse_optional(cli_args, "builder-user-agent")?; } // Set config values from parse values. diff --git a/lighthouse/tests/beacon_node.rs b/lighthouse/tests/beacon_node.rs index c116979366..9dd67eadc6 100644 --- a/lighthouse/tests/beacon_node.rs +++ b/lighthouse/tests/beacon_node.rs @@ -716,6 +716,40 @@ fn builder_fallback_flags() { ); } +#[test] +fn builder_user_agent() { + run_payload_builder_flag_test_with_config( + "builder", + "http://meow.cats", + None, + None, + |config| { + assert_eq!( + config.execution_layer.as_ref().unwrap().builder_user_agent, + None + ); + }, + ); + run_payload_builder_flag_test_with_config( + "builder", + "http://meow.cats", + Some("builder-user-agent"), + Some("anon"), + |config| { + assert_eq!( + config + .execution_layer + .as_ref() + .unwrap() + .builder_user_agent + .as_ref() + .unwrap(), + "anon" + ); + }, + ); +} + fn run_jwt_optional_flags_test(jwt_flag: &str, jwt_id_flag: &str, jwt_version_flag: &str) { use sensitive_url::SensitiveUrl; From 434386774eb99df3c4c479b484001290c28f89cb Mon Sep 17 00:00:00 2001 From: Jimmy Chen Date: Tue, 18 Apr 2023 02:47:37 +0000 Subject: [PATCH 28/56] Bump Rust version (MSRV) (#4204) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## Issue Addressed There was a [`VecDeque` bug](https://github.com/rust-lang/rust/issues/108453) in some recent versions of the Rust standard library (1.67.0 & 1.67.1) that could cause Lighthouse to panic (reported by `@Sea Monkey` on discord). See full logs below. The issue was likely introduced in Rust 1.67.0 and [fixed](https://github.com/rust-lang/rust/pull/108475) in 1.68, and we were able to reproduce the panic ourselves using [@michaelsproul's fuzz tests](https://github.com/michaelsproul/lighthouse/blob/fuzz-lru-time-cache/beacon_node/lighthouse_network/src/peer_manager/fuzz.rs#L111) on both Rust 1.67.0 and 1.67.1. Users that uses our Docker images or binaries are unlikely affected, as our Docker images were built with `1.66`, and latest binaries were built with latest stable (`1.68.2`). It likely impacts user that builds from source using Rust versions 1.67.x. ## Proposed Changes Bump Rust version (MSRV) to latest stable `1.68.2`. ## Additional Info From `@Sea Monkey` on Lighthouse Discord: > Crash on goerli using `unstable` `dd124b2d6804d02e4e221f29387a56775acccd08` ``` thread 'tokio-runtime-worker' panicked at 'Key must exist', /mnt/goerli/goerli/lighthouse/common/lru_cache/src/time.rs:68:28 stack backtrace: Apr 15 09:37:36.993 WARN Peer sent invalid block in single block lookup, peer_id: 16Uiu2HAm6ZuyJpVpR6y51X4Enbp8EhRBqGycQsDMPX7e5XfPYznG, error: WouldRevertFinalizedSlot { block_slot: Slot(5420212), finalized_slot: Slot(5420224) }, root: 0x10f6…3165, service: sync 0: rust_begin_unwind at /rustc/d5a82bbd26e1ad8b7401f6a718a9c57c96905483/library/std/src/panicking.rs:575:5 1: core::panicking::panic_fmt at /rustc/d5a82bbd26e1ad8b7401f6a718a9c57c96905483/library/core/src/panicking.rs:64:14 2: core::panicking::panic_display at /rustc/d5a82bbd26e1ad8b7401f6a718a9c57c96905483/library/core/src/panicking.rs:135:5 3: core::panicking::panic_str at /rustc/d5a82bbd26e1ad8b7401f6a718a9c57c96905483/library/core/src/panicking.rs:119:5 4: core::option::expect_failed at /rustc/d5a82bbd26e1ad8b7401f6a718a9c57c96905483/library/core/src/option.rs:1879:5 5: lru_cache::time::LRUTimeCache::raw_remove 6: lighthouse_network::peer_manager::PeerManager::handle_ban_operation 7: lighthouse_network::peer_manager::PeerManager::handle_score_action 8: lighthouse_network::peer_manager::PeerManager::report_peer 9: network::service::NetworkService::spawn_service::{{closure}} 10: as core::future::future::Future>::poll 11: as core::future::future::Future>::poll 12: ::Output> as core::future::future::Future>::poll 13: tokio::loom::std::unsafe_cell::UnsafeCell::with_mut 14: tokio::runtime::task::core::Core::poll 15: tokio::runtime::task::harness::Harness::poll 16: tokio::runtime::scheduler::multi_thread::worker::Context::run_task 17: tokio::runtime::scheduler::multi_thread::worker::Context::run 18: tokio::macros::scoped_tls::ScopedKey::set 19: tokio::runtime::scheduler::multi_thread::worker::run 20: tokio::loom::std::unsafe_cell::UnsafeCell::with_mut 21: tokio::runtime::task::core::Core::poll 22: tokio::runtime::task::harness::Harness::poll 23: tokio::runtime::blocking::pool::Inner::run note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace. Apr 15 09:37:37.069 INFO Saved DHT state service: network Apr 15 09:37:37.070 INFO Network service shutdown service: network Apr 15 09:37:37.132 CRIT Task panic. This is a bug! advice: Please check above for a backtrace and notify the developers, message: , task_name: network Apr 15 09:37:37.132 INFO Internal shutdown received reason: Panic (fatal error) Apr 15 09:37:37.133 INFO Shutting down.. reason: Failure("Panic (fatal error)") Apr 15 09:37:37.135 WARN Unable to free worker error: channel closed, msg: did not free worker, shutdown may be underway Apr 15 09:37:39.350 INFO Saved beacon chain to disk service: beacon Panic (fatal error) ``` --- .github/workflows/test-suite.yml | 2 +- Dockerfile | 2 +- lcli/Dockerfile | 2 +- lighthouse/Cargo.toml | 2 +- testing/antithesis/Dockerfile.libvoidstar | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/test-suite.yml b/.github/workflows/test-suite.yml index 445f71fa09..b7321df784 100644 --- a/.github/workflows/test-suite.yml +++ b/.github/workflows/test-suite.yml @@ -13,7 +13,7 @@ env: # Disable debug info (see https://github.com/sigp/lighthouse/issues/4005) RUSTFLAGS: "-D warnings -C debuginfo=0" # The Nightly version used for cargo-udeps, might need updating from time to time. - PINNED_NIGHTLY: nightly-2022-12-15 + PINNED_NIGHTLY: nightly-2023-04-16 # Prevent Github API rate limiting. LIGHTHOUSE_GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} jobs: diff --git a/Dockerfile b/Dockerfile index 25ca075387..0d268c7e1a 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM rust:1.66.0-bullseye AS builder +FROM rust:1.68.2-bullseye AS builder RUN apt-get update && apt-get -y upgrade && apt-get install -y cmake libclang-dev protobuf-compiler COPY . lighthouse ARG FEATURES diff --git a/lcli/Dockerfile b/lcli/Dockerfile index 079e5c779b..98f33f2153 100644 --- a/lcli/Dockerfile +++ b/lcli/Dockerfile @@ -1,7 +1,7 @@ # `lcli` requires the full project to be in scope, so this should be built either: # - from the `lighthouse` dir with the command: `docker build -f ./lcli/Dockerflie .` # - from the current directory with the command: `docker build -f ./Dockerfile ../` -FROM rust:1.66.0-bullseye AS builder +FROM rust:1.68.2-bullseye AS builder RUN apt-get update && apt-get -y upgrade && apt-get install -y cmake libclang-dev protobuf-compiler COPY . lighthouse ARG PORTABLE diff --git a/lighthouse/Cargo.toml b/lighthouse/Cargo.toml index 2b7727ec11..97289bf459 100644 --- a/lighthouse/Cargo.toml +++ b/lighthouse/Cargo.toml @@ -4,7 +4,7 @@ version = "4.0.1" authors = ["Sigma Prime "] edition = "2021" autotests = false -rust-version = "1.66" +rust-version = "1.68.2" [features] default = ["slasher-mdbx"] diff --git a/testing/antithesis/Dockerfile.libvoidstar b/testing/antithesis/Dockerfile.libvoidstar index bae1807329..ddc49e13cd 100644 --- a/testing/antithesis/Dockerfile.libvoidstar +++ b/testing/antithesis/Dockerfile.libvoidstar @@ -1,4 +1,4 @@ -FROM rust:1.66.1-bullseye AS builder +FROM rust:1.68.2-bullseye AS builder RUN apt-get update && apt-get -y upgrade && apt-get install -y cmake libclang-dev protobuf-compiler COPY . lighthouse From 48843ba19843378da51a12d326ef989124162d92 Mon Sep 17 00:00:00 2001 From: Paul Hauner Date: Wed, 19 Apr 2023 04:23:20 +0000 Subject: [PATCH 29/56] Check lateness of block before requeuing it (#4208) ## Issue Addressed NA ## Proposed Changes Avoids reprocessing loops introduced in #4179. (Also somewhat related to #4192). Breaks the re-queue loop by only re-queuing when an RPC block is received before the attestation creation deadline. I've put `proposal_is_known` behind a closure to avoid interacting with the `observed_proposers` lock unnecessarily. ## Additional Info NA --- .../beacon_processor/worker/sync_methods.rs | 52 +++++++++++++------ 1 file changed, 36 insertions(+), 16 deletions(-) diff --git a/beacon_node/network/src/beacon_processor/worker/sync_methods.rs b/beacon_node/network/src/beacon_processor/worker/sync_methods.rs index 6faf7ebd37..ca2095348a 100644 --- a/beacon_node/network/src/beacon_processor/worker/sync_methods.rs +++ b/beacon_node/network/src/beacon_processor/worker/sync_methods.rs @@ -9,12 +9,15 @@ use crate::sync::manager::{BlockProcessType, SyncMessage}; use crate::sync::{BatchProcessResult, ChainId}; use beacon_chain::CountUnrealized; use beacon_chain::{ - observed_block_producers::Error as ObserveError, BeaconChainError, BeaconChainTypes, - BlockError, ChainSegmentResult, HistoricalBlockError, NotifyExecutionLayer, + observed_block_producers::Error as ObserveError, validator_monitor::get_block_delay_ms, + BeaconChainError, BeaconChainTypes, BlockError, ChainSegmentResult, HistoricalBlockError, + NotifyExecutionLayer, }; use lighthouse_network::PeerAction; use slog::{debug, error, info, warn}; +use slot_clock::SlotClock; use std::sync::Arc; +use std::time::{SystemTime, UNIX_EPOCH}; use tokio::sync::mpsc; use types::{Epoch, Hash256, SignedBeaconBlock}; @@ -83,21 +86,38 @@ impl Worker { return; } }; - // Check if a block from this proposer is already known. If so, defer processing until later - // to avoid wasting time processing duplicates. - let proposal_already_known = match self - .chain - .observed_block_producers - .read() - .proposer_has_been_observed(block.message()) - { - Ok(is_observed) => is_observed, - // Both of these blocks will be rejected, so reject them now rather - // than re-queuing them. - Err(ObserveError::FinalizedBlock { .. }) - | Err(ObserveError::ValidatorIndexTooHigh { .. }) => false, + + // Returns `true` if the time now is after the 4s attestation deadline. + let block_is_late = SystemTime::now() + .duration_since(UNIX_EPOCH) + // If we can't read the system time clock then indicate that the + // block is late (and therefore should *not* be requeued). This + // avoids infinite loops. + .map_or(true, |now| { + get_block_delay_ms(now, block.message(), &self.chain.slot_clock) + > self.chain.slot_clock.unagg_attestation_production_delay() + }); + + // Checks if a block from this proposer is already known. + let proposal_already_known = || { + match self + .chain + .observed_block_producers + .read() + .proposer_has_been_observed(block.message()) + { + Ok(is_observed) => is_observed, + // Both of these blocks will be rejected, so reject them now rather + // than re-queuing them. + Err(ObserveError::FinalizedBlock { .. }) + | Err(ObserveError::ValidatorIndexTooHigh { .. }) => false, + } }; - if proposal_already_known { + + // If we've already seen a block from this proposer *and* the block + // arrived before the attestation deadline, requeue it to ensure it is + // imported late enough that it won't receive a proposer boost. + if !block_is_late && proposal_already_known() { debug!( self.log, "Delaying processing of duplicate RPC block"; From 693886b94176faa4cb450f024696cb69cda2fe58 Mon Sep 17 00:00:00 2001 From: Paul Hauner Date: Thu, 20 Apr 2023 00:51:38 +0000 Subject: [PATCH 30/56] Release v4.1.0 (#4191) ## Issue Addressed NA ## Proposed Changes Bump versions. ## Additional Info NA --- Cargo.lock | 8 ++++---- beacon_node/Cargo.toml | 2 +- boot_node/Cargo.toml | 2 +- common/lighthouse_version/src/lib.rs | 4 ++-- lcli/Cargo.toml | 2 +- lighthouse/Cargo.toml | 2 +- 6 files changed, 10 insertions(+), 10 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 47fab8c0f6..a0f9fc7491 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -639,7 +639,7 @@ dependencies = [ [[package]] name = "beacon_node" -version = "4.0.1" +version = "4.1.0" dependencies = [ "beacon_chain", "clap", @@ -818,7 +818,7 @@ dependencies = [ [[package]] name = "boot_node" -version = "4.0.1" +version = "4.1.0" dependencies = [ "beacon_node", "clap", @@ -3841,7 +3841,7 @@ checksum = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55" [[package]] name = "lcli" -version = "4.0.1" +version = "4.1.0" dependencies = [ "account_utils", "beacon_chain", @@ -4492,7 +4492,7 @@ dependencies = [ [[package]] name = "lighthouse" -version = "4.0.1" +version = "4.1.0" dependencies = [ "account_manager", "account_utils", diff --git a/beacon_node/Cargo.toml b/beacon_node/Cargo.toml index d8aa42a67e..95f145a557 100644 --- a/beacon_node/Cargo.toml +++ b/beacon_node/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "beacon_node" -version = "4.0.1" +version = "4.1.0" authors = ["Paul Hauner ", "Age Manning "] edition = "2021" diff --git a/common/lighthouse_version/src/lib.rs b/common/lighthouse_version/src/lib.rs index c1b6333a37..d30f45ca29 100644 --- a/common/lighthouse_version/src/lib.rs +++ b/common/lighthouse_version/src/lib.rs @@ -17,8 +17,8 @@ pub const VERSION: &str = git_version!( // NOTE: using --match instead of --exclude for compatibility with old Git "--match=thiswillnevermatchlol" ], - prefix = "Lighthouse/v4.0.1-", - fallback = "Lighthouse/v4.0.1" + prefix = "Lighthouse/v4.1.0-", + fallback = "Lighthouse/v4.1.0" ); /// Returns `VERSION`, but with platform information appended to the end. diff --git a/lcli/Cargo.toml b/lcli/Cargo.toml index 22c4ce305f..cee62aa5e1 100644 --- a/lcli/Cargo.toml +++ b/lcli/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "lcli" description = "Lighthouse CLI (modeled after zcli)" -version = "4.0.1" +version = "4.1.0" authors = ["Paul Hauner "] edition = "2021" diff --git a/lighthouse/Cargo.toml b/lighthouse/Cargo.toml index 97289bf459..14efb72a3a 100644 --- a/lighthouse/Cargo.toml +++ b/lighthouse/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "lighthouse" -version = "4.0.1" +version = "4.1.0" authors = ["Sigma Prime "] edition = "2021" autotests = false From ed7824869cfd0720daada8ac66e3bea73379e2d5 Mon Sep 17 00:00:00 2001 From: Jimmy Chen Date: Fri, 21 Apr 2023 18:29:27 +0000 Subject: [PATCH 31/56] Update LLVM version to 15.0 in CI workflows (#4220) ## Issue Addressed The latest stable version (1.69.0) of Rust was released on 20 April and contains this change: - [Update the minimum external LLVM to 14.](https://github.com/rust-lang/rust/pull/107573/) This impacts some of our CI workflows (build and release-test-windows) that uses LLVM 13.0. This PR updates the workflows to install LLVM 15.0. **UPDATE**: Also updated `h2` to address [this issue](https://github.com/advisories/GHSA-f8vr-r385-rh5r) --- .github/workflows/release.yml | 2 +- .github/workflows/test-suite.yml | 2 +- Cargo.lock | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 2e63b4d6c2..e6d79bd5ef 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -73,7 +73,7 @@ jobs: - uses: KyleMayes/install-llvm-action@v1 if: startsWith(matrix.arch, 'x86_64-windows') with: - version: "13.0" + version: "15.0" directory: ${{ runner.temp }}/llvm - name: Set LIBCLANG_PATH if: startsWith(matrix.arch, 'x86_64-windows') diff --git a/.github/workflows/test-suite.yml b/.github/workflows/test-suite.yml index b7321df784..b18d7ee959 100644 --- a/.github/workflows/test-suite.yml +++ b/.github/workflows/test-suite.yml @@ -83,7 +83,7 @@ jobs: run: choco install -y make - uses: KyleMayes/install-llvm-action@v1 with: - version: "13.0" + version: "15.0" directory: ${{ runner.temp }}/llvm - name: Set LIBCLANG_PATH run: echo "LIBCLANG_PATH=$((gcm clang).source -replace "clang.exe")" >> $env:GITHUB_ENV diff --git a/Cargo.lock b/Cargo.lock index a0f9fc7491..50446be153 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3068,9 +3068,9 @@ dependencies = [ [[package]] name = "h2" -version = "0.3.16" +version = "0.3.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5be7b54589b581f624f566bf5d8eb2bab1db736c51528720b6bd36b96b55924d" +checksum = "17f8a914c2987b688368b5138aa05321db91f4090cf26118185672ad588bce21" dependencies = [ "bytes", "fnv", From a78285db5e09c097791ebfc4f67c60b7eb8e5a11 Mon Sep 17 00:00:00 2001 From: Pawan Dhananjay Date: Fri, 21 Apr 2023 18:29:28 +0000 Subject: [PATCH 32/56] Fix Rust 1.69 lints (#4222) ## Issue Addressed N/A ## Proposed Changes Fixes lints mostly `extra-unused-type-parameters` https://rust-lang.github.io/rust-clippy/master/index.html#extra_unused_type_paramete --- beacon_node/beacon_chain/src/beacon_chain.rs | 4 +-- beacon_node/beacon_chain/src/eth1_chain.rs | 34 ++++++++----------- .../execution_layer/src/engine_api/http.rs | 2 +- .../types/src/beacon_state/tree_hash_cache.rs | 4 +-- lcli/src/check_deposit_data.rs | 3 +- lcli/src/main.rs | 2 +- 6 files changed, 22 insertions(+), 27 deletions(-) diff --git a/beacon_node/beacon_chain/src/beacon_chain.rs b/beacon_node/beacon_chain/src/beacon_chain.rs index 0165c54dc3..ca0c5ce15b 100644 --- a/beacon_node/beacon_chain/src/beacon_chain.rs +++ b/beacon_node/beacon_chain/src/beacon_chain.rs @@ -3619,7 +3619,7 @@ impl BeaconChain { let (state, state_root_opt) = self .task_executor .spawn_blocking_handle( - move || chain.load_state_for_block_production::(slot), + move || chain.load_state_for_block_production(slot), "produce_partial_beacon_block", ) .ok_or(BlockProductionError::ShuttingDown)? @@ -3642,7 +3642,7 @@ impl BeaconChain { /// Load a beacon state from the database for block production. This is a long-running process /// that should not be performed in an `async` context. - fn load_state_for_block_production>( + fn load_state_for_block_production( self: &Arc, slot: Slot, ) -> Result<(BeaconState, Option), BlockProductionError> { diff --git a/beacon_node/beacon_chain/src/eth1_chain.rs b/beacon_node/beacon_chain/src/eth1_chain.rs index 25971bf85b..f820622e57 100644 --- a/beacon_node/beacon_chain/src/eth1_chain.rs +++ b/beacon_node/beacon_chain/src/eth1_chain.rs @@ -88,7 +88,7 @@ fn get_sync_status( let period = T::SlotsPerEth1VotingPeriod::to_u64(); let voting_period_start_slot = (current_slot / period) * period; - let period_start = slot_start_seconds::( + let period_start = slot_start_seconds( genesis_time, spec.seconds_per_slot, voting_period_start_slot, @@ -470,7 +470,7 @@ impl Eth1ChainBackend for CachingEth1Backend { fn eth1_data(&self, state: &BeaconState, spec: &ChainSpec) -> Result { let period = T::SlotsPerEth1VotingPeriod::to_u64(); let voting_period_start_slot = (state.slot() / period) * period; - let voting_period_start_seconds = slot_start_seconds::( + let voting_period_start_seconds = slot_start_seconds( state.genesis_time(), spec.seconds_per_slot, voting_period_start_slot, @@ -658,11 +658,7 @@ fn find_winning_vote(valid_votes: Eth1DataVoteCount) -> Option { } /// Returns the unix-epoch seconds at the start of the given `slot`. -fn slot_start_seconds( - genesis_unix_seconds: u64, - seconds_per_slot: u64, - slot: Slot, -) -> u64 { +fn slot_start_seconds(genesis_unix_seconds: u64, seconds_per_slot: u64, slot: Slot) -> u64 { genesis_unix_seconds + slot.as_u64() * seconds_per_slot } @@ -698,7 +694,7 @@ mod test { fn get_voting_period_start_seconds(state: &BeaconState, spec: &ChainSpec) -> u64 { let period = ::SlotsPerEth1VotingPeriod::to_u64(); let voting_period_start_slot = (state.slot() / period) * period; - slot_start_seconds::( + slot_start_seconds( state.genesis_time(), spec.seconds_per_slot, voting_period_start_slot, @@ -708,23 +704,23 @@ mod test { #[test] fn slot_start_time() { let zero_sec = 0; - assert_eq!(slot_start_seconds::(100, zero_sec, Slot::new(2)), 100); + assert_eq!(slot_start_seconds(100, zero_sec, Slot::new(2)), 100); let one_sec = 1; - assert_eq!(slot_start_seconds::(100, one_sec, Slot::new(0)), 100); - assert_eq!(slot_start_seconds::(100, one_sec, Slot::new(1)), 101); - assert_eq!(slot_start_seconds::(100, one_sec, Slot::new(2)), 102); + assert_eq!(slot_start_seconds(100, one_sec, Slot::new(0)), 100); + assert_eq!(slot_start_seconds(100, one_sec, Slot::new(1)), 101); + assert_eq!(slot_start_seconds(100, one_sec, Slot::new(2)), 102); let three_sec = 3; - assert_eq!(slot_start_seconds::(100, three_sec, Slot::new(0)), 100); - assert_eq!(slot_start_seconds::(100, three_sec, Slot::new(1)), 103); - assert_eq!(slot_start_seconds::(100, three_sec, Slot::new(2)), 106); + assert_eq!(slot_start_seconds(100, three_sec, Slot::new(0)), 100); + assert_eq!(slot_start_seconds(100, three_sec, Slot::new(1)), 103); + assert_eq!(slot_start_seconds(100, three_sec, Slot::new(2)), 106); let five_sec = 5; - assert_eq!(slot_start_seconds::(100, five_sec, Slot::new(0)), 100); - assert_eq!(slot_start_seconds::(100, five_sec, Slot::new(1)), 105); - assert_eq!(slot_start_seconds::(100, five_sec, Slot::new(2)), 110); - assert_eq!(slot_start_seconds::(100, five_sec, Slot::new(3)), 115); + assert_eq!(slot_start_seconds(100, five_sec, Slot::new(0)), 100); + assert_eq!(slot_start_seconds(100, five_sec, Slot::new(1)), 105); + assert_eq!(slot_start_seconds(100, five_sec, Slot::new(2)), 110); + assert_eq!(slot_start_seconds(100, five_sec, Slot::new(3)), 115); } fn get_eth1_block(timestamp: u64, number: u64) -> Eth1Block { diff --git a/beacon_node/execution_layer/src/engine_api/http.rs b/beacon_node/execution_layer/src/engine_api/http.rs index 993957450b..f542bf5b4a 100644 --- a/beacon_node/execution_layer/src/engine_api/http.rs +++ b/beacon_node/execution_layer/src/engine_api/http.rs @@ -1187,7 +1187,7 @@ mod test { transactions, ..<_>::default() }); - let json = serde_json::to_value(&ep)?; + let json = serde_json::to_value(ep)?; Ok(json.get("transactions").unwrap().clone()) } diff --git a/consensus/types/src/beacon_state/tree_hash_cache.rs b/consensus/types/src/beacon_state/tree_hash_cache.rs index efc6573d2b..d1d63e3c80 100644 --- a/consensus/types/src/beacon_state/tree_hash_cache.rs +++ b/consensus/types/src/beacon_state/tree_hash_cache.rs @@ -403,7 +403,7 @@ impl ValidatorsListTreeHashCache { validators.len(), ), list_arena, - values: ParallelValidatorTreeHash::new::(validators), + values: ParallelValidatorTreeHash::new(validators), } } @@ -468,7 +468,7 @@ impl ParallelValidatorTreeHash { /// /// Allocates the necessary memory to store all of the cached Merkle trees but does perform any /// hashing. - fn new(validators: &[Validator]) -> Self { + fn new(validators: &[Validator]) -> Self { let num_arenas = std::cmp::max( 1, (validators.len() + VALIDATORS_PER_ARENA - 1) / VALIDATORS_PER_ARENA, diff --git a/lcli/src/check_deposit_data.rs b/lcli/src/check_deposit_data.rs index 56f18f9988..47c2c7addf 100644 --- a/lcli/src/check_deposit_data.rs +++ b/lcli/src/check_deposit_data.rs @@ -2,9 +2,8 @@ use clap::ArgMatches; use clap_utils::{parse_required, parse_ssz_required}; use deposit_contract::{decode_eth1_tx_data, DEPOSIT_DATA_LEN}; use tree_hash::TreeHash; -use types::EthSpec; -pub fn run(matches: &ArgMatches) -> Result<(), String> { +pub fn run(matches: &ArgMatches) -> Result<(), String> { let rlp_bytes = parse_ssz_required::>(matches, "deposit-data")?; let amount = parse_required(matches, "deposit-amount")?; diff --git a/lcli/src/main.rs b/lcli/src/main.rs index cdf9cfa677..eeb098f04d 100644 --- a/lcli/src/main.rs +++ b/lcli/src/main.rs @@ -847,7 +847,7 @@ fn run( } ("new-testnet", Some(matches)) => new_testnet::run::(testnet_dir, matches) .map_err(|e| format!("Failed to run new_testnet command: {}", e)), - ("check-deposit-data", Some(matches)) => check_deposit_data::run::(matches) + ("check-deposit-data", Some(matches)) => check_deposit_data::run(matches) .map_err(|e| format!("Failed to run check-deposit-data command: {}", e)), ("generate-bootnode-enr", Some(matches)) => generate_bootnode_enr::run::(matches) .map_err(|e| format!("Failed to run generate-bootnode-enr command: {}", e)), From 90d562b3d46e71a92e05346958404f4d7625472a Mon Sep 17 00:00:00 2001 From: int88 Date: Wed, 26 Apr 2023 01:12:35 +0000 Subject: [PATCH 33/56] add attestation inclusion distance in http api (#4148) ## Issue Addressed #4097 ## Proposed Changes Add attestation inclusion distance in http api, extend `/lighthouse/ui/validator_metrics` to include it. ## Usage ``` curl -X POST "http://localhost:8001/lighthouse/ui/validator_metrics" -d '{"indices": [1]}' -H "Content-Type: application/json" | jq ``` ``` { "data": { "validators": { "1": { "attestation_hits": 3, "attestation_misses": 1, "attestation_hit_percentage": 75, "attestation_head_hits": 3, "attestation_head_misses": 0, "attestation_head_hit_percentage": 100, "attestation_target_hits": 3, "attestation_target_misses": 0, "attestation_target_hit_percentage": 100, "attestation_inclusion_distance": 1 } } } } ``` ## Additional Info NA --- beacon_node/beacon_chain/src/validator_monitor.rs | 8 +++++++- beacon_node/http_api/src/ui.rs | 4 ++++ book/src/api-lighthouse.md | 3 ++- 3 files changed, 13 insertions(+), 2 deletions(-) diff --git a/beacon_node/beacon_chain/src/validator_monitor.rs b/beacon_node/beacon_chain/src/validator_monitor.rs index d79a56df6b..396aac71b0 100644 --- a/beacon_node/beacon_chain/src/validator_monitor.rs +++ b/beacon_node/beacon_chain/src/validator_monitor.rs @@ -199,6 +199,7 @@ pub struct ValidatorMetrics { pub attestation_head_misses: u64, pub attestation_target_hits: u64, pub attestation_target_misses: u64, + pub latest_attestation_inclusion_distance: u64, } impl ValidatorMetrics { @@ -225,6 +226,10 @@ impl ValidatorMetrics { pub fn increment_head_misses(&mut self) { self.attestation_head_misses += 1; } + + pub fn set_latest_inclusion_distance(&mut self, distance: u64) { + self.latest_attestation_inclusion_distance = distance; + } } /// A validator that is being monitored by the `ValidatorMonitor`. @@ -568,7 +573,6 @@ impl ValidatorMonitor { } else { validator_metrics.increment_misses() } - drop(validator_metrics); // Indicates if any attestation made it on-chain. // @@ -693,8 +697,10 @@ impl ValidatorMonitor { &[id], inclusion_delay as i64, ); + validator_metrics.set_latest_inclusion_distance(inclusion_delay); } } + drop(validator_metrics); // Indicates the number of sync committee signatures that made it into // a sync aggregate in the current_epoch (state.epoch - 1). diff --git a/beacon_node/http_api/src/ui.rs b/beacon_node/http_api/src/ui.rs index e8280a796a..8911e785e1 100644 --- a/beacon_node/http_api/src/ui.rs +++ b/beacon_node/http_api/src/ui.rs @@ -165,6 +165,7 @@ pub struct ValidatorMetrics { attestation_target_hits: u64, attestation_target_misses: u64, attestation_target_hit_percentage: f64, + latest_attestation_inclusion_distance: u64, } #[derive(PartialEq, Serialize, Deserialize)] @@ -210,6 +211,8 @@ pub fn post_validator_monitor_metrics( let attestation_head_misses = val_metrics.attestation_head_misses; let attestation_target_hits = val_metrics.attestation_target_hits; let attestation_target_misses = val_metrics.attestation_target_misses; + let latest_attestation_inclusion_distance = + val_metrics.latest_attestation_inclusion_distance; drop(val_metrics); let attestations = attestation_hits + attestation_misses; @@ -242,6 +245,7 @@ pub fn post_validator_monitor_metrics( attestation_target_hits, attestation_target_misses, attestation_target_hit_percentage, + latest_attestation_inclusion_distance, }; validators.insert(id.clone(), metrics); diff --git a/book/src/api-lighthouse.md b/book/src/api-lighthouse.md index 2848180970..1fa7a13971 100644 --- a/book/src/api-lighthouse.md +++ b/book/src/api-lighthouse.md @@ -141,7 +141,8 @@ curl -X POST "http://localhost:5052/lighthouse/ui/validator_metrics" -d '{"indic "attestation_head_hit_percentage": 100, "attestation_target_hits": 5, "attestation_target_misses": 5, - "attestation_target_hit_percentage": 50 + "attestation_target_hit_percentage": 50, + "latest_attestation_inclusion_distance": 1 } } } From 7456e1e8faac7a581705f8e71b0dc4f09a36ee5c Mon Sep 17 00:00:00 2001 From: Age Manning Date: Wed, 26 Apr 2023 01:12:36 +0000 Subject: [PATCH 34/56] Separate BN for block proposals (#4182) It is a well-known fact that IP addresses for beacon nodes used by specific validators can be de-anonymized. There is an assumed risk that a malicious user may attempt to DOS validators when producing blocks to prevent chain growth/liveness. Although there are a number of ideas put forward to address this, there a few simple approaches we can take to mitigate this risk. Currently, a Lighthouse user is able to set a number of beacon-nodes that their validator client can connect to. If one beacon node is taken offline, it can fallback to another. Different beacon nodes can use VPNs or rotate IPs in order to mask their IPs. This PR provides an additional setup option which further mitigates attacks of this kind. This PR introduces a CLI flag --proposer-only to the beacon node. Setting this flag will configure the beacon node to run with minimal peers and crucially will not subscribe to subnets or sync committees. Therefore nodes of this kind should not be identified as nodes connected to validators of any kind. It also introduces a CLI flag --proposer-nodes to the validator client. Users can then provide a number of beacon nodes (which may or may not run the --proposer-only flag) that the Validator client will use for block production and propagation only. If these nodes fail, the validator client will fallback to the default list of beacon nodes. Users are then able to set up a number of beacon nodes dedicated to block proposals (which are unlikely to be identified as validator nodes) and point their validator clients to produce blocks on these nodes and attest on other beacon nodes. An attack attempting to prevent liveness on the eth2 network would then need to preemptively find and attack the proposer nodes which is significantly more difficult than the default setup. This is a follow on from: #3328 Co-authored-by: Michael Sproul Co-authored-by: Paul Hauner --- beacon_node/lighthouse_network/src/config.rs | 4 + .../src/subnet_service/attestation_subnets.rs | 13 ++ .../src/subnet_service/sync_subnets.rs | 9 + beacon_node/src/cli.rs | 10 +- beacon_node/src/config.rs | 17 ++ book/src/SUMMARY.md | 1 + book/src/advanced-proposer-only.md | 71 ++++++++ testing/simulator/src/cli.rs | 12 ++ testing/simulator/src/eth1_sim.rs | 21 ++- testing/simulator/src/local_network.rs | 51 +++++- testing/simulator/src/no_eth1_sim.rs | 6 +- testing/simulator/src/sync_sim.rs | 16 +- validator_client/src/block_service.rs | 102 ++++++++++- validator_client/src/cli.rs | 11 +- validator_client/src/config.rs | 11 ++ validator_client/src/lib.rs | 172 ++++++++++++------ 16 files changed, 452 insertions(+), 75 deletions(-) create mode 100644 book/src/advanced-proposer-only.md diff --git a/beacon_node/lighthouse_network/src/config.rs b/beacon_node/lighthouse_network/src/config.rs index d8efa20209..f4b3b78d04 100644 --- a/beacon_node/lighthouse_network/src/config.rs +++ b/beacon_node/lighthouse_network/src/config.rs @@ -134,6 +134,9 @@ pub struct Config { /// List of extra topics to initially subscribe to as strings. pub topics: Vec, + /// Whether we are running a block proposer only node. + pub proposer_only: bool, + /// Whether metrics are enabled. pub metrics_enabled: bool, @@ -322,6 +325,7 @@ impl Default for Config { import_all_attestations: false, shutdown_after_sync: false, topics: Vec::new(), + proposer_only: false, metrics_enabled: false, enable_light_client_server: false, outbound_rate_limiter_config: None, diff --git a/beacon_node/network/src/subnet_service/attestation_subnets.rs b/beacon_node/network/src/subnet_service/attestation_subnets.rs index 70ba1c8170..e46a52cfb2 100644 --- a/beacon_node/network/src/subnet_service/attestation_subnets.rs +++ b/beacon_node/network/src/subnet_service/attestation_subnets.rs @@ -112,6 +112,9 @@ pub struct AttestationService { #[cfg(feature = "deterministic_long_lived_attnets")] next_long_lived_subscription_event: Pin>, + /// Whether this node is a block proposer-only node. + proposer_only: bool, + /// The logger for the attestation service. log: slog::Logger, } @@ -155,6 +158,7 @@ impl AttestationService { known_validators: HashSetDelay::new(last_seen_val_timeout), waker: None, discovery_disabled: config.disable_discovery, + proposer_only: config.proposer_only, subscribe_all_subnets: config.subscribe_all_subnets, long_lived_subnet_subscription_slots, log, @@ -256,6 +260,11 @@ impl AttestationService { &mut self, subscriptions: Vec, ) -> Result<(), String> { + // If the node is in a proposer-only state, we ignore all subnet subscriptions. + if self.proposer_only { + return Ok(()); + } + // Maps each subnet_id subscription to it's highest slot let mut subnets_to_discover: HashMap = HashMap::new(); for subscription in subscriptions { @@ -450,6 +459,10 @@ impl AttestationService { subnet: SubnetId, attestation: &Attestation, ) -> bool { + // Proposer-only mode does not need to process attestations + if self.proposer_only { + return false; + } self.aggregate_validators_on_subnet .as_ref() .map(|tracked_vals| { diff --git a/beacon_node/network/src/subnet_service/sync_subnets.rs b/beacon_node/network/src/subnet_service/sync_subnets.rs index 0b27ff527f..eda7ce8efb 100644 --- a/beacon_node/network/src/subnet_service/sync_subnets.rs +++ b/beacon_node/network/src/subnet_service/sync_subnets.rs @@ -54,6 +54,9 @@ pub struct SyncCommitteeService { /// We are always subscribed to all subnets. subscribe_all_subnets: bool, + /// Whether this node is a block proposer-only node. + proposer_only: bool, + /// The logger for the attestation service. log: slog::Logger, } @@ -82,6 +85,7 @@ impl SyncCommitteeService { waker: None, subscribe_all_subnets: config.subscribe_all_subnets, discovery_disabled: config.disable_discovery, + proposer_only: config.proposer_only, log, } } @@ -110,6 +114,11 @@ impl SyncCommitteeService { &mut self, subscriptions: Vec, ) -> Result<(), String> { + // A proposer-only node does not subscribe to any sync-committees + if self.proposer_only { + return Ok(()); + } + let mut subnets_to_discover = Vec::new(); for subscription in subscriptions { metrics::inc_counter(&metrics::SYNC_COMMITTEE_SUBSCRIPTION_REQUESTS); diff --git a/beacon_node/src/cli.rs b/beacon_node/src/cli.rs index 25521ec242..a578ac7ea2 100644 --- a/beacon_node/src/cli.rs +++ b/beacon_node/src/cli.rs @@ -123,7 +123,6 @@ pub fn cli_app<'a, 'b>() -> App<'a, 'b> { Arg::with_name("target-peers") .long("target-peers") .help("The target number of peers.") - .default_value("80") .takes_value(true), ) .arg( @@ -269,6 +268,15 @@ pub fn cli_app<'a, 'b>() -> App<'a, 'b> { .min_values(0) .hidden(true) ) + .arg( + Arg::with_name("proposer-only") + .long("proposer-only") + .help("Sets this beacon node at be a block proposer only node. \ + This will run the beacon node in a minimal configuration that is sufficient for block publishing only. This flag should be used \ + for a beacon node being referenced by validator client using the --proposer-node flag. This configuration is for enabling more secure setups.") + .takes_value(false), + ) + .arg( Arg::with_name("disable-backfill-rate-limiting") .long("disable-backfill-rate-limiting") diff --git a/beacon_node/src/config.rs b/beacon_node/src/config.rs index 8cc38a534b..7cd2a62799 100644 --- a/beacon_node/src/config.rs +++ b/beacon_node/src/config.rs @@ -979,10 +979,13 @@ pub fn set_network_config( config.set_listening_addr(parse_listening_addresses(cli_args, log)?); + // A custom target-peers command will overwrite the --proposer-only default. if let Some(target_peers_str) = cli_args.value_of("target-peers") { config.target_peers = target_peers_str .parse::() .map_err(|_| format!("Invalid number of target peers: {}", target_peers_str))?; + } else { + config.target_peers = 80; // default value } if let Some(value) = cli_args.value_of("network-load") { @@ -1218,6 +1221,20 @@ pub fn set_network_config( config.outbound_rate_limiter_config = Some(Default::default()); } + // Proposer-only mode overrides a number of previous configuration parameters. + // Specifically, we avoid subscribing to long-lived subnets and wish to maintain a minimal set + // of peers. + if cli_args.is_present("proposer-only") { + config.subscribe_all_subnets = false; + + if cli_args.value_of("target-peers").is_none() { + // If a custom value is not set, change the default to 15 + config.target_peers = 15; + } + config.proposer_only = true; + warn!(log, "Proposer-only mode enabled"; "info"=> "Do not connect a validator client to this node unless via the --proposer-nodes flag"); + } + Ok(()) } diff --git a/book/src/SUMMARY.md b/book/src/SUMMARY.md index ff5c1e9805..83429dc3d5 100644 --- a/book/src/SUMMARY.md +++ b/book/src/SUMMARY.md @@ -41,6 +41,7 @@ * [Checkpoint Sync](./checkpoint-sync.md) * [Custom Data Directories](./advanced-datadir.md) * [Validator Graffiti](./graffiti.md) + * [Proposer Only Beacon Nodes](./advanced-proposer-only.md) * [Remote Signing with Web3Signer](./validator-web3signer.md) * [Database Configuration](./advanced_database.md) * [Database Migrations](./database-migrations.md) diff --git a/book/src/advanced-proposer-only.md b/book/src/advanced-proposer-only.md new file mode 100644 index 0000000000..c3347e044b --- /dev/null +++ b/book/src/advanced-proposer-only.md @@ -0,0 +1,71 @@ +# Advanced Proposer-Only Beacon Nodes + +Lighthouse allows for more exotic setups that can minimize attack vectors by +adding redundant beacon nodes and dividing the roles of attesting and block +production between them. + +The purpose of this is to minimize attack vectors +where malicious users obtain the network identities (IP addresses) of beacon +nodes corresponding to individual validators and subsequently perform Denial Of Service +attacks on the beacon nodes when they are due to produce a block on the +network. By splitting the duties of attestation and block production across +different beacon nodes, an attacker may not know which node is the block +production node, especially if the user rotates IP addresses of the block +production beacon node in between block proposals (this is in-frequent with +networks with large validator counts). + +## The Beacon Node + +A Lighthouse beacon node can be configured with the `--proposer-only` flag +(i.e. `lighthouse bn --proposer-only`). +Setting a beacon node with this flag will limit its use as a beacon node for +normal activities such as performing attestations, but it will make the node +harder to identify as a potential node to attack and will also consume less +resources. + +Specifically, this flag reduces the default peer count (to a safe minimal +number as maintaining peers on attestation subnets do not need to be considered), +prevents the node from subscribing to any attestation-subnets or +sync-committees which is a primary way for attackers to de-anonymize +validators. + +> Note: Beacon nodes that have set the `--proposer-only` flag should not be connected +> to validator clients unless via the `--proposer-nodes` flag. If connected as a +> normal beacon node, the validator may fail to handle its duties correctly and +> result in a loss of income. + + +## The Validator Client + +The validator client can be given a list of HTTP API endpoints representing +beacon nodes that will be solely used for block propagation on the network, via +the CLI flag `--proposer-nodes`. These nodes can be any working beacon nodes +and do not specifically have to be proposer-only beacon nodes that have been +executed with the `--proposer-only` (although we do recommend this flag for +these nodes for added security). + +> Note: The validator client still requires at least one other beacon node to +> perform its duties and must be specified in the usual `--beacon-nodes` flag. + +> Note: The validator client will attempt to get a block to propose from the +> beacon nodes specified in `--beacon-nodes` before trying `--proposer-nodes`. +> This is because the nodes subscribed to subnets have a higher chance of +> producing a more profitable block. Any block builders should therefore be +> attached to the `--beacon-nodes` and not necessarily the `--proposer-nodes`. + + +## Setup Overview + +The intended set-up to take advantage of this mechanism is to run one (or more) +normal beacon nodes in conjunction with one (or more) proposer-only beacon +nodes. See the [Redundancy](./redundancy.md) section for more information about +setting up redundant beacon nodes. The proposer-only beacon nodes should be +setup to use a different IP address than the primary (non proposer-only) nodes. +For added security, the IP addresses of the proposer-only nodes should be +rotated occasionally such that a new IP-address is used per block proposal. + +A single validator client can then connect to all of the above nodes via the +`--beacon-nodes` and `--proposer-nodes` flags. The resulting setup will allow +the validator client to perform its regular duties on the standard beacon nodes +and when the time comes to propose a block, it will send this block via the +specified proposer-only nodes. diff --git a/testing/simulator/src/cli.rs b/testing/simulator/src/cli.rs index f1196502fb..9668ee8cb4 100644 --- a/testing/simulator/src/cli.rs +++ b/testing/simulator/src/cli.rs @@ -24,6 +24,12 @@ pub fn cli_app<'a, 'b>() -> App<'a, 'b> { .takes_value(true) .default_value("4") .help("Number of beacon nodes")) + .arg(Arg::with_name("proposer-nodes") + .short("n") + .long("nodes") + .takes_value(true) + .default_value("2") + .help("Number of proposer-only beacon nodes")) .arg(Arg::with_name("validators_per_node") .short("v") .long("validators_per_node") @@ -57,6 +63,12 @@ pub fn cli_app<'a, 'b>() -> App<'a, 'b> { .takes_value(true) .default_value("4") .help("Number of beacon nodes")) + .arg(Arg::with_name("proposer-nodes") + .short("n") + .long("nodes") + .takes_value(true) + .default_value("2") + .help("Number of proposer-only beacon nodes")) .arg(Arg::with_name("validators_per_node") .short("v") .long("validators_per_node") diff --git a/testing/simulator/src/eth1_sim.rs b/testing/simulator/src/eth1_sim.rs index 43e8a5cf4d..1699c0e9ee 100644 --- a/testing/simulator/src/eth1_sim.rs +++ b/testing/simulator/src/eth1_sim.rs @@ -27,6 +27,8 @@ const SUGGESTED_FEE_RECIPIENT: [u8; 20] = pub fn run_eth1_sim(matches: &ArgMatches) -> Result<(), String> { let node_count = value_t!(matches, "nodes", usize).expect("missing nodes default"); + let proposer_nodes = value_t!(matches, "proposer-nodes", usize).unwrap_or(0); + println!("PROPOSER-NODES: {}", proposer_nodes); let validators_per_node = value_t!(matches, "validators_per_node", usize) .expect("missing validators_per_node default"); let speed_up_factor = @@ -35,7 +37,8 @@ pub fn run_eth1_sim(matches: &ArgMatches) -> Result<(), String> { let post_merge_sim = matches.is_present("post-merge"); println!("Beacon Chain Simulator:"); - println!(" nodes:{}", node_count); + println!(" nodes:{}, proposer_nodes: {}", node_count, proposer_nodes); + println!(" validators_per_node:{}", validators_per_node); println!(" post merge simulation:{}", post_merge_sim); println!(" continue_after_checks:{}", continue_after_checks); @@ -147,7 +150,7 @@ pub fn run_eth1_sim(matches: &ArgMatches) -> Result<(), String> { beacon_config.sync_eth1_chain = true; beacon_config.eth1.auto_update_interval_millis = eth1_block_time.as_millis() as u64; beacon_config.eth1.chain_id = Eth1Id::from(chain_id); - beacon_config.network.target_peers = node_count - 1; + beacon_config.network.target_peers = node_count + proposer_nodes - 1; beacon_config.network.enr_address = (Some(Ipv4Addr::LOCALHOST), None); @@ -173,7 +176,17 @@ pub fn run_eth1_sim(matches: &ArgMatches) -> Result<(), String> { * One by one, add beacon nodes to the network. */ for _ in 0..node_count - 1 { - network.add_beacon_node(beacon_config.clone()).await?; + network + .add_beacon_node(beacon_config.clone(), false) + .await?; + } + + /* + * One by one, add proposer nodes to the network. + */ + for _ in 0..proposer_nodes - 1 { + println!("Adding a proposer node"); + network.add_beacon_node(beacon_config.clone(), true).await?; } /* @@ -310,7 +323,7 @@ pub fn run_eth1_sim(matches: &ArgMatches) -> Result<(), String> { */ println!( "Simulation complete. Finished with {} beacon nodes and {} validator clients", - network.beacon_node_count(), + network.beacon_node_count() + network.proposer_node_count(), network.validator_client_count() ); diff --git a/testing/simulator/src/local_network.rs b/testing/simulator/src/local_network.rs index 3e481df885..e35870d126 100644 --- a/testing/simulator/src/local_network.rs +++ b/testing/simulator/src/local_network.rs @@ -25,6 +25,7 @@ pub const TERMINAL_BLOCK: u64 = 64; pub struct Inner { pub context: RuntimeContext, pub beacon_nodes: RwLock>>, + pub proposer_nodes: RwLock>>, pub validator_clients: RwLock>>, pub execution_nodes: RwLock>>, } @@ -97,6 +98,7 @@ impl LocalNetwork { inner: Arc::new(Inner { context, beacon_nodes: RwLock::new(vec![beacon_node]), + proposer_nodes: RwLock::new(vec![]), execution_nodes: RwLock::new(execution_node), validator_clients: RwLock::new(vec![]), }), @@ -111,6 +113,14 @@ impl LocalNetwork { self.beacon_nodes.read().len() } + /// Returns the number of proposer nodes in the network. + /// + /// Note: does not count nodes that are external to this `LocalNetwork` that may have connected + /// (e.g., another Lighthouse process on the same machine.) + pub fn proposer_node_count(&self) -> usize { + self.proposer_nodes.read().len() + } + /// Returns the number of validator clients in the network. /// /// Note: does not count nodes that are external to this `LocalNetwork` that may have connected @@ -120,7 +130,11 @@ impl LocalNetwork { } /// Adds a beacon node to the network, connecting to the 0'th beacon node via ENR. - pub async fn add_beacon_node(&self, mut beacon_config: ClientConfig) -> Result<(), String> { + pub async fn add_beacon_node( + &self, + mut beacon_config: ClientConfig, + is_proposer: bool, + ) -> Result<(), String> { let self_1 = self.clone(); let count = self.beacon_node_count() as u16; println!("Adding beacon node.."); @@ -135,6 +149,7 @@ impl LocalNetwork { .enr() .expect("bootnode must have a network"), ); + let count = (self.beacon_node_count() + self.proposer_node_count()) as u16; beacon_config.network.set_ipv4_listening_address( std::net::Ipv4Addr::UNSPECIFIED, BOOTNODE_PORT + count, @@ -143,6 +158,7 @@ impl LocalNetwork { beacon_config.network.enr_udp4_port = Some(BOOTNODE_PORT + count); beacon_config.network.enr_tcp4_port = Some(BOOTNODE_PORT + count); beacon_config.network.discv5_config.table_filter = |_| true; + beacon_config.network.proposer_only = is_proposer; } if let Some(el_config) = &mut beacon_config.execution_layer { let config = MockExecutionConfig { @@ -173,7 +189,11 @@ impl LocalNetwork { beacon_config, ) .await?; - self_1.beacon_nodes.write().push(beacon_node); + if is_proposer { + self_1.proposer_nodes.write().push(beacon_node); + } else { + self_1.beacon_nodes.write().push(beacon_node); + } Ok(()) } @@ -200,6 +220,16 @@ impl LocalNetwork { .http_api_listen_addr() .expect("Must have http started") }; + // If there is a proposer node for the same index, we will use that for proposing + let proposer_socket_addr = { + let read_lock = self.proposer_nodes.read(); + read_lock.get(beacon_node).map(|proposer_node| { + proposer_node + .client + .http_api_listen_addr() + .expect("Must have http started") + }) + }; let beacon_node = SensitiveUrl::parse( format!("http://{}:{}", socket_addr.ip(), socket_addr.port()).as_str(), @@ -210,6 +240,21 @@ impl LocalNetwork { } else { vec![beacon_node] }; + + // If we have a proposer node established, use it. + if let Some(proposer_socket_addr) = proposer_socket_addr { + let url = SensitiveUrl::parse( + format!( + "http://{}:{}", + proposer_socket_addr.ip(), + proposer_socket_addr.port() + ) + .as_str(), + ) + .unwrap(); + validator_config.proposer_nodes = vec![url]; + } + let validator_client = LocalValidatorClient::production_with_insecure_keypairs( context, validator_config, @@ -223,9 +268,11 @@ impl LocalNetwork { /// For all beacon nodes in `Self`, return a HTTP client to access each nodes HTTP API. pub fn remote_nodes(&self) -> Result, String> { let beacon_nodes = self.beacon_nodes.read(); + let proposer_nodes = self.proposer_nodes.read(); beacon_nodes .iter() + .chain(proposer_nodes.iter()) .map(|beacon_node| beacon_node.remote_node()) .collect() } diff --git a/testing/simulator/src/no_eth1_sim.rs b/testing/simulator/src/no_eth1_sim.rs index f1f6dc4426..b7598f9fa7 100644 --- a/testing/simulator/src/no_eth1_sim.rs +++ b/testing/simulator/src/no_eth1_sim.rs @@ -100,7 +100,9 @@ pub fn run_no_eth1_sim(matches: &ArgMatches) -> Result<(), String> { */ for _ in 0..node_count - 1 { - network.add_beacon_node(beacon_config.clone()).await?; + network + .add_beacon_node(beacon_config.clone(), false) + .await?; } /* @@ -151,7 +153,7 @@ pub fn run_no_eth1_sim(matches: &ArgMatches) -> Result<(), String> { */ println!( "Simulation complete. Finished with {} beacon nodes and {} validator clients", - network.beacon_node_count(), + network.beacon_node_count() + network.proposer_node_count(), network.validator_client_count() ); diff --git a/testing/simulator/src/sync_sim.rs b/testing/simulator/src/sync_sim.rs index c437457c20..5eaed809df 100644 --- a/testing/simulator/src/sync_sim.rs +++ b/testing/simulator/src/sync_sim.rs @@ -228,7 +228,7 @@ pub async fn verify_one_node_sync( ) .await; // Add a beacon node - network.add_beacon_node(beacon_config).await?; + network.add_beacon_node(beacon_config, false).await?; // Check every `epoch_duration` if nodes are synced // limited to at most `sync_timeout` epochs let mut interval = tokio::time::interval(epoch_duration); @@ -265,8 +265,10 @@ pub async fn verify_two_nodes_sync( ) .await; // Add beacon nodes - network.add_beacon_node(beacon_config.clone()).await?; - network.add_beacon_node(beacon_config).await?; + network + .add_beacon_node(beacon_config.clone(), false) + .await?; + network.add_beacon_node(beacon_config, false).await?; // Check every `epoch_duration` if nodes are synced // limited to at most `sync_timeout` epochs let mut interval = tokio::time::interval(epoch_duration); @@ -305,8 +307,10 @@ pub async fn verify_in_between_sync( ) .await; // Add two beacon nodes - network.add_beacon_node(beacon_config.clone()).await?; - network.add_beacon_node(beacon_config).await?; + network + .add_beacon_node(beacon_config.clone(), false) + .await?; + network.add_beacon_node(beacon_config, false).await?; // Delay before adding additional syncing nodes. epoch_delay( Epoch::new(sync_timeout - 5), @@ -315,7 +319,7 @@ pub async fn verify_in_between_sync( ) .await; // Add a beacon node - network.add_beacon_node(config1.clone()).await?; + network.add_beacon_node(config1.clone(), false).await?; // Check every `epoch_duration` if nodes are synced // limited to at most `sync_timeout` epochs let mut interval = tokio::time::interval(epoch_duration); diff --git a/validator_client/src/block_service.rs b/validator_client/src/block_service.rs index 3b37492377..61a5a094cd 100644 --- a/validator_client/src/block_service.rs +++ b/validator_client/src/block_service.rs @@ -7,8 +7,11 @@ use crate::{ }; use crate::{http_metrics::metrics, validator_store::ValidatorStore}; use environment::RuntimeContext; +use eth2::BeaconNodeHttpClient; use slog::{crit, debug, error, info, trace, warn}; use slot_clock::SlotClock; +use std::fmt::Debug; +use std::future::Future; use std::ops::Deref; use std::sync::Arc; use std::time::Duration; @@ -45,6 +48,7 @@ pub struct BlockServiceBuilder { validator_store: Option>>, slot_clock: Option>, beacon_nodes: Option>>, + proposer_nodes: Option>>, context: Option>, graffiti: Option, graffiti_file: Option, @@ -57,6 +61,7 @@ impl BlockServiceBuilder { validator_store: None, slot_clock: None, beacon_nodes: None, + proposer_nodes: None, context: None, graffiti: None, graffiti_file: None, @@ -79,6 +84,11 @@ impl BlockServiceBuilder { self } + pub fn proposer_nodes(mut self, proposer_nodes: Arc>) -> Self { + self.proposer_nodes = Some(proposer_nodes); + self + } + pub fn runtime_context(mut self, context: RuntimeContext) -> Self { self.context = Some(context); self @@ -114,6 +124,7 @@ impl BlockServiceBuilder { context: self .context .ok_or("Cannot build BlockService without runtime_context")?, + proposer_nodes: self.proposer_nodes, graffiti: self.graffiti, graffiti_file: self.graffiti_file, block_delay: self.block_delay, @@ -122,11 +133,81 @@ impl BlockServiceBuilder { } } +// Combines a set of non-block-proposing `beacon_nodes` and only-block-proposing +// `proposer_nodes`. +pub struct ProposerFallback { + beacon_nodes: Arc>, + proposer_nodes: Option>>, +} + +impl ProposerFallback { + // Try `func` on `self.proposer_nodes` first. If that doesn't work, try `self.beacon_nodes`. + pub async fn first_success_try_proposers_first<'a, F, O, Err, R>( + &'a self, + require_synced: RequireSynced, + offline_on_failure: OfflineOnFailure, + func: F, + ) -> Result> + where + F: Fn(&'a BeaconNodeHttpClient) -> R + Clone, + R: Future>, + Err: Debug, + { + // If there are proposer nodes, try calling `func` on them and return early if they are successful. + if let Some(proposer_nodes) = &self.proposer_nodes { + if let Ok(result) = proposer_nodes + .first_success(require_synced, offline_on_failure, func.clone()) + .await + { + return Ok(result); + } + } + + // If the proposer nodes failed, try on the non-proposer nodes. + self.beacon_nodes + .first_success(require_synced, offline_on_failure, func) + .await + } + + // Try `func` on `self.beacon_nodes` first. If that doesn't work, try `self.proposer_nodes`. + pub async fn first_success_try_proposers_last<'a, F, O, Err, R>( + &'a self, + require_synced: RequireSynced, + offline_on_failure: OfflineOnFailure, + func: F, + ) -> Result> + where + F: Fn(&'a BeaconNodeHttpClient) -> R + Clone, + R: Future>, + Err: Debug, + { + // Try running `func` on the non-proposer beacon nodes. + let beacon_nodes_result = self + .beacon_nodes + .first_success(require_synced, offline_on_failure, func.clone()) + .await; + + match (beacon_nodes_result, &self.proposer_nodes) { + // The non-proposer node call succeed, return the result. + (Ok(success), _) => Ok(success), + // The non-proposer node call failed, but we don't have any proposer nodes. Return an error. + (Err(e), None) => Err(e), + // The non-proposer node call failed, try the same call on the proposer nodes. + (Err(_), Some(proposer_nodes)) => { + proposer_nodes + .first_success(require_synced, offline_on_failure, func) + .await + } + } + } +} + /// Helper to minimise `Arc` usage. pub struct Inner { validator_store: Arc>, slot_clock: Arc, beacon_nodes: Arc>, + proposer_nodes: Option>>, context: RuntimeContext, graffiti: Option, graffiti_file: Option, @@ -334,16 +415,23 @@ impl BlockService { let self_ref = &self; let proposer_index = self.validator_store.validator_index(&validator_pubkey); let validator_pubkey_ref = &validator_pubkey; + let proposer_fallback = ProposerFallback { + beacon_nodes: self.beacon_nodes.clone(), + proposer_nodes: self.proposer_nodes.clone(), + }; info!( log, "Requesting unsigned block"; "slot" => slot.as_u64(), ); + // Request block from first responsive beacon node. - let block = self - .beacon_nodes - .first_success( + // + // Try the proposer nodes last, since it's likely that they don't have a + // great view of attestations on the network. + let block = proposer_fallback + .first_success_try_proposers_last( RequireSynced::No, OfflineOnFailure::Yes, |beacon_node| async move { @@ -424,8 +512,12 @@ impl BlockService { ); // Publish block with first available beacon node. - self.beacon_nodes - .first_success( + // + // Try the proposer nodes first, since we've likely gone to efforts to + // protect them from DoS attacks and they're most likely to successfully + // publish a block. + proposer_fallback + .first_success_try_proposers_first( RequireSynced::No, OfflineOnFailure::Yes, |beacon_node| async { diff --git a/validator_client/src/cli.rs b/validator_client/src/cli.rs index fd96aa1f5c..41ef85dfcd 100644 --- a/validator_client/src/cli.rs +++ b/validator_client/src/cli.rs @@ -26,6 +26,15 @@ pub fn cli_app<'a, 'b>() -> App<'a, 'b> { ) .takes_value(true), ) + .arg( + Arg::with_name("proposer-nodes") + .long("proposer-nodes") + .value_name("NETWORK_ADDRESSES") + .help("Comma-separated addresses to one or more beacon node HTTP APIs. \ + These specify nodes that are used to send beacon block proposals. A failure will revert back to the standard beacon nodes specified in --beacon-nodes." + ) + .takes_value(true), + ) .arg( Arg::with_name("disable-run-on-all") .long("disable-run-on-all") @@ -118,7 +127,7 @@ pub fn cli_app<'a, 'b>() -> App<'a, 'b> { .value_name("CERTIFICATE-FILES") .takes_value(true) .help("Comma-separated paths to custom TLS certificates to use when connecting \ - to a beacon node. These certificates must be in PEM format and are used \ + to a beacon node (and/or proposer node). These certificates must be in PEM format and are used \ in addition to the OS trust store. Commas must only be used as a \ delimiter, and must not be part of the certificate path.") ) diff --git a/validator_client/src/config.rs b/validator_client/src/config.rs index 724d6c74f1..b6e808a86b 100644 --- a/validator_client/src/config.rs +++ b/validator_client/src/config.rs @@ -29,6 +29,8 @@ pub struct Config { /// /// Should be similar to `["http://localhost:8080"]` pub beacon_nodes: Vec, + /// An optional beacon node used for block proposals only. + pub proposer_nodes: Vec, /// If true, the validator client will still poll for duties and produce blocks even if the /// beacon node is not synced at startup. pub allow_unsynced_beacon_node: bool, @@ -95,6 +97,7 @@ impl Default for Config { validator_dir, secrets_dir, beacon_nodes, + proposer_nodes: Vec::new(), allow_unsynced_beacon_node: false, disable_auto_discover: false, init_slashing_protection: false, @@ -186,6 +189,14 @@ impl Config { .map_err(|e| format!("Unable to parse beacon node URL: {:?}", e))?]; } + if let Some(proposer_nodes) = parse_optional::(cli_args, "proposer_nodes")? { + config.proposer_nodes = proposer_nodes + .split(',') + .map(SensitiveUrl::parse) + .collect::>() + .map_err(|e| format!("Unable to parse proposer node URL: {:?}", e))?; + } + if cli_args.is_present("delete-lockfiles") { warn!( log, diff --git a/validator_client/src/lib.rs b/validator_client/src/lib.rs index 556fdef26b..cfe355f54e 100644 --- a/validator_client/src/lib.rs +++ b/validator_client/src/lib.rs @@ -24,6 +24,7 @@ pub use config::Config; use initialized_validators::InitializedValidators; use lighthouse_metrics::set_gauge; use monitoring_api::{MonitoringHttpClient, ProcessType}; +use sensitive_url::SensitiveUrl; pub use slashing_protection::{SlashingDatabase, SLASHING_PROTECTION_FILENAME}; use crate::beacon_node_fallback::{ @@ -263,60 +264,70 @@ impl ProductionValidatorClient { .checked_sub(1) .ok_or_else(|| "No beacon nodes defined.".to_string())?; + let beacon_node_setup = |x: (usize, &SensitiveUrl)| { + let i = x.0; + let url = x.1; + let slot_duration = Duration::from_secs(context.eth2_config.spec.seconds_per_slot); + + let mut beacon_node_http_client_builder = ClientBuilder::new(); + + // Add new custom root certificates if specified. + if let Some(certificates) = &config.beacon_nodes_tls_certs { + for cert in certificates { + beacon_node_http_client_builder = beacon_node_http_client_builder + .add_root_certificate(load_pem_certificate(cert)?); + } + } + + let beacon_node_http_client = beacon_node_http_client_builder + // Set default timeout to be the full slot duration. + .timeout(slot_duration) + .build() + .map_err(|e| format!("Unable to build HTTP client: {:?}", e))?; + + // Use quicker timeouts if a fallback beacon node exists. + let timeouts = if i < last_beacon_node_index && !config.use_long_timeouts { + info!( + log, + "Fallback endpoints are available, using optimized timeouts."; + ); + Timeouts { + attestation: slot_duration / HTTP_ATTESTATION_TIMEOUT_QUOTIENT, + attester_duties: slot_duration / HTTP_ATTESTER_DUTIES_TIMEOUT_QUOTIENT, + liveness: slot_duration / HTTP_LIVENESS_TIMEOUT_QUOTIENT, + proposal: slot_duration / HTTP_PROPOSAL_TIMEOUT_QUOTIENT, + proposer_duties: slot_duration / HTTP_PROPOSER_DUTIES_TIMEOUT_QUOTIENT, + sync_committee_contribution: slot_duration + / HTTP_SYNC_COMMITTEE_CONTRIBUTION_TIMEOUT_QUOTIENT, + sync_duties: slot_duration / HTTP_SYNC_DUTIES_TIMEOUT_QUOTIENT, + get_beacon_blocks_ssz: slot_duration + / HTTP_GET_BEACON_BLOCK_SSZ_TIMEOUT_QUOTIENT, + get_debug_beacon_states: slot_duration / HTTP_GET_DEBUG_BEACON_STATE_QUOTIENT, + get_deposit_snapshot: slot_duration / HTTP_GET_DEPOSIT_SNAPSHOT_QUOTIENT, + } + } else { + Timeouts::set_all(slot_duration) + }; + + Ok(BeaconNodeHttpClient::from_components( + url.clone(), + beacon_node_http_client, + timeouts, + )) + }; + let beacon_nodes: Vec = config .beacon_nodes .iter() .enumerate() - .map(|(i, url)| { - let slot_duration = Duration::from_secs(context.eth2_config.spec.seconds_per_slot); + .map(beacon_node_setup) + .collect::, String>>()?; - let mut beacon_node_http_client_builder = ClientBuilder::new(); - - // Add new custom root certificates if specified. - if let Some(certificates) = &config.beacon_nodes_tls_certs { - for cert in certificates { - beacon_node_http_client_builder = beacon_node_http_client_builder - .add_root_certificate(load_pem_certificate(cert)?); - } - } - - let beacon_node_http_client = beacon_node_http_client_builder - // Set default timeout to be the full slot duration. - .timeout(slot_duration) - .build() - .map_err(|e| format!("Unable to build HTTP client: {:?}", e))?; - - // Use quicker timeouts if a fallback beacon node exists. - let timeouts = if i < last_beacon_node_index && !config.use_long_timeouts { - info!( - log, - "Fallback endpoints are available, using optimized timeouts."; - ); - Timeouts { - attestation: slot_duration / HTTP_ATTESTATION_TIMEOUT_QUOTIENT, - attester_duties: slot_duration / HTTP_ATTESTER_DUTIES_TIMEOUT_QUOTIENT, - liveness: slot_duration / HTTP_LIVENESS_TIMEOUT_QUOTIENT, - proposal: slot_duration / HTTP_PROPOSAL_TIMEOUT_QUOTIENT, - proposer_duties: slot_duration / HTTP_PROPOSER_DUTIES_TIMEOUT_QUOTIENT, - sync_committee_contribution: slot_duration - / HTTP_SYNC_COMMITTEE_CONTRIBUTION_TIMEOUT_QUOTIENT, - sync_duties: slot_duration / HTTP_SYNC_DUTIES_TIMEOUT_QUOTIENT, - get_beacon_blocks_ssz: slot_duration - / HTTP_GET_BEACON_BLOCK_SSZ_TIMEOUT_QUOTIENT, - get_debug_beacon_states: slot_duration - / HTTP_GET_DEBUG_BEACON_STATE_QUOTIENT, - get_deposit_snapshot: slot_duration / HTTP_GET_DEPOSIT_SNAPSHOT_QUOTIENT, - } - } else { - Timeouts::set_all(slot_duration) - }; - - Ok(BeaconNodeHttpClient::from_components( - url.clone(), - beacon_node_http_client, - timeouts, - )) - }) + let proposer_nodes: Vec = config + .proposer_nodes + .iter() + .enumerate() + .map(beacon_node_setup) .collect::, String>>()?; let num_nodes = beacon_nodes.len(); @@ -325,6 +336,12 @@ impl ProductionValidatorClient { .map(CandidateBeaconNode::new) .collect(); + let proposer_nodes_num = proposer_nodes.len(); + let proposer_candidates = proposer_nodes + .into_iter() + .map(CandidateBeaconNode::new) + .collect(); + // Set the count for beacon node fallbacks excluding the primary beacon node. set_gauge( &http_metrics::metrics::ETH2_FALLBACK_CONFIGURED, @@ -349,9 +366,16 @@ impl ProductionValidatorClient { log.clone(), ); + let mut proposer_nodes: BeaconNodeFallback<_, T> = BeaconNodeFallback::new( + proposer_candidates, + config.disable_run_on_all, + context.eth2_config.spec.clone(), + log.clone(), + ); + // Perform some potentially long-running initialization tasks. let (genesis_time, genesis_validators_root) = tokio::select! { - tuple = init_from_beacon_node(&beacon_nodes, &context) => tuple?, + tuple = init_from_beacon_node(&beacon_nodes, &proposer_nodes, &context) => tuple?, () = context.executor.exit() => return Err("Shutting down".to_string()) }; @@ -367,9 +391,14 @@ impl ProductionValidatorClient { ); beacon_nodes.set_slot_clock(slot_clock.clone()); + proposer_nodes.set_slot_clock(slot_clock.clone()); + let beacon_nodes = Arc::new(beacon_nodes); start_fallback_updater_service(context.clone(), beacon_nodes.clone())?; + let proposer_nodes = Arc::new(proposer_nodes); + start_fallback_updater_service(context.clone(), proposer_nodes.clone())?; + let doppelganger_service = if config.enable_doppelganger_protection { Some(Arc::new(DoppelgangerService::new( context @@ -433,15 +462,21 @@ impl ProductionValidatorClient { ctx.shared.write().duties_service = Some(duties_service.clone()); } - let block_service = BlockServiceBuilder::new() + let mut block_service_builder = BlockServiceBuilder::new() .slot_clock(slot_clock.clone()) .validator_store(validator_store.clone()) .beacon_nodes(beacon_nodes.clone()) .runtime_context(context.service_context("block".into())) .graffiti(config.graffiti) .graffiti_file(config.graffiti_file.clone()) - .block_delay(config.block_delay) - .build()?; + .block_delay(config.block_delay); + + // If we have proposer nodes, add them to the block service builder. + if proposer_nodes_num > 0 { + block_service_builder = block_service_builder.proposer_nodes(proposer_nodes.clone()); + } + + let block_service = block_service_builder.build()?; let attestation_service = AttestationServiceBuilder::new() .duties_service(duties_service.clone()) @@ -581,13 +616,32 @@ impl ProductionValidatorClient { async fn init_from_beacon_node( beacon_nodes: &BeaconNodeFallback, + proposer_nodes: &BeaconNodeFallback, context: &RuntimeContext, ) -> Result<(u64, Hash256), String> { loop { beacon_nodes.update_unready_candidates().await; + proposer_nodes.update_unready_candidates().await; + let num_available = beacon_nodes.num_available().await; let num_total = beacon_nodes.num_total(); - if num_available > 0 { + + let proposer_available = beacon_nodes.num_available().await; + let proposer_total = beacon_nodes.num_total(); + + if proposer_total > 0 && proposer_available == 0 { + warn!( + context.log(), + "Unable to connect to a proposer node"; + "retry in" => format!("{} seconds", RETRY_DELAY.as_secs()), + "total_proposers" => proposer_total, + "available_proposers" => proposer_available, + "total_beacon_nodes" => num_total, + "available_beacon_nodes" => num_available, + ); + } + + if num_available > 0 && proposer_available == 0 { info!( context.log(), "Initialized beacon node connections"; @@ -595,6 +649,16 @@ async fn init_from_beacon_node( "available" => num_available, ); break; + } else if num_available > 0 { + info!( + context.log(), + "Initialized beacon node connections"; + "total" => num_total, + "available" => num_available, + "proposers_available" => proposer_available, + "proposers_total" => proposer_total, + ); + break; } else { warn!( context.log(), From c11638c36c25f3af910eecd33a6e45d1caa99f1f Mon Sep 17 00:00:00 2001 From: Michael Sproul Date: Fri, 28 Apr 2023 01:15:40 +0000 Subject: [PATCH 35/56] Split common crates out into their own repos (#3890) ## Proposed Changes Split out several crates which now exist in separate repos under `sigp`. - [`ssz` and `ssz_derive`](https://github.com/sigp/ethereum_ssz) - [`tree_hash` and `tree_hash_derive`](https://github.com/sigp/tree_hash) - [`ethereum_hashing`](https://github.com/sigp/ethereum_hashing) - [`ethereum_serde_utils`](https://github.com/sigp/ethereum_serde_utils) - [`ssz_types`](https://github.com/sigp/ssz_types) For the published crates see: https://crates.io/teams/github:sigp:crates-io?sort=recent-updates. ## Additional Info - [x] Need to work out how to handle versioning. I was hoping to do 1.0 versions of several crates, but if they depend on `ethereum-types 0.x` that is not going to work. EDIT: decided to go with 0.5.x versions. - [x] Need to port several changes from `tree-states`, `capella`, `eip4844` branches to the external repos. --- Cargo.lock | 299 ++-- Cargo.toml | 14 - beacon_node/beacon_chain/Cargo.toml | 10 +- beacon_node/beacon_chain/src/builder.rs | 2 +- beacon_node/beacon_chain/src/eth1_chain.rs | 2 +- beacon_node/eth1/Cargo.toml | 6 +- beacon_node/execution_layer/Cargo.toml | 10 +- beacon_node/execution_layer/src/engine_api.rs | 12 +- .../execution_layer/src/engine_api/http.rs | 2 +- .../src/engine_api/json_structures.rs | 30 +- .../src/test_utils/handle_rpc.rs | 2 +- beacon_node/genesis/Cargo.toml | 6 +- beacon_node/genesis/src/interop.rs | 2 +- beacon_node/http_api/Cargo.toml | 6 +- beacon_node/http_api/src/ui.rs | 6 +- beacon_node/lighthouse_network/Cargo.toml | 10 +- beacon_node/network/Cargo.toml | 4 +- beacon_node/operation_pool/Cargo.toml | 4 +- beacon_node/store/Cargo.toml | 4 +- boot_node/Cargo.toml | 2 +- common/clap_utils/Cargo.toml | 2 +- common/deposit_contract/Cargo.toml | 4 +- common/eth2/Cargo.toml | 6 +- .../src/lighthouse/attestation_rewards.rs | 16 +- .../src/lighthouse/standard_block_rewards.rs | 12 +- .../src/lighthouse/sync_committee_rewards.rs | 4 +- common/eth2/src/lighthouse_vc/http_client.rs | 4 +- common/eth2/src/lighthouse_vc/std_types.rs | 8 +- common/eth2/src/lighthouse_vc/types.rs | 8 +- common/eth2/src/types.rs | 68 +- common/eth2_interop_keypairs/Cargo.toml | 2 +- common/eth2_interop_keypairs/src/lib.rs | 2 +- common/eth2_network_config/Cargo.toml | 2 +- common/validator_dir/Cargo.toml | 2 +- consensus/cached_tree_hash/Cargo.toml | 10 +- consensus/cached_tree_hash/src/cache.rs | 2 +- consensus/cached_tree_hash/src/test.rs | 2 +- consensus/fork_choice/Cargo.toml | 4 +- consensus/merkle_proof/Cargo.toml | 2 +- consensus/merkle_proof/src/lib.rs | 2 +- consensus/proto_array/Cargo.toml | 4 +- consensus/serde_utils/Cargo.toml | 14 - consensus/serde_utils/src/fixed_bytes_hex.rs | 52 - consensus/serde_utils/src/hex.rs | 77 - consensus/serde_utils/src/hex_vec.rs | 23 - consensus/serde_utils/src/json_str.rs | 25 - consensus/serde_utils/src/lib.rs | 15 - .../serde_utils/src/list_of_bytes_lists.rs | 49 - consensus/serde_utils/src/quoted_int.rs | 247 --- consensus/serde_utils/src/quoted_u64_vec.rs | 97 -- consensus/serde_utils/src/u256_hex_be.rs | 144 -- consensus/serde_utils/src/u32_hex.rs | 21 - consensus/serde_utils/src/u64_hex_be.rs | 134 -- consensus/serde_utils/src/u8_hex.rs | 29 - consensus/ssz/Cargo.toml | 21 - consensus/ssz/README.md | 3 - consensus/ssz/examples/large_list.rs | 15 - .../ssz/examples/large_list_of_structs.rs | 31 - consensus/ssz/examples/struct_definition.rs | 73 - consensus/ssz/src/decode.rs | 374 ----- consensus/ssz/src/decode/impls.rs | 776 ---------- consensus/ssz/src/decode/try_from_iter.rs | 103 -- consensus/ssz/src/encode.rs | 196 --- consensus/ssz/src/encode/impls.rs | 633 -------- consensus/ssz/src/legacy.rs | 265 ---- consensus/ssz/src/lib.rs | 71 - consensus/ssz/src/union_selector.rs | 29 - consensus/ssz/tests/tests.rs | 390 ----- consensus/ssz_derive/Cargo.toml | 20 - consensus/ssz_derive/src/lib.rs | 981 ------------ consensus/ssz_derive/tests/tests.rs | 215 --- consensus/ssz_types/Cargo.toml | 25 - consensus/ssz_types/src/bitfield.rs | 1332 ----------------- consensus/ssz_types/src/fixed_vector.rs | 446 ------ consensus/ssz_types/src/lib.rs | 72 - .../src/serde_utils/hex_fixed_vec.rs | 22 - .../ssz_types/src/serde_utils/hex_var_list.rs | 23 - .../src/serde_utils/list_of_hex_var_list.rs | 77 - consensus/ssz_types/src/serde_utils/mod.rs | 5 - .../src/serde_utils/quoted_u64_fixed_vec.rs | 113 -- .../src/serde_utils/quoted_u64_var_list.rs | 139 -- consensus/ssz_types/src/tree_hash.rs | 58 - consensus/ssz_types/src/variable_list.rs | 477 ------ consensus/state_processing/Cargo.toml | 14 +- .../src/common/deposit_data_tree.rs | 2 +- .../verify_bls_to_execution_change.rs | 2 +- consensus/swap_or_not_shuffle/Cargo.toml | 2 +- .../src/compute_shuffled_index.rs | 2 +- .../swap_or_not_shuffle/src/shuffle_list.rs | 2 +- consensus/tree_hash/Cargo.toml | 23 - .../examples/flamegraph_beacon_state.rs | 50 - consensus/tree_hash/src/impls.rs | 222 --- consensus/tree_hash/src/lib.rs | 208 --- consensus/tree_hash/src/merkle_hasher.rs | 573 ------- consensus/tree_hash/src/merkleize_padded.rs | 330 ---- consensus/tree_hash/src/merkleize_standard.rs | 81 - consensus/tree_hash/tests/tests.rs | 128 -- consensus/tree_hash_derive/Cargo.toml | 15 - consensus/tree_hash_derive/src/lib.rs | 336 ----- consensus/types/Cargo.toml | 14 +- consensus/types/src/aggregate_and_proof.rs | 2 +- consensus/types/src/attestation_data.rs | 2 +- consensus/types/src/attestation_duty.rs | 2 +- consensus/types/src/beacon_block.rs | 2 +- consensus/types/src/beacon_block_header.rs | 2 +- consensus/types/src/beacon_state.rs | 10 +- .../types/src/bls_to_execution_change.rs | 2 +- consensus/types/src/builder_bid.rs | 4 +- consensus/types/src/chain_spec.rs | 44 +- consensus/types/src/contribution_and_proof.rs | 2 +- consensus/types/src/deposit_data.rs | 2 +- consensus/types/src/deposit_message.rs | 2 +- consensus/types/src/deposit_tree_snapshot.rs | 2 +- consensus/types/src/enr_fork_id.rs | 4 +- consensus/types/src/eth1_data.rs | 2 +- consensus/types/src/execution_payload.rs | 10 +- .../types/src/execution_payload_header.rs | 10 +- consensus/types/src/fork.rs | 4 +- consensus/types/src/fork_data.rs | 2 +- consensus/types/src/graffiti.rs | 6 +- consensus/types/src/indexed_attestation.rs | 2 +- consensus/types/src/participation_flags.rs | 2 +- consensus/types/src/pending_attestation.rs | 4 +- consensus/types/src/preset.rs | 98 +- .../types/src/proposer_preparation_data.rs | 2 +- consensus/types/src/selection_proof.rs | 2 +- consensus/types/src/slot_epoch.rs | 4 +- consensus/types/src/subnet_id.rs | 4 +- .../src/sync_aggregator_selection_data.rs | 2 +- .../types/src/sync_committee_contribution.rs | 2 +- consensus/types/src/sync_committee_message.rs | 2 +- .../types/src/sync_committee_subscription.rs | 4 +- consensus/types/src/sync_duty.rs | 4 +- consensus/types/src/sync_selection_proof.rs | 2 +- consensus/types/src/sync_subnet_id.rs | 2 +- consensus/types/src/validator.rs | 2 +- .../types/src/validator_registration_data.rs | 4 +- consensus/types/src/voluntary_exit.rs | 2 +- consensus/types/src/withdrawal.rs | 6 +- crypto/bls/Cargo.toml | 8 +- crypto/bls/src/generic_aggregate_signature.rs | 2 +- crypto/bls/src/generic_public_key.rs | 2 +- crypto/bls/src/generic_public_key_bytes.rs | 2 +- crypto/bls/src/generic_signature.rs | 2 +- crypto/bls/src/generic_signature_bytes.rs | 2 +- crypto/bls/src/get_withdrawal_credentials.rs | 2 +- crypto/eth2_hashing/.cargo/config | 2 - crypto/eth2_hashing/Cargo.toml | 24 - crypto/eth2_hashing/src/lib.rs | 251 ---- lcli/Cargo.toml | 4 +- lighthouse/Cargo.toml | 2 +- lighthouse/src/main.rs | 2 +- slasher/Cargo.toml | 8 +- testing/ef_tests/Cargo.toml | 8 +- testing/state_transition_vectors/Cargo.toml | 2 +- validator_client/Cargo.toml | 4 +- .../slashing_protection/Cargo.toml | 2 +- .../slashing_protection/src/interchange.rs | 8 +- validator_client/src/http_api/api_secret.rs | 12 +- .../src/http_api/create_validator.rs | 2 +- validator_client/src/http_api/tests.rs | 2 +- .../src/signing_method/web3signer.rs | 4 +- 162 files changed, 469 insertions(+), 10669 deletions(-) delete mode 100644 consensus/serde_utils/Cargo.toml delete mode 100644 consensus/serde_utils/src/fixed_bytes_hex.rs delete mode 100644 consensus/serde_utils/src/hex.rs delete mode 100644 consensus/serde_utils/src/hex_vec.rs delete mode 100644 consensus/serde_utils/src/json_str.rs delete mode 100644 consensus/serde_utils/src/lib.rs delete mode 100644 consensus/serde_utils/src/list_of_bytes_lists.rs delete mode 100644 consensus/serde_utils/src/quoted_int.rs delete mode 100644 consensus/serde_utils/src/quoted_u64_vec.rs delete mode 100644 consensus/serde_utils/src/u256_hex_be.rs delete mode 100644 consensus/serde_utils/src/u32_hex.rs delete mode 100644 consensus/serde_utils/src/u64_hex_be.rs delete mode 100644 consensus/serde_utils/src/u8_hex.rs delete mode 100644 consensus/ssz/Cargo.toml delete mode 100644 consensus/ssz/README.md delete mode 100644 consensus/ssz/examples/large_list.rs delete mode 100644 consensus/ssz/examples/large_list_of_structs.rs delete mode 100644 consensus/ssz/examples/struct_definition.rs delete mode 100644 consensus/ssz/src/decode.rs delete mode 100644 consensus/ssz/src/decode/impls.rs delete mode 100644 consensus/ssz/src/decode/try_from_iter.rs delete mode 100644 consensus/ssz/src/encode.rs delete mode 100644 consensus/ssz/src/encode/impls.rs delete mode 100644 consensus/ssz/src/legacy.rs delete mode 100644 consensus/ssz/src/lib.rs delete mode 100644 consensus/ssz/src/union_selector.rs delete mode 100644 consensus/ssz/tests/tests.rs delete mode 100644 consensus/ssz_derive/Cargo.toml delete mode 100644 consensus/ssz_derive/src/lib.rs delete mode 100644 consensus/ssz_derive/tests/tests.rs delete mode 100644 consensus/ssz_types/Cargo.toml delete mode 100644 consensus/ssz_types/src/bitfield.rs delete mode 100644 consensus/ssz_types/src/fixed_vector.rs delete mode 100644 consensus/ssz_types/src/lib.rs delete mode 100644 consensus/ssz_types/src/serde_utils/hex_fixed_vec.rs delete mode 100644 consensus/ssz_types/src/serde_utils/hex_var_list.rs delete mode 100644 consensus/ssz_types/src/serde_utils/list_of_hex_var_list.rs delete mode 100644 consensus/ssz_types/src/serde_utils/mod.rs delete mode 100644 consensus/ssz_types/src/serde_utils/quoted_u64_fixed_vec.rs delete mode 100644 consensus/ssz_types/src/serde_utils/quoted_u64_var_list.rs delete mode 100644 consensus/ssz_types/src/tree_hash.rs delete mode 100644 consensus/ssz_types/src/variable_list.rs delete mode 100644 consensus/tree_hash/Cargo.toml delete mode 100644 consensus/tree_hash/examples/flamegraph_beacon_state.rs delete mode 100644 consensus/tree_hash/src/impls.rs delete mode 100644 consensus/tree_hash/src/lib.rs delete mode 100644 consensus/tree_hash/src/merkle_hasher.rs delete mode 100644 consensus/tree_hash/src/merkleize_padded.rs delete mode 100644 consensus/tree_hash/src/merkleize_standard.rs delete mode 100644 consensus/tree_hash/tests/tests.rs delete mode 100644 consensus/tree_hash_derive/Cargo.toml delete mode 100644 consensus/tree_hash_derive/src/lib.rs delete mode 100644 crypto/eth2_hashing/.cargo/config delete mode 100644 crypto/eth2_hashing/Cargo.toml delete mode 100644 crypto/eth2_hashing/src/lib.rs diff --git a/Cargo.lock b/Cargo.lock index 50446be153..27f0ee61d0 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -590,10 +590,9 @@ dependencies = [ "environment", "eth1", "eth2", - "eth2_hashing", - "eth2_ssz", - "eth2_ssz_derive", - "eth2_ssz_types", + "ethereum_hashing", + "ethereum_ssz", + "ethereum_ssz_derive", "execution_layer", "exit-future", "fork_choice", @@ -624,6 +623,7 @@ dependencies = [ "sloggers", "slot_clock", "smallvec", + "ssz_types", "state_processing", "store", "strum", @@ -779,10 +779,10 @@ version = "0.2.0" dependencies = [ "arbitrary", "blst", - "eth2_hashing", - "eth2_serde_utils", - "eth2_ssz", "ethereum-types 0.14.1", + "ethereum_hashing", + "ethereum_serde_utils", + "ethereum_ssz", "hex", "milagro_bls", "rand 0.7.3", @@ -824,7 +824,7 @@ dependencies = [ "clap", "clap_utils", "eth2_network_config", - "eth2_ssz", + "ethereum_ssz", "hex", "lighthouse_network", "log", @@ -922,14 +922,14 @@ dependencies = [ name = "cached_tree_hash" version = "0.1.0" dependencies = [ - "eth2_hashing", - "eth2_ssz", - "eth2_ssz_derive", - "eth2_ssz_types", "ethereum-types 0.14.1", + "ethereum_hashing", + "ethereum_ssz", + "ethereum_ssz_derive", "quickcheck", "quickcheck_macros", "smallvec", + "ssz_types", "tree_hash", ] @@ -1073,8 +1073,8 @@ dependencies = [ "clap", "dirs", "eth2_network_config", - "eth2_ssz", "ethereum-types 0.14.1", + "ethereum_ssz", "hex", "serde", "serde_json", @@ -1166,16 +1166,6 @@ dependencies = [ "crossbeam-utils", ] -[[package]] -name = "console_error_panic_hook" -version = "0.1.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a06aeb73f470f66dcdbf7223caeebb85984942f22f1adb2a088cf9668146bbbc" -dependencies = [ - "cfg-if", - "wasm-bindgen", -] - [[package]] name = "const-oid" version = "0.9.2" @@ -1648,8 +1638,8 @@ dependencies = [ name = "deposit_contract" version = "0.2.0" dependencies = [ - "eth2_ssz", "ethabi 16.0.0", + "ethereum_ssz", "hex", "reqwest", "serde_json", @@ -1965,9 +1955,9 @@ dependencies = [ "compare_fields", "compare_fields_derive", "derivative", - "eth2_ssz", - "eth2_ssz_derive", "ethereum-types 0.14.1", + "ethereum_ssz", + "ethereum_ssz_derive", "execution_layer", "fork_choice", "fs2", @@ -2157,8 +2147,8 @@ dependencies = [ "environment", "eth1_test_rig", "eth2", - "eth2_ssz", - "eth2_ssz_derive", + "ethereum_ssz", + "ethereum_ssz_derive", "execution_layer", "futures", "hex", @@ -2201,9 +2191,9 @@ dependencies = [ "account_utils", "bytes", "eth2_keystore", - "eth2_serde_utils", - "eth2_ssz", - "eth2_ssz_derive", + "ethereum_serde_utils", + "ethereum_ssz", + "ethereum_ssz_derive", "futures", "futures-util", "libsecp256k1", @@ -2230,25 +2220,13 @@ dependencies = [ "types", ] -[[package]] -name = "eth2_hashing" -version = "0.3.0" -dependencies = [ - "cpufeatures", - "lazy_static", - "ring", - "rustc-hex", - "sha2 0.10.6", - "wasm-bindgen-test", -] - [[package]] name = "eth2_interop_keypairs" version = "0.2.0" dependencies = [ "base64 0.13.1", "bls", - "eth2_hashing", + "ethereum_hashing", "hex", "lazy_static", "num-bigint", @@ -2297,62 +2275,13 @@ version = "0.2.0" dependencies = [ "discv5", "eth2_config", - "eth2_ssz", + "ethereum_ssz", "serde_yaml", "tempfile", "types", "zip", ] -[[package]] -name = "eth2_serde_utils" -version = "0.1.1" -dependencies = [ - "ethereum-types 0.14.1", - "hex", - "serde", - "serde_derive", - "serde_json", -] - -[[package]] -name = "eth2_ssz" -version = "0.4.1" -dependencies = [ - "eth2_ssz_derive", - "ethereum-types 0.14.1", - "itertools", - "smallvec", -] - -[[package]] -name = "eth2_ssz_derive" -version = "0.3.1" -dependencies = [ - "darling 0.13.4", - "eth2_ssz", - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "eth2_ssz_types" -version = "0.2.2" -dependencies = [ - "arbitrary", - "derivative", - "eth2_serde_utils", - "eth2_ssz", - "serde", - "serde_derive", - "serde_json", - "smallvec", - "tree_hash", - "tree_hash_derive", - "typenum", -] - [[package]] name = "eth2_wallet" version = "0.1.0" @@ -2491,6 +2420,54 @@ dependencies = [ "uint", ] +[[package]] +name = "ethereum_hashing" +version = "1.0.0-beta.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "233dc6f434ce680dbabf4451ee3380cec46cb3c45d66660445a435619710dd35" +dependencies = [ + "cpufeatures", + "lazy_static", + "ring", + "sha2 0.10.6", +] + +[[package]] +name = "ethereum_serde_utils" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0f8cb04ea380a33e9c269fa5f8df6f2d63dee19728235f3e639e7674e038686a" +dependencies = [ + "ethereum-types 0.14.1", + "hex", + "serde", + "serde_derive", + "serde_json", +] + +[[package]] +name = "ethereum_ssz" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32749e96305376af40d7a7ee8ea4c4c64c68d09ff94a81ab78c8d9bc7153c221" +dependencies = [ + "ethereum-types 0.14.1", + "itertools", + "smallvec", +] + +[[package]] +name = "ethereum_ssz_derive" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9cac7ef2107926cea34c0064056f9bb134d2085eef882388d151d2e59174cf0" +dependencies = [ + "darling 0.13.4", + "proc-macro2", + "quote", + "syn 1.0.109", +] + [[package]] name = "ethers-core" version = "1.0.2" @@ -2593,10 +2570,9 @@ dependencies = [ "bytes", "environment", "eth2", - "eth2_serde_utils", - "eth2_ssz", - "eth2_ssz_types", "ethereum-consensus", + "ethereum_serde_utils", + "ethereum_ssz", "ethers-core", "exit-future", "fork_choice", @@ -2619,6 +2595,7 @@ dependencies = [ "slog", "slot_clock", "ssz-rs", + "ssz_types", "state_processing", "strum", "superstruct 0.6.0", @@ -2772,8 +2749,8 @@ name = "fork_choice" version = "0.1.0" dependencies = [ "beacon_chain", - "eth2_ssz", - "eth2_ssz_derive", + "ethereum_ssz", + "ethereum_ssz_derive", "proto_array", "slog", "state_processing", @@ -2961,8 +2938,8 @@ dependencies = [ "environment", "eth1", "eth1_test_rig", - "eth2_hashing", - "eth2_ssz", + "ethereum_hashing", + "ethereum_ssz", "futures", "int_to_bytes", "merkle_proof", @@ -3316,8 +3293,8 @@ dependencies = [ "environment", "eth1", "eth2", - "eth2_serde_utils", - "eth2_ssz", + "ethereum_serde_utils", + "ethereum_ssz", "execution_layer", "futures", "genesis", @@ -3855,8 +3832,8 @@ dependencies = [ "eth1_test_rig", "eth2", "eth2_network_config", - "eth2_ssz", "eth2_wallet", + "ethereum_ssz", "genesis", "int_to_bytes", "lighthouse_network", @@ -4506,8 +4483,8 @@ dependencies = [ "env_logger 0.9.3", "environment", "eth1", - "eth2_hashing", "eth2_network_config", + "ethereum_hashing", "futures", "lazy_static", "lighthouse_metrics", @@ -4547,9 +4524,8 @@ dependencies = [ "dirs", "discv5", "error-chain", - "eth2_ssz", - "eth2_ssz_derive", - "eth2_ssz_types", + "ethereum_ssz", + "ethereum_ssz_derive", "exit-future", "fnv", "futures", @@ -4574,6 +4550,7 @@ dependencies = [ "slog-term", "smallvec", "snap", + "ssz_types", "strum", "superstruct 0.5.0", "task_executor", @@ -4815,8 +4792,8 @@ dependencies = [ name = "merkle_proof" version = "0.2.0" dependencies = [ - "eth2_hashing", "ethereum-types 0.14.1", + "ethereum_hashing", "lazy_static", "quickcheck", "quickcheck_macros", @@ -5216,9 +5193,8 @@ dependencies = [ "derivative", "environment", "error-chain", - "eth2_ssz", - "eth2_ssz_types", "ethereum-types 0.14.1", + "ethereum_ssz", "execution_layer", "exit-future", "fnv", @@ -5244,6 +5220,7 @@ dependencies = [ "sloggers", "slot_clock", "smallvec", + "ssz_types", "store", "strum", "task_executor", @@ -5563,8 +5540,8 @@ dependencies = [ "beacon_chain", "bitvec 1.0.1", "derivative", - "eth2_ssz", - "eth2_ssz_derive", + "ethereum_ssz", + "ethereum_ssz_derive", "itertools", "lazy_static", "lighthouse_metrics", @@ -6212,8 +6189,8 @@ dependencies = [ name = "proto_array" version = "0.2.0" dependencies = [ - "eth2_ssz", - "eth2_ssz_derive", + "ethereum_ssz", + "ethereum_ssz_derive", "safe_arith", "serde", "serde_derive", @@ -7320,8 +7297,8 @@ version = "0.1.0" dependencies = [ "bincode", "byteorder", - "eth2_ssz", - "eth2_ssz_derive", + "ethereum_ssz", + "ethereum_ssz_derive", "filesystem", "flate2", "lazy_static", @@ -7369,7 +7346,7 @@ name = "slashing_protection" version = "0.1.0" dependencies = [ "arbitrary", - "eth2_serde_utils", + "ethereum_serde_utils", "filesystem", "lazy_static", "r2d2", @@ -7597,6 +7574,24 @@ dependencies = [ "syn 1.0.109", ] +[[package]] +name = "ssz_types" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8052a1004e979c0be24b9e55940195553103cc57d0b34f7e2c4e32793325e402" +dependencies = [ + "arbitrary", + "derivative", + "ethereum_serde_utils", + "ethereum_ssz", + "itertools", + "serde", + "serde_derive", + "smallvec", + "tree_hash", + "typenum", +] + [[package]] name = "state_processing" version = "0.2.0" @@ -7606,10 +7601,9 @@ dependencies = [ "bls", "derivative", "env_logger 0.9.3", - "eth2_hashing", - "eth2_ssz", - "eth2_ssz_derive", - "eth2_ssz_types", + "ethereum_hashing", + "ethereum_ssz", + "ethereum_ssz_derive", "int_to_bytes", "integer-sqrt", "itertools", @@ -7619,6 +7613,7 @@ dependencies = [ "rayon", "safe_arith", "smallvec", + "ssz_types", "tokio", "tree_hash", "types", @@ -7629,7 +7624,7 @@ name = "state_transition_vectors" version = "0.1.0" dependencies = [ "beacon_chain", - "eth2_ssz", + "ethereum_ssz", "lazy_static", "state_processing", "tokio", @@ -7649,8 +7644,8 @@ dependencies = [ "beacon_chain", "db-key", "directory", - "eth2_ssz", - "eth2_ssz_derive", + "ethereum_ssz", + "ethereum_ssz_derive", "itertools", "lazy_static", "leveldb", @@ -7778,8 +7773,8 @@ name = "swap_or_not_shuffle" version = "0.2.0" dependencies = [ "criterion", - "eth2_hashing", "ethereum-types 0.14.1", + "ethereum_hashing", ] [[package]] @@ -8446,22 +8441,20 @@ dependencies = [ [[package]] name = "tree_hash" -version = "0.4.1" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca8488e272d45adc36db8f6c99d09613f58a7cd06c7b347546c87d9a29ca11e8" dependencies = [ - "beacon_chain", - "eth2_hashing", - "eth2_ssz", - "eth2_ssz_derive", "ethereum-types 0.14.1", - "rand 0.8.5", + "ethereum_hashing", "smallvec", - "tree_hash_derive", - "types", ] [[package]] name = "tree_hash_derive" -version = "0.4.0" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "83baa26594d96889e5fef7638dfb0f41e16070301a5cf6da99b9a6a0804cec89" dependencies = [ "darling 0.13.4", "quote", @@ -8616,13 +8609,12 @@ dependencies = [ "compare_fields_derive", "criterion", "derivative", - "eth2_hashing", "eth2_interop_keypairs", - "eth2_serde_utils", - "eth2_ssz", - "eth2_ssz_derive", - "eth2_ssz_types", "ethereum-types 0.14.1", + "ethereum_hashing", + "ethereum_serde_utils", + "ethereum_ssz", + "ethereum_ssz_derive", "hex", "int_to_bytes", "itertools", @@ -8645,6 +8637,7 @@ dependencies = [ "serde_yaml", "slog", "smallvec", + "ssz_types", "state_processing", "superstruct 0.6.0", "swap_or_not_shuffle", @@ -8822,7 +8815,7 @@ dependencies = [ "environment", "eth2", "eth2_keystore", - "eth2_serde_utils", + "ethereum_serde_utils", "exit-future", "filesystem", "futures", @@ -9076,30 +9069,6 @@ version = "0.2.84" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0046fef7e28c3804e5e38bfa31ea2a0f73905319b677e57ebe37e49358989b5d" -[[package]] -name = "wasm-bindgen-test" -version = "0.3.34" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6db36fc0f9fb209e88fb3642590ae0205bb5a56216dabd963ba15879fe53a30b" -dependencies = [ - "console_error_panic_hook", - "js-sys", - "scoped-tls", - "wasm-bindgen", - "wasm-bindgen-futures", - "wasm-bindgen-test-macro", -] - -[[package]] -name = "wasm-bindgen-test-macro" -version = "0.3.34" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0734759ae6b3b1717d661fe4f016efcfb9828f5edb4520c18eaee05af3b43be9" -dependencies = [ - "proc-macro2", - "quote", -] - [[package]] name = "wasm-streams" version = "0.2.3" diff --git a/Cargo.toml b/Cargo.toml index 0290f2ded9..bbe77d2096 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -53,17 +53,10 @@ members = [ "consensus/fork_choice", "consensus/proto_array", "consensus/safe_arith", - "consensus/ssz", - "consensus/ssz_derive", - "consensus/ssz_types", - "consensus/serde_utils", "consensus/state_processing", "consensus/swap_or_not_shuffle", - "consensus/tree_hash", - "consensus/tree_hash_derive", "crypto/bls", - "crypto/eth2_hashing", "crypto/eth2_key_derivation", "crypto/eth2_keystore", "crypto/eth2_wallet", @@ -95,13 +88,6 @@ resolver = "2" [patch] [patch.crates-io] warp = { git = "https://github.com/macladson/warp", rev="7e75acc368229a46a236a8c991bf251fe7fe50ef" } -eth2_ssz = { path = "consensus/ssz" } -eth2_ssz_derive = { path = "consensus/ssz_derive" } -eth2_ssz_types = { path = "consensus/ssz_types" } -eth2_hashing = { path = "crypto/eth2_hashing" } -tree_hash = { path = "consensus/tree_hash" } -tree_hash_derive = { path = "consensus/tree_hash_derive" } -eth2_serde_utils = { path = "consensus/serde_utils" } arbitrary = { git = "https://github.com/michaelsproul/arbitrary", rev="f002b99989b561ddce62e4cf2887b0f8860ae991" } [patch."https://github.com/ralexstokes/mev-rs"] diff --git a/beacon_node/beacon_chain/Cargo.toml b/beacon_node/beacon_chain/Cargo.toml index 9626aaae14..d11d507e48 100644 --- a/beacon_node/beacon_chain/Cargo.toml +++ b/beacon_node/beacon_chain/Cargo.toml @@ -30,12 +30,12 @@ serde_derive = "1.0.116" slog = { version = "2.5.2", features = ["max_level_trace"] } sloggers = { version = "2.1.1", features = ["json"] } slot_clock = { path = "../../common/slot_clock" } -eth2_hashing = "0.3.0" -eth2_ssz = "0.4.1" -eth2_ssz_types = "0.2.2" -eth2_ssz_derive = "0.3.1" +ethereum_hashing = "1.0.0-beta.2" +ethereum_ssz = "0.5.0" +ssz_types = "0.5.0" +ethereum_ssz_derive = "0.5.0" state_processing = { path = "../../consensus/state_processing" } -tree_hash = "0.4.1" +tree_hash = "0.5.0" types = { path = "../../consensus/types" } tokio = "1.14.0" tokio-stream = "0.1.3" diff --git a/beacon_node/beacon_chain/src/builder.rs b/beacon_node/beacon_chain/src/builder.rs index 6ee97a95c1..56006b4d62 100644 --- a/beacon_node/beacon_chain/src/builder.rs +++ b/beacon_node/beacon_chain/src/builder.rs @@ -999,7 +999,7 @@ fn descriptive_db_error(item: &str, error: &StoreError) -> String { mod test { use super::*; use crate::validator_monitor::DEFAULT_INDIVIDUAL_TRACKING_THRESHOLD; - use eth2_hashing::hash; + use ethereum_hashing::hash; use genesis::{ generate_deterministic_keypairs, interop_genesis_state, DEFAULT_ETH1_BLOCK_HASH, }; diff --git a/beacon_node/beacon_chain/src/eth1_chain.rs b/beacon_node/beacon_chain/src/eth1_chain.rs index f820622e57..8b6c6b3740 100644 --- a/beacon_node/beacon_chain/src/eth1_chain.rs +++ b/beacon_node/beacon_chain/src/eth1_chain.rs @@ -1,7 +1,7 @@ use crate::metrics; use eth1::{Config as Eth1Config, Eth1Block, Service as HttpService}; use eth2::lighthouse::Eth1SyncStatusData; -use eth2_hashing::hash; +use ethereum_hashing::hash; use int_to_bytes::int_to_bytes32; use slog::{debug, error, trace, Logger}; use ssz::{Decode, Encode}; diff --git a/beacon_node/eth1/Cargo.toml b/beacon_node/eth1/Cargo.toml index e0dd797bfa..1148f063d8 100644 --- a/beacon_node/eth1/Cargo.toml +++ b/beacon_node/eth1/Cargo.toml @@ -20,9 +20,9 @@ serde = { version = "1.0.116", features = ["derive"] } hex = "0.4.2" types = { path = "../../consensus/types"} merkle_proof = { path = "../../consensus/merkle_proof"} -eth2_ssz = "0.4.1" -eth2_ssz_derive = "0.3.1" -tree_hash = "0.4.1" +ethereum_ssz = "0.5.0" +ethereum_ssz_derive = "0.5.0" +tree_hash = "0.5.0" parking_lot = "0.12.0" slog = "2.5.2" superstruct = "0.5.0" diff --git a/beacon_node/execution_layer/Cargo.toml b/beacon_node/execution_layer/Cargo.toml index 1b687a8b60..3ed7ba65d6 100644 --- a/beacon_node/execution_layer/Cargo.toml +++ b/beacon_node/execution_layer/Cargo.toml @@ -13,7 +13,7 @@ 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" +ethereum_serde_utils = "0.5.0" serde_json = "1.0.58" serde = { version = "1.0.116", features = ["derive"] } warp = { version = "0.3.2", features = ["tls"] } @@ -22,15 +22,15 @@ environment = { path = "../../lighthouse/environment" } bytes = "1.1.0" task_executor = { path = "../../common/task_executor" } hex = "0.4.2" -eth2_ssz = "0.4.1" -eth2_ssz_types = "0.2.2" +ethereum_ssz = "0.5.0" +ssz_types = "0.5.0" eth2 = { path = "../../common/eth2" } state_processing = { path = "../../consensus/state_processing" } superstruct = "0.6.0" lru = "0.7.1" exit-future = "0.2.0" -tree_hash = "0.4.1" -tree_hash_derive = { path = "../../consensus/tree_hash_derive"} +tree_hash = "0.5.0" +tree_hash_derive = "0.5.0" parking_lot = "0.12.0" slot_clock = { path = "../../common/slot_clock" } tempfile = "3.1.0" diff --git a/beacon_node/execution_layer/src/engine_api.rs b/beacon_node/execution_layer/src/engine_api.rs index 3ecb36d093..4d2eb565e1 100644 --- a/beacon_node/execution_layer/src/engine_api.rs +++ b/beacon_node/execution_layer/src/engine_api.rs @@ -127,11 +127,11 @@ pub enum BlockByNumberQuery<'a> { pub struct ExecutionBlock { #[serde(rename = "hash")] pub block_hash: ExecutionBlockHash, - #[serde(rename = "number", with = "eth2_serde_utils::u64_hex_be")] + #[serde(rename = "number", with = "serde_utils::u64_hex_be")] pub block_number: u64, pub parent_hash: ExecutionBlockHash, pub total_difficulty: Uint256, - #[serde(with = "eth2_serde_utils::u64_hex_be")] + #[serde(with = "serde_utils::u64_hex_be")] pub timestamp: u64, } @@ -157,13 +157,13 @@ pub struct ExecutionBlockWithTransactions { pub logs_bloom: FixedVector, #[serde(alias = "mixHash")] pub prev_randao: Hash256, - #[serde(rename = "number", with = "eth2_serde_utils::u64_hex_be")] + #[serde(rename = "number", with = "serde_utils::u64_hex_be")] pub block_number: u64, - #[serde(with = "eth2_serde_utils::u64_hex_be")] + #[serde(with = "serde_utils::u64_hex_be")] pub gas_limit: u64, - #[serde(with = "eth2_serde_utils::u64_hex_be")] + #[serde(with = "serde_utils::u64_hex_be")] pub gas_used: u64, - #[serde(with = "eth2_serde_utils::u64_hex_be")] + #[serde(with = "serde_utils::u64_hex_be")] pub timestamp: u64, #[serde(with = "ssz_types::serde_utils::hex_var_list")] pub extra_data: VariableList, diff --git a/beacon_node/execution_layer/src/engine_api/http.rs b/beacon_node/execution_layer/src/engine_api/http.rs index f542bf5b4a..029866d95b 100644 --- a/beacon_node/execution_layer/src/engine_api/http.rs +++ b/beacon_node/execution_layer/src/engine_api/http.rs @@ -917,7 +917,7 @@ impl HttpJsonRpc { ) -> Result>>, Error> { #[derive(Serialize)] #[serde(transparent)] - struct Quantity(#[serde(with = "eth2_serde_utils::u64_hex_be")] u64); + struct Quantity(#[serde(with = "serde_utils::u64_hex_be")] u64); let params = json!([Quantity(start), Quantity(count)]); let response: Vec>> = self diff --git a/beacon_node/execution_layer/src/engine_api/json_structures.rs b/beacon_node/execution_layer/src/engine_api/json_structures.rs index 6d33bbabe2..d85d294c83 100644 --- a/beacon_node/execution_layer/src/engine_api/json_structures.rs +++ b/beacon_node/execution_layer/src/engine_api/json_structures.rs @@ -35,7 +35,7 @@ pub struct JsonResponseBody { #[derive(Debug, PartialEq, Clone, Serialize, Deserialize)] #[serde(transparent)] -pub struct TransparentJsonPayloadId(#[serde(with = "eth2_serde_utils::bytes_8_hex")] pub PayloadId); +pub struct TransparentJsonPayloadId(#[serde(with = "serde_utils::bytes_8_hex")] pub PayloadId); impl From for TransparentJsonPayloadId { fn from(id: PayloadId) -> Self { @@ -56,7 +56,7 @@ pub type JsonPayloadIdRequest = TransparentJsonPayloadId; #[derive(Debug, PartialEq, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct JsonPayloadIdResponse { - #[serde(with = "eth2_serde_utils::bytes_8_hex")] + #[serde(with = "serde_utils::bytes_8_hex")] pub payload_id: PayloadId, } @@ -79,17 +79,17 @@ pub struct JsonExecutionPayload { #[serde(with = "serde_logs_bloom")] pub logs_bloom: FixedVector, pub prev_randao: Hash256, - #[serde(with = "eth2_serde_utils::u64_hex_be")] + #[serde(with = "serde_utils::u64_hex_be")] pub block_number: u64, - #[serde(with = "eth2_serde_utils::u64_hex_be")] + #[serde(with = "serde_utils::u64_hex_be")] pub gas_limit: u64, - #[serde(with = "eth2_serde_utils::u64_hex_be")] + #[serde(with = "serde_utils::u64_hex_be")] pub gas_used: u64, - #[serde(with = "eth2_serde_utils::u64_hex_be")] + #[serde(with = "serde_utils::u64_hex_be")] pub timestamp: u64, #[serde(with = "ssz_types::serde_utils::hex_var_list")] pub extra_data: VariableList, - #[serde(with = "eth2_serde_utils::u256_hex_be")] + #[serde(with = "serde_utils::u256_hex_be")] pub base_fee_per_gas: Uint256, pub block_hash: ExecutionBlockHash, #[serde(with = "ssz_types::serde_utils::list_of_hex_var_list")] @@ -226,7 +226,7 @@ pub struct JsonGetPayloadResponse { pub execution_payload: JsonExecutionPayloadV1, #[superstruct(only(V2), partial_getter(rename = "execution_payload_v2"))] pub execution_payload: JsonExecutionPayloadV2, - #[serde(with = "eth2_serde_utils::u256_hex_be")] + #[serde(with = "serde_utils::u256_hex_be")] pub block_value: Uint256, } @@ -252,12 +252,12 @@ impl From> for GetPayloadResponse { #[derive(Debug, PartialEq, Clone, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct JsonWithdrawal { - #[serde(with = "eth2_serde_utils::u64_hex_be")] + #[serde(with = "serde_utils::u64_hex_be")] pub index: u64, - #[serde(with = "eth2_serde_utils::u64_hex_be")] + #[serde(with = "serde_utils::u64_hex_be")] pub validator_index: u64, pub address: Address, - #[serde(with = "eth2_serde_utils::u64_hex_be")] + #[serde(with = "serde_utils::u64_hex_be")] pub amount: u64, } @@ -295,7 +295,7 @@ impl From for Withdrawal { #[derive(Debug, Clone, PartialEq, Serialize, Deserialize)] #[serde(untagged)] pub struct JsonPayloadAttributes { - #[serde(with = "eth2_serde_utils::u64_hex_be")] + #[serde(with = "serde_utils::u64_hex_be")] pub timestamp: u64, pub prev_randao: Hash256, pub suggested_fee_recipient: Address, @@ -520,18 +520,18 @@ impl From> for ExecutionPayloadBodyV1< #[derive(Clone, Copy, Debug, PartialEq, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct TransitionConfigurationV1 { - #[serde(with = "eth2_serde_utils::u256_hex_be")] + #[serde(with = "serde_utils::u256_hex_be")] pub terminal_total_difficulty: Uint256, pub terminal_block_hash: ExecutionBlockHash, - #[serde(with = "eth2_serde_utils::u64_hex_be")] + #[serde(with = "serde_utils::u64_hex_be")] pub terminal_block_number: u64, } /// Serializes the `logs_bloom` field of an `ExecutionPayload`. pub mod serde_logs_bloom { use super::*; - use eth2_serde_utils::hex::PrefixedHexVisitor; use serde::{Deserializer, Serializer}; + use serde_utils::hex::PrefixedHexVisitor; pub fn serialize(bytes: &FixedVector, serializer: S) -> Result where diff --git a/beacon_node/execution_layer/src/test_utils/handle_rpc.rs b/beacon_node/execution_layer/src/test_utils/handle_rpc.rs index bda0c782dc..e3c58cfc27 100644 --- a/beacon_node/execution_layer/src/test_utils/handle_rpc.rs +++ b/beacon_node/execution_layer/src/test_utils/handle_rpc.rs @@ -362,7 +362,7 @@ pub async fn handle_rpc( ENGINE_GET_PAYLOAD_BODIES_BY_RANGE_V1 => { #[derive(Deserialize)] #[serde(transparent)] - struct Quantity(#[serde(with = "eth2_serde_utils::u64_hex_be")] pub u64); + struct Quantity(#[serde(with = "serde_utils::u64_hex_be")] pub u64); let start = get_param::(params, 0) .map_err(|s| (s, BAD_PARAMS_ERROR_CODE))? diff --git a/beacon_node/genesis/Cargo.toml b/beacon_node/genesis/Cargo.toml index 87c56d360b..8a7d224963 100644 --- a/beacon_node/genesis/Cargo.toml +++ b/beacon_node/genesis/Cargo.toml @@ -16,9 +16,9 @@ eth1 = { path = "../eth1"} rayon = "1.4.1" state_processing = { path = "../../consensus/state_processing" } merkle_proof = { path = "../../consensus/merkle_proof" } -eth2_ssz = "0.4.1" -eth2_hashing = "0.3.0" -tree_hash = "0.4.1" +ethereum_ssz = "0.5.0" +ethereum_hashing = "1.0.0-beta.2" +tree_hash = "0.5.0" tokio = { version = "1.14.0", features = ["full"] } slog = "2.5.2" int_to_bytes = { path = "../../consensus/int_to_bytes" } diff --git a/beacon_node/genesis/src/interop.rs b/beacon_node/genesis/src/interop.rs index 122ca8eda6..d012983430 100644 --- a/beacon_node/genesis/src/interop.rs +++ b/beacon_node/genesis/src/interop.rs @@ -1,5 +1,5 @@ use crate::common::genesis_deposits; -use eth2_hashing::hash; +use ethereum_hashing::hash; use rayon::prelude::*; use ssz::Encode; use state_processing::initialize_beacon_state_from_eth1; diff --git a/beacon_node/http_api/Cargo.toml b/beacon_node/http_api/Cargo.toml index e251b04856..8f253e2f24 100644 --- a/beacon_node/http_api/Cargo.toml +++ b/beacon_node/http_api/Cargo.toml @@ -24,7 +24,7 @@ lighthouse_metrics = { path = "../../common/lighthouse_metrics" } lazy_static = "1.4.0" warp_utils = { path = "../../common/warp_utils" } slot_clock = { path = "../../common/slot_clock" } -eth2_ssz = "0.4.1" +ethereum_ssz = "0.5.0" bs58 = "0.4.0" futures = "0.3.8" execution_layer = {path = "../execution_layer"} @@ -32,11 +32,11 @@ parking_lot = "0.12.0" safe_arith = {path = "../../consensus/safe_arith"} task_executor = { path = "../../common/task_executor" } lru = "0.7.7" -tree_hash = "0.4.1" +tree_hash = "0.5.0" sysinfo = "0.26.5" system_health = { path = "../../common/system_health" } directory = { path = "../../common/directory" } -eth2_serde_utils = "0.1.1" +ethereum_serde_utils = "0.5.0" operation_pool = { path = "../operation_pool" } sensitive_url = { path = "../../common/sensitive_url" } unused_port = {path = "../../common/unused_port"} diff --git a/beacon_node/http_api/src/ui.rs b/beacon_node/http_api/src/ui.rs index 8911e785e1..616745dbef 100644 --- a/beacon_node/http_api/src/ui.rs +++ b/beacon_node/http_api/src/ui.rs @@ -75,15 +75,15 @@ pub fn get_validator_count( #[derive(PartialEq, Serialize, Deserialize)] pub struct ValidatorInfoRequestData { - #[serde(with = "eth2_serde_utils::quoted_u64_vec")] + #[serde(with = "serde_utils::quoted_u64_vec")] indices: Vec, } #[derive(PartialEq, Serialize, Deserialize)] pub struct ValidatorInfoValues { - #[serde(with = "eth2_serde_utils::quoted_u64")] + #[serde(with = "serde_utils::quoted_u64")] epoch: u64, - #[serde(with = "eth2_serde_utils::quoted_u64")] + #[serde(with = "serde_utils::quoted_u64")] total_balance: u64, } diff --git a/beacon_node/lighthouse_network/Cargo.toml b/beacon_node/lighthouse_network/Cargo.toml index dda797187b..c1b4d72174 100644 --- a/beacon_node/lighthouse_network/Cargo.toml +++ b/beacon_node/lighthouse_network/Cargo.toml @@ -8,13 +8,13 @@ edition = "2021" discv5 = { version = "0.2.2", features = ["libp2p"] } unsigned-varint = { version = "0.6.0", features = ["codec"] } types = { path = "../../consensus/types" } -eth2_ssz_types = "0.2.2" +ssz_types = "0.5.0" serde = { version = "1.0.116", features = ["derive"] } serde_derive = "1.0.116" -eth2_ssz = "0.4.1" -eth2_ssz_derive = "0.3.0" -tree_hash = "0.4.1" -tree_hash_derive = "0.4.0" +ethereum_ssz = "0.5.0" +ethereum_ssz_derive = "0.5.0" +tree_hash = "0.5.0" +tree_hash_derive = "0.5.0" slog = { version = "2.5.2", features = ["max_level_trace"] } lighthouse_version = { path = "../../common/lighthouse_version" } tokio = { version = "1.14.0", features = ["time", "macros"] } diff --git a/beacon_node/network/Cargo.toml b/beacon_node/network/Cargo.toml index d068a20079..fbc45364aa 100644 --- a/beacon_node/network/Cargo.toml +++ b/beacon_node/network/Cargo.toml @@ -21,8 +21,8 @@ types = { path = "../../consensus/types" } slot_clock = { path = "../../common/slot_clock" } slog = { version = "2.5.2", features = ["max_level_trace"] } hex = "0.4.2" -eth2_ssz = "0.4.1" -eth2_ssz_types = "0.2.2" +ethereum_ssz = "0.5.0" +ssz_types = "0.5.0" futures = "0.3.7" error-chain = "0.12.4" tokio = { version = "1.14.0", features = ["full"] } diff --git a/beacon_node/operation_pool/Cargo.toml b/beacon_node/operation_pool/Cargo.toml index cc4eacde89..fdbecb656f 100644 --- a/beacon_node/operation_pool/Cargo.toml +++ b/beacon_node/operation_pool/Cargo.toml @@ -12,8 +12,8 @@ lighthouse_metrics = { path = "../../common/lighthouse_metrics" } parking_lot = "0.12.0" types = { path = "../../consensus/types" } state_processing = { path = "../../consensus/state_processing" } -eth2_ssz = "0.4.1" -eth2_ssz_derive = "0.3.1" +ethereum_ssz = "0.5.0" +ethereum_ssz_derive = "0.5.0" rayon = "1.5.0" serde = "1.0.116" serde_derive = "1.0.116" diff --git a/beacon_node/store/Cargo.toml b/beacon_node/store/Cargo.toml index 7ec2af9f9d..a1c65bd26d 100644 --- a/beacon_node/store/Cargo.toml +++ b/beacon_node/store/Cargo.toml @@ -13,8 +13,8 @@ db-key = "0.0.5" leveldb = { version = "0.8.6", default-features = false } parking_lot = "0.12.0" itertools = "0.10.0" -eth2_ssz = "0.4.1" -eth2_ssz_derive = "0.3.1" +ethereum_ssz = "0.5.0" +ethereum_ssz_derive = "0.5.0" types = { path = "../../consensus/types" } state_processing = { path = "../../consensus/state_processing" } slog = "2.5.2" diff --git a/boot_node/Cargo.toml b/boot_node/Cargo.toml index 081ab285e3..7eb37a9b94 100644 --- a/boot_node/Cargo.toml +++ b/boot_node/Cargo.toml @@ -10,7 +10,7 @@ clap = "2.33.3" clap_utils = { path = "../common/clap_utils" } lighthouse_network = { path = "../beacon_node/lighthouse_network" } types = { path = "../consensus/types" } -eth2_ssz = "0.4.1" +ethereum_ssz = "0.5.0" slog = "2.5.2" tokio = "1.14.0" log = "0.4.11" diff --git a/common/clap_utils/Cargo.toml b/common/clap_utils/Cargo.toml index 62eb8aa3d5..a882b7ce64 100644 --- a/common/clap_utils/Cargo.toml +++ b/common/clap_utils/Cargo.toml @@ -11,7 +11,7 @@ clap = "2.33.3" hex = "0.4.2" dirs = "3.0.1" eth2_network_config = { path = "../eth2_network_config" } -eth2_ssz = "0.4.1" +ethereum_ssz = "0.5.0" ethereum-types = "0.14.1" serde = "1.0.116" serde_json = "1.0.59" diff --git a/common/deposit_contract/Cargo.toml b/common/deposit_contract/Cargo.toml index 7be0e8f3d2..aabc07fc52 100644 --- a/common/deposit_contract/Cargo.toml +++ b/common/deposit_contract/Cargo.toml @@ -14,6 +14,6 @@ hex = "0.4.2" [dependencies] types = { path = "../../consensus/types"} -eth2_ssz = "0.4.1" -tree_hash = "0.4.1" +ethereum_ssz = "0.5.0" +tree_hash = "0.5.0" ethabi = "16.0.0" diff --git a/common/eth2/Cargo.toml b/common/eth2/Cargo.toml index eca086d838..2c5e7060b2 100644 --- a/common/eth2/Cargo.toml +++ b/common/eth2/Cargo.toml @@ -13,15 +13,15 @@ types = { path = "../../consensus/types" } reqwest = { version = "0.11.0", features = ["json","stream"] } lighthouse_network = { path = "../../beacon_node/lighthouse_network" } proto_array = { path = "../../consensus/proto_array", optional = true } -eth2_serde_utils = "0.1.1" +ethereum_serde_utils = "0.5.0" eth2_keystore = { path = "../../crypto/eth2_keystore" } libsecp256k1 = "0.7.0" ring = "0.16.19" bytes = "1.0.1" account_utils = { path = "../../common/account_utils" } sensitive_url = { path = "../../common/sensitive_url" } -eth2_ssz = "0.4.1" -eth2_ssz_derive = "0.3.1" +ethereum_ssz = "0.5.0" +ethereum_ssz_derive = "0.5.0" futures-util = "0.3.8" futures = "0.3.8" store = { path = "../../beacon_node/store", optional = true } diff --git a/common/eth2/src/lighthouse/attestation_rewards.rs b/common/eth2/src/lighthouse/attestation_rewards.rs index 314ffb8512..bebd1c661b 100644 --- a/common/eth2/src/lighthouse/attestation_rewards.rs +++ b/common/eth2/src/lighthouse/attestation_rewards.rs @@ -6,32 +6,32 @@ use serde::{Deserialize, Serialize}; #[derive(Debug, PartialEq, Eq, Clone, Serialize, Deserialize)] pub struct IdealAttestationRewards { // Validator's effective balance in gwei - #[serde(with = "eth2_serde_utils::quoted_u64")] + #[serde(with = "serde_utils::quoted_u64")] pub effective_balance: u64, // Ideal attester's reward for head vote in gwei - #[serde(with = "eth2_serde_utils::quoted_u64")] + #[serde(with = "serde_utils::quoted_u64")] pub head: u64, // Ideal attester's reward for target vote in gwei - #[serde(with = "eth2_serde_utils::quoted_u64")] + #[serde(with = "serde_utils::quoted_u64")] pub target: u64, // Ideal attester's reward for source vote in gwei - #[serde(with = "eth2_serde_utils::quoted_u64")] + #[serde(with = "serde_utils::quoted_u64")] pub source: u64, } #[derive(Debug, PartialEq, Eq, Clone, Serialize, Deserialize)] pub struct TotalAttestationRewards { // one entry for every validator based on their attestations in the epoch - #[serde(with = "eth2_serde_utils::quoted_u64")] + #[serde(with = "serde_utils::quoted_u64")] pub validator_index: u64, // attester's reward for head vote in gwei - #[serde(with = "eth2_serde_utils::quoted_u64")] + #[serde(with = "serde_utils::quoted_u64")] pub head: u64, // attester's reward for target vote in gwei - #[serde(with = "eth2_serde_utils::quoted_i64")] + #[serde(with = "serde_utils::quoted_i64")] pub target: i64, // attester's reward for source vote in gwei - #[serde(with = "eth2_serde_utils::quoted_i64")] + #[serde(with = "serde_utils::quoted_i64")] pub source: i64, // TBD attester's inclusion_delay reward in gwei (phase0 only) // pub inclusion_delay: u64, diff --git a/common/eth2/src/lighthouse/standard_block_rewards.rs b/common/eth2/src/lighthouse/standard_block_rewards.rs index 502577500d..15fcdc6066 100644 --- a/common/eth2/src/lighthouse/standard_block_rewards.rs +++ b/common/eth2/src/lighthouse/standard_block_rewards.rs @@ -5,22 +5,22 @@ use serde::{Deserialize, Serialize}; #[derive(Debug, PartialEq, Clone, Serialize, Deserialize)] pub struct StandardBlockReward { // proposer of the block, the proposer index who receives these rewards - #[serde(with = "eth2_serde_utils::quoted_u64")] + #[serde(with = "serde_utils::quoted_u64")] pub proposer_index: u64, // total block reward in gwei, // equal to attestations + sync_aggregate + proposer_slashings + attester_slashings - #[serde(with = "eth2_serde_utils::quoted_u64")] + #[serde(with = "serde_utils::quoted_u64")] pub total: u64, // block reward component due to included attestations in gwei - #[serde(with = "eth2_serde_utils::quoted_u64")] + #[serde(with = "serde_utils::quoted_u64")] pub attestations: u64, // block reward component due to included sync_aggregate in gwei - #[serde(with = "eth2_serde_utils::quoted_u64")] + #[serde(with = "serde_utils::quoted_u64")] pub sync_aggregate: u64, // block reward component due to included proposer_slashings in gwei - #[serde(with = "eth2_serde_utils::quoted_u64")] + #[serde(with = "serde_utils::quoted_u64")] pub proposer_slashings: u64, // block reward component due to included attester_slashings in gwei - #[serde(with = "eth2_serde_utils::quoted_u64")] + #[serde(with = "serde_utils::quoted_u64")] pub attester_slashings: u64, } diff --git a/common/eth2/src/lighthouse/sync_committee_rewards.rs b/common/eth2/src/lighthouse/sync_committee_rewards.rs index e215d8e3e0..66a721dc22 100644 --- a/common/eth2/src/lighthouse/sync_committee_rewards.rs +++ b/common/eth2/src/lighthouse/sync_committee_rewards.rs @@ -5,9 +5,9 @@ use serde::{Deserialize, Serialize}; #[derive(Debug, PartialEq, Clone, Serialize, Deserialize)] pub struct SyncCommitteeReward { - #[serde(with = "eth2_serde_utils::quoted_u64")] + #[serde(with = "serde_utils::quoted_u64")] pub validator_index: u64, // sync committee reward in gwei for the validator - #[serde(with = "eth2_serde_utils::quoted_i64")] + #[serde(with = "serde_utils::quoted_i64")] pub reward: i64, } diff --git a/common/eth2/src/lighthouse_vc/http_client.rs b/common/eth2/src/lighthouse_vc/http_client.rs index 90c128751d..e576cfcb36 100644 --- a/common/eth2/src/lighthouse_vc/http_client.rs +++ b/common/eth2/src/lighthouse_vc/http_client.rs @@ -57,7 +57,7 @@ pub fn parse_pubkey(secret: &str) -> Result, Error> { &secret[SECRET_PREFIX.len()..] }; - eth2_serde_utils::hex::decode(secret) + serde_utils::hex::decode(secret) .map_err(|e| Error::InvalidSecret(format!("invalid hex: {:?}", e))) .and_then(|bytes| { if bytes.len() != PK_LEN { @@ -174,7 +174,7 @@ impl ValidatorClientHttpClient { let message = Message::parse_slice(digest(&SHA256, &body).as_ref()).expect("sha256 is 32 bytes"); - eth2_serde_utils::hex::decode(&sig) + serde_utils::hex::decode(&sig) .ok() .and_then(|bytes| { let sig = Signature::parse_der(&bytes).ok()?; diff --git a/common/eth2/src/lighthouse_vc/std_types.rs b/common/eth2/src/lighthouse_vc/std_types.rs index 887bcb99ea..0d67df47a9 100644 --- a/common/eth2/src/lighthouse_vc/std_types.rs +++ b/common/eth2/src/lighthouse_vc/std_types.rs @@ -13,7 +13,7 @@ pub struct GetFeeRecipientResponse { #[derive(Debug, Deserialize, Serialize, PartialEq)] pub struct GetGasLimitResponse { pub pubkey: PublicKeyBytes, - #[serde(with = "eth2_serde_utils::quoted_u64")] + #[serde(with = "serde_utils::quoted_u64")] pub gas_limit: u64, } @@ -45,7 +45,7 @@ pub struct ImportKeystoresRequest { #[derive(Debug, Clone, PartialEq, Deserialize, Serialize)] #[serde(transparent)] -pub struct KeystoreJsonStr(#[serde(with = "eth2_serde_utils::json_str")] pub Keystore); +pub struct KeystoreJsonStr(#[serde(with = "serde_utils::json_str")] pub Keystore); impl std::ops::Deref for KeystoreJsonStr { type Target = Keystore; @@ -56,7 +56,7 @@ impl std::ops::Deref for KeystoreJsonStr { #[derive(Debug, Clone, PartialEq, Deserialize, Serialize)] #[serde(transparent)] -pub struct InterchangeJsonStr(#[serde(with = "eth2_serde_utils::json_str")] pub Interchange); +pub struct InterchangeJsonStr(#[serde(with = "serde_utils::json_str")] pub Interchange); #[derive(Debug, Deserialize, Serialize)] pub struct ImportKeystoresResponse { @@ -103,7 +103,7 @@ pub struct DeleteKeystoresRequest { #[derive(Debug, Deserialize, Serialize)] pub struct DeleteKeystoresResponse { pub data: Vec>, - #[serde(with = "eth2_serde_utils::json_str")] + #[serde(with = "serde_utils::json_str")] pub slashing_protection: Interchange, } diff --git a/common/eth2/src/lighthouse_vc/types.rs b/common/eth2/src/lighthouse_vc/types.rs index fa5d4ae119..dd2ed03221 100644 --- a/common/eth2/src/lighthouse_vc/types.rs +++ b/common/eth2/src/lighthouse_vc/types.rs @@ -32,14 +32,14 @@ pub struct ValidatorRequest { #[serde(default)] #[serde(skip_serializing_if = "Option::is_none")] pub builder_proposals: Option, - #[serde(with = "eth2_serde_utils::quoted_u64")] + #[serde(with = "serde_utils::quoted_u64")] pub deposit_gwei: u64, } #[derive(Clone, PartialEq, Serialize, Deserialize)] pub struct CreateValidatorsMnemonicRequest { pub mnemonic: ZeroizeString, - #[serde(with = "eth2_serde_utils::quoted_u32")] + #[serde(with = "serde_utils::quoted_u32")] pub key_derivation_path_offset: u32, pub validators: Vec, } @@ -62,7 +62,7 @@ pub struct CreatedValidator { #[serde(skip_serializing_if = "Option::is_none")] pub builder_proposals: Option, pub eth1_deposit_tx_data: String, - #[serde(with = "eth2_serde_utils::quoted_u64")] + #[serde(with = "serde_utils::quoted_u64")] pub deposit_gwei: u64, } @@ -141,7 +141,7 @@ pub struct UpdateFeeRecipientRequest { #[derive(Debug, Clone, PartialEq, Deserialize, Serialize)] pub struct UpdateGasLimitRequest { - #[serde(with = "eth2_serde_utils::quoted_u64")] + #[serde(with = "serde_utils::quoted_u64")] pub gas_limit: u64, } diff --git a/common/eth2/src/types.rs b/common/eth2/src/types.rs index 97c7ff34e1..5545bf45d7 100644 --- a/common/eth2/src/types.rs +++ b/common/eth2/src/types.rs @@ -82,10 +82,10 @@ impl std::fmt::Display for EndpointVersion { #[derive(Debug, Clone, PartialEq, Serialize, Deserialize)] pub struct GenesisData { - #[serde(with = "eth2_serde_utils::quoted_u64")] + #[serde(with = "serde_utils::quoted_u64")] pub genesis_time: u64, pub genesis_validators_root: Hash256, - #[serde(with = "eth2_serde_utils::bytes_4_hex")] + #[serde(with = "serde_utils::bytes_4_hex")] pub genesis_fork_version: [u8; 4], } @@ -316,9 +316,9 @@ impl fmt::Display for ValidatorId { #[derive(Debug, Clone, PartialEq, Serialize, Deserialize)] pub struct ValidatorData { - #[serde(with = "eth2_serde_utils::quoted_u64")] + #[serde(with = "serde_utils::quoted_u64")] pub index: u64, - #[serde(with = "eth2_serde_utils::quoted_u64")] + #[serde(with = "serde_utils::quoted_u64")] pub balance: u64, pub status: ValidatorStatus, pub validator: Validator, @@ -326,9 +326,9 @@ pub struct ValidatorData { #[derive(Debug, Clone, PartialEq, Serialize, Deserialize)] pub struct ValidatorBalanceData { - #[serde(with = "eth2_serde_utils::quoted_u64")] + #[serde(with = "serde_utils::quoted_u64")] pub index: u64, - #[serde(with = "eth2_serde_utils::quoted_u64")] + #[serde(with = "serde_utils::quoted_u64")] pub balance: u64, } @@ -491,16 +491,16 @@ pub struct ValidatorsQuery { #[derive(Debug, Clone, PartialEq, Serialize, Deserialize)] pub struct CommitteeData { - #[serde(with = "eth2_serde_utils::quoted_u64")] + #[serde(with = "serde_utils::quoted_u64")] pub index: u64, pub slot: Slot, - #[serde(with = "eth2_serde_utils::quoted_u64_vec")] + #[serde(with = "serde_utils::quoted_u64_vec")] pub validators: Vec, } #[derive(Debug, Clone, PartialEq, Serialize, Deserialize)] pub struct SyncCommitteeByValidatorIndices { - #[serde(with = "eth2_serde_utils::quoted_u64_vec")] + #[serde(with = "serde_utils::quoted_u64_vec")] pub validators: Vec, pub validator_aggregates: Vec, } @@ -513,7 +513,7 @@ pub struct RandaoMix { #[derive(Debug, Clone, PartialEq, Serialize, Deserialize)] #[serde(transparent)] pub struct SyncSubcommittee { - #[serde(with = "eth2_serde_utils::quoted_u64_vec")] + #[serde(with = "serde_utils::quoted_u64_vec")] pub indices: Vec, } @@ -538,7 +538,7 @@ pub struct BlockHeaderData { #[derive(Debug, Clone, PartialEq, Serialize, Deserialize)] pub struct DepositContractData { - #[serde(with = "eth2_serde_utils::quoted_u64")] + #[serde(with = "serde_utils::quoted_u64")] pub chain_id: u64, pub address: Address, } @@ -562,7 +562,7 @@ pub struct IdentityData { #[derive(Debug, Clone, PartialEq, Serialize, Deserialize)] pub struct MetaData { - #[serde(with = "eth2_serde_utils::quoted_u64")] + #[serde(with = "serde_utils::quoted_u64")] pub seq_number: u64, pub attnets: String, pub syncnets: String, @@ -649,27 +649,27 @@ pub struct ValidatorBalancesQuery { #[derive(Clone, Serialize, Deserialize)] #[serde(transparent)] -pub struct ValidatorIndexData(#[serde(with = "eth2_serde_utils::quoted_u64_vec")] pub Vec); +pub struct ValidatorIndexData(#[serde(with = "serde_utils::quoted_u64_vec")] pub Vec); /// Borrowed variant of `ValidatorIndexData`, for serializing/sending. #[derive(Clone, Copy, Serialize)] #[serde(transparent)] pub struct ValidatorIndexDataRef<'a>( - #[serde(serialize_with = "eth2_serde_utils::quoted_u64_vec::serialize")] pub &'a [u64], + #[serde(serialize_with = "serde_utils::quoted_u64_vec::serialize")] pub &'a [u64], ); #[derive(Debug, Clone, PartialEq, Serialize, Deserialize)] pub struct AttesterData { pub pubkey: PublicKeyBytes, - #[serde(with = "eth2_serde_utils::quoted_u64")] + #[serde(with = "serde_utils::quoted_u64")] pub validator_index: u64, - #[serde(with = "eth2_serde_utils::quoted_u64")] + #[serde(with = "serde_utils::quoted_u64")] pub committees_at_slot: u64, - #[serde(with = "eth2_serde_utils::quoted_u64")] + #[serde(with = "serde_utils::quoted_u64")] pub committee_index: CommitteeIndex, - #[serde(with = "eth2_serde_utils::quoted_u64")] + #[serde(with = "serde_utils::quoted_u64")] pub committee_length: u64, - #[serde(with = "eth2_serde_utils::quoted_u64")] + #[serde(with = "serde_utils::quoted_u64")] pub validator_committee_index: u64, pub slot: Slot, } @@ -677,7 +677,7 @@ pub struct AttesterData { #[derive(Debug, Clone, PartialEq, Serialize, Deserialize)] pub struct ProposerData { pub pubkey: PublicKeyBytes, - #[serde(with = "eth2_serde_utils::quoted_u64")] + #[serde(with = "serde_utils::quoted_u64")] pub validator_index: u64, pub slot: Slot, } @@ -726,11 +726,11 @@ pub struct ValidatorAggregateAttestationQuery { #[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, Hash)] pub struct BeaconCommitteeSubscription { - #[serde(with = "eth2_serde_utils::quoted_u64")] + #[serde(with = "serde_utils::quoted_u64")] pub validator_index: u64, - #[serde(with = "eth2_serde_utils::quoted_u64")] + #[serde(with = "serde_utils::quoted_u64")] pub committee_index: u64, - #[serde(with = "eth2_serde_utils::quoted_u64")] + #[serde(with = "serde_utils::quoted_u64")] pub committees_at_slot: u64, pub slot: Slot, pub is_aggregator: bool, @@ -851,13 +851,13 @@ impl fmt::Display for PeerDirection { #[derive(Debug, Clone, PartialEq, Serialize, Deserialize)] pub struct PeerCount { - #[serde(with = "eth2_serde_utils::quoted_u64")] + #[serde(with = "serde_utils::quoted_u64")] pub connected: u64, - #[serde(with = "eth2_serde_utils::quoted_u64")] + #[serde(with = "serde_utils::quoted_u64")] pub connecting: u64, - #[serde(with = "eth2_serde_utils::quoted_u64")] + #[serde(with = "serde_utils::quoted_u64")] pub disconnected: u64, - #[serde(with = "eth2_serde_utils::quoted_u64")] + #[serde(with = "serde_utils::quoted_u64")] pub disconnecting: u64, } @@ -892,7 +892,7 @@ pub struct SseHead { #[derive(PartialEq, Debug, Serialize, Deserialize, Clone)] pub struct SseChainReorg { pub slot: Slot, - #[serde(with = "eth2_serde_utils::quoted_u64")] + #[serde(with = "serde_utils::quoted_u64")] pub depth: u64, pub old_head_block: Hash256, pub old_head_state: Hash256, @@ -925,7 +925,7 @@ pub struct SseLateHead { #[serde(untagged)] pub struct SsePayloadAttributes { #[superstruct(getter(copy))] - #[serde(with = "eth2_serde_utils::quoted_u64")] + #[serde(with = "serde_utils::quoted_u64")] pub timestamp: u64, #[superstruct(getter(copy))] pub prev_randao: Hash256, @@ -938,10 +938,10 @@ pub struct SsePayloadAttributes { #[derive(PartialEq, Debug, Deserialize, Serialize, Clone)] pub struct SseExtendedPayloadAttributesGeneric { pub proposal_slot: Slot, - #[serde(with = "eth2_serde_utils::quoted_u64")] + #[serde(with = "serde_utils::quoted_u64")] pub proposer_index: u64, pub parent_block_root: Hash256, - #[serde(with = "eth2_serde_utils::quoted_u64")] + #[serde(with = "serde_utils::quoted_u64")] pub parent_block_number: u64, pub parent_block_hash: ExecutionBlockHash, pub payload_attributes: T, @@ -1205,13 +1205,13 @@ fn parse_accept(accept: &str) -> Result, String> { #[derive(Debug, Serialize, Deserialize)] pub struct LivenessRequestData { pub epoch: Epoch, - #[serde(with = "eth2_serde_utils::quoted_u64_vec")] + #[serde(with = "serde_utils::quoted_u64_vec")] pub indices: Vec, } #[derive(PartialEq, Debug, Serialize, Deserialize)] pub struct LivenessResponseData { - #[serde(with = "eth2_serde_utils::quoted_u64")] + #[serde(with = "serde_utils::quoted_u64")] pub index: u64, pub epoch: Epoch, pub is_live: bool, @@ -1231,7 +1231,7 @@ pub struct ForkChoiceNode { pub parent_root: Option, pub justified_epoch: Option, pub finalized_epoch: Option, - #[serde(with = "eth2_serde_utils::quoted_u64")] + #[serde(with = "serde_utils::quoted_u64")] pub weight: u64, pub validity: Option, pub execution_block_hash: Option, diff --git a/common/eth2_interop_keypairs/Cargo.toml b/common/eth2_interop_keypairs/Cargo.toml index 5f577bedc3..7a376568eb 100644 --- a/common/eth2_interop_keypairs/Cargo.toml +++ b/common/eth2_interop_keypairs/Cargo.toml @@ -9,7 +9,7 @@ edition = "2021" [dependencies] lazy_static = "1.4.0" num-bigint = "0.4.2" -eth2_hashing = "0.3.0" +ethereum_hashing = "1.0.0-beta.2" hex = "0.4.2" serde_yaml = "0.8.13" serde = "1.0.116" diff --git a/common/eth2_interop_keypairs/src/lib.rs b/common/eth2_interop_keypairs/src/lib.rs index eb26f563e0..7b5fa7a8e4 100644 --- a/common/eth2_interop_keypairs/src/lib.rs +++ b/common/eth2_interop_keypairs/src/lib.rs @@ -20,7 +20,7 @@ extern crate lazy_static; use bls::{Keypair, PublicKey, SecretKey}; -use eth2_hashing::hash; +use ethereum_hashing::hash; use num_bigint::BigUint; use serde_derive::{Deserialize, Serialize}; use std::convert::TryInto; diff --git a/common/eth2_network_config/Cargo.toml b/common/eth2_network_config/Cargo.toml index 95cea62d44..f8382c95d3 100644 --- a/common/eth2_network_config/Cargo.toml +++ b/common/eth2_network_config/Cargo.toml @@ -16,6 +16,6 @@ tempfile = "3.1.0" [dependencies] serde_yaml = "0.8.13" types = { path = "../../consensus/types"} -eth2_ssz = "0.4.1" +ethereum_ssz = "0.5.0" eth2_config = { path = "../eth2_config"} discv5 = "0.2.2" diff --git a/common/validator_dir/Cargo.toml b/common/validator_dir/Cargo.toml index 0eba4cf232..39a14e2837 100644 --- a/common/validator_dir/Cargo.toml +++ b/common/validator_dir/Cargo.toml @@ -16,7 +16,7 @@ filesystem = { path = "../filesystem" } types = { path = "../../consensus/types" } rand = "0.8.5" deposit_contract = { path = "../deposit_contract" } -tree_hash = "0.4.1" +tree_hash = "0.5.0" hex = "0.4.2" derivative = "2.1.1" lockfile = { path = "../lockfile" } diff --git a/consensus/cached_tree_hash/Cargo.toml b/consensus/cached_tree_hash/Cargo.toml index 0e0ef0707e..c2856003bf 100644 --- a/consensus/cached_tree_hash/Cargo.toml +++ b/consensus/cached_tree_hash/Cargo.toml @@ -6,11 +6,11 @@ edition = "2021" [dependencies] ethereum-types = "0.14.1" -eth2_ssz_types = "0.2.2" -eth2_hashing = "0.3.0" -eth2_ssz_derive = "0.3.1" -eth2_ssz = "0.4.1" -tree_hash = "0.4.1" +ssz_types = "0.5.0" +ethereum_hashing = "1.0.0-beta.2" +ethereum_ssz_derive = "0.5.0" +ethereum_ssz = "0.5.0" +tree_hash = "0.5.0" smallvec = "1.6.1" [dev-dependencies] diff --git a/consensus/cached_tree_hash/src/cache.rs b/consensus/cached_tree_hash/src/cache.rs index edb60f3060..3b4878503e 100644 --- a/consensus/cached_tree_hash/src/cache.rs +++ b/consensus/cached_tree_hash/src/cache.rs @@ -1,7 +1,7 @@ use crate::cache_arena; use crate::SmallVec8; use crate::{Error, Hash256}; -use eth2_hashing::{hash32_concat, ZERO_HASHES}; +use ethereum_hashing::{hash32_concat, ZERO_HASHES}; use smallvec::smallvec; use ssz_derive::{Decode, Encode}; use tree_hash::BYTES_PER_CHUNK; diff --git a/consensus/cached_tree_hash/src/test.rs b/consensus/cached_tree_hash/src/test.rs index 244439ab30..69b49826bf 100644 --- a/consensus/cached_tree_hash/src/test.rs +++ b/consensus/cached_tree_hash/src/test.rs @@ -1,6 +1,6 @@ use crate::impls::hash256_iter; use crate::{CacheArena, CachedTreeHash, Error, Hash256, TreeHashCache}; -use eth2_hashing::ZERO_HASHES; +use ethereum_hashing::ZERO_HASHES; use quickcheck_macros::quickcheck; use ssz_types::{ typenum::{Unsigned, U16, U255, U256, U257}, diff --git a/consensus/fork_choice/Cargo.toml b/consensus/fork_choice/Cargo.toml index f0381e5ad9..3864d52d47 100644 --- a/consensus/fork_choice/Cargo.toml +++ b/consensus/fork_choice/Cargo.toml @@ -10,8 +10,8 @@ edition = "2021" types = { path = "../types" } state_processing = { path = "../state_processing" } proto_array = { path = "../proto_array" } -eth2_ssz = "0.4.1" -eth2_ssz_derive = "0.3.1" +ethereum_ssz = "0.5.0" +ethereum_ssz_derive = "0.5.0" slog = { version = "2.5.2", features = ["max_level_trace", "release_max_level_trace"] } [dev-dependencies] diff --git a/consensus/merkle_proof/Cargo.toml b/consensus/merkle_proof/Cargo.toml index 2c0dbf1a75..2b883f8646 100644 --- a/consensus/merkle_proof/Cargo.toml +++ b/consensus/merkle_proof/Cargo.toml @@ -6,7 +6,7 @@ edition = "2021" [dependencies] ethereum-types = "0.14.1" -eth2_hashing = "0.3.0" +ethereum_hashing = "1.0.0-beta.2" lazy_static = "1.4.0" safe_arith = { path = "../safe_arith" } diff --git a/consensus/merkle_proof/src/lib.rs b/consensus/merkle_proof/src/lib.rs index 887deb1efd..dc3de71cef 100644 --- a/consensus/merkle_proof/src/lib.rs +++ b/consensus/merkle_proof/src/lib.rs @@ -1,4 +1,4 @@ -use eth2_hashing::{hash, hash32_concat, ZERO_HASHES}; +use ethereum_hashing::{hash, hash32_concat, ZERO_HASHES}; use ethereum_types::H256; use lazy_static::lazy_static; use safe_arith::ArithError; diff --git a/consensus/proto_array/Cargo.toml b/consensus/proto_array/Cargo.toml index 205ef8f521..cd43c566f0 100644 --- a/consensus/proto_array/Cargo.toml +++ b/consensus/proto_array/Cargo.toml @@ -10,8 +10,8 @@ path = "src/bin.rs" [dependencies] types = { path = "../types" } -eth2_ssz = "0.4.1" -eth2_ssz_derive = "0.3.1" +ethereum_ssz = "0.5.0" +ethereum_ssz_derive = "0.5.0" serde = "1.0.116" serde_derive = "1.0.116" serde_yaml = "0.8.13" diff --git a/consensus/serde_utils/Cargo.toml b/consensus/serde_utils/Cargo.toml deleted file mode 100644 index d4ba02765f..0000000000 --- a/consensus/serde_utils/Cargo.toml +++ /dev/null @@ -1,14 +0,0 @@ -[package] -name = "eth2_serde_utils" -version = "0.1.1" -authors = ["Paul Hauner "] -edition = "2021" -description = "Serialization and deserialization utilities useful for JSON representations of Ethereum 2.0 types." -license = "Apache-2.0" - -[dependencies] -serde = { version = "1.0.116", features = ["derive"] } -serde_derive = "1.0.116" -serde_json = "1.0.58" -hex = "0.4.2" -ethereum-types = "0.14.1" diff --git a/consensus/serde_utils/src/fixed_bytes_hex.rs b/consensus/serde_utils/src/fixed_bytes_hex.rs deleted file mode 100644 index 4e9dc98aca..0000000000 --- a/consensus/serde_utils/src/fixed_bytes_hex.rs +++ /dev/null @@ -1,52 +0,0 @@ -//! Formats `[u8; n]` as a 0x-prefixed hex string. -//! -//! E.g., `[0, 1, 2, 3]` serializes as `"0x00010203"`. - -use crate::hex::PrefixedHexVisitor; -use serde::de::Error; -use serde::{Deserializer, Serializer}; - -macro_rules! bytes_hex { - ($num_bytes: tt) => { - use super::*; - - const BYTES_LEN: usize = $num_bytes; - - pub fn serialize(bytes: &[u8; BYTES_LEN], serializer: S) -> Result - where - S: Serializer, - { - let mut hex_string: String = "0x".to_string(); - hex_string.push_str(&hex::encode(&bytes)); - - serializer.serialize_str(&hex_string) - } - - pub fn deserialize<'de, D>(deserializer: D) -> Result<[u8; BYTES_LEN], D::Error> - where - D: Deserializer<'de>, - { - let decoded = deserializer.deserialize_str(PrefixedHexVisitor)?; - - if decoded.len() != BYTES_LEN { - return Err(D::Error::custom(format!( - "expected {} bytes for array, got {}", - BYTES_LEN, - decoded.len() - ))); - } - - let mut array = [0; BYTES_LEN]; - array.copy_from_slice(&decoded); - Ok(array) - } - }; -} - -pub mod bytes_4_hex { - bytes_hex!(4); -} - -pub mod bytes_8_hex { - bytes_hex!(8); -} diff --git a/consensus/serde_utils/src/hex.rs b/consensus/serde_utils/src/hex.rs deleted file mode 100644 index 9a2cd65c76..0000000000 --- a/consensus/serde_utils/src/hex.rs +++ /dev/null @@ -1,77 +0,0 @@ -//! Provides utilities for parsing 0x-prefixed hex strings. - -use serde::de::{self, Visitor}; -use std::fmt; - -/// Encode `data` as a 0x-prefixed hex string. -pub fn encode>(data: T) -> String { - let hex = hex::encode(data); - - let mut s = "0x".to_string(); - s.push_str(hex.as_str()); - s -} - -/// Decode `data` from a 0x-prefixed hex string. -pub fn decode(s: &str) -> Result, String> { - if let Some(stripped) = s.strip_prefix("0x") { - hex::decode(stripped).map_err(|e| format!("invalid hex: {:?}", e)) - } else { - Err("hex must have 0x prefix".to_string()) - } -} - -pub struct PrefixedHexVisitor; - -impl<'de> Visitor<'de> for PrefixedHexVisitor { - type Value = Vec; - - fn expecting(&self, formatter: &mut fmt::Formatter) -> fmt::Result { - formatter.write_str("a hex string with 0x prefix") - } - - fn visit_str(self, value: &str) -> Result - where - E: de::Error, - { - decode(value).map_err(de::Error::custom) - } -} - -pub struct HexVisitor; - -impl<'de> Visitor<'de> for HexVisitor { - type Value = Vec; - - fn expecting(&self, formatter: &mut fmt::Formatter) -> fmt::Result { - formatter.write_str("a hex string (irrelevant of prefix)") - } - - fn visit_str(self, value: &str) -> Result - where - E: de::Error, - { - hex::decode(value.trim_start_matches("0x")) - .map_err(|e| de::Error::custom(format!("invalid hex ({:?})", e))) - } -} - -#[cfg(test)] -mod test { - use super::*; - - #[test] - fn encoding() { - let bytes = vec![0, 255]; - let hex = encode(bytes); - assert_eq!(hex.as_str(), "0x00ff"); - - let bytes = vec![]; - let hex = encode(bytes); - assert_eq!(hex.as_str(), "0x"); - - let bytes = vec![1, 2, 3]; - let hex = encode(bytes); - assert_eq!(hex.as_str(), "0x010203"); - } -} diff --git a/consensus/serde_utils/src/hex_vec.rs b/consensus/serde_utils/src/hex_vec.rs deleted file mode 100644 index f7f4833628..0000000000 --- a/consensus/serde_utils/src/hex_vec.rs +++ /dev/null @@ -1,23 +0,0 @@ -//! Formats `Vec` as a 0x-prefixed hex string. -//! -//! E.g., `vec![0, 1, 2, 3]` serializes as `"0x00010203"`. - -use crate::hex::PrefixedHexVisitor; -use serde::{Deserializer, Serializer}; - -pub fn serialize(bytes: &[u8], serializer: S) -> Result -where - S: Serializer, -{ - let mut hex_string: String = "0x".to_string(); - hex_string.push_str(&hex::encode(bytes)); - - serializer.serialize_str(&hex_string) -} - -pub fn deserialize<'de, D>(deserializer: D) -> Result, D::Error> -where - D: Deserializer<'de>, -{ - deserializer.deserialize_str(PrefixedHexVisitor) -} diff --git a/consensus/serde_utils/src/json_str.rs b/consensus/serde_utils/src/json_str.rs deleted file mode 100644 index b9a1813915..0000000000 --- a/consensus/serde_utils/src/json_str.rs +++ /dev/null @@ -1,25 +0,0 @@ -//! Serialize a datatype as a JSON-blob within a single string. -use serde::{ - de::{DeserializeOwned, Error as _}, - ser::Error as _, - Deserialize, Deserializer, Serialize, Serializer, -}; - -/// Serialize as a JSON object within a string. -pub fn serialize(value: &T, serializer: S) -> Result -where - S: Serializer, - T: Serialize, -{ - serializer.serialize_str(&serde_json::to_string(value).map_err(S::Error::custom)?) -} - -/// Deserialize a JSON object embedded in a string. -pub fn deserialize<'de, T, D>(deserializer: D) -> Result -where - D: Deserializer<'de>, - T: DeserializeOwned, -{ - let json_str = String::deserialize(deserializer)?; - serde_json::from_str(&json_str).map_err(D::Error::custom) -} diff --git a/consensus/serde_utils/src/lib.rs b/consensus/serde_utils/src/lib.rs deleted file mode 100644 index 5c5dafc665..0000000000 --- a/consensus/serde_utils/src/lib.rs +++ /dev/null @@ -1,15 +0,0 @@ -mod quoted_int; - -pub mod fixed_bytes_hex; -pub mod hex; -pub mod hex_vec; -pub mod json_str; -pub mod list_of_bytes_lists; -pub mod quoted_u64_vec; -pub mod u256_hex_be; -pub mod u32_hex; -pub mod u64_hex_be; -pub mod u8_hex; - -pub use fixed_bytes_hex::{bytes_4_hex, bytes_8_hex}; -pub use quoted_int::{quoted_i64, quoted_u256, quoted_u32, quoted_u64, quoted_u8}; diff --git a/consensus/serde_utils/src/list_of_bytes_lists.rs b/consensus/serde_utils/src/list_of_bytes_lists.rs deleted file mode 100644 index b93321aa06..0000000000 --- a/consensus/serde_utils/src/list_of_bytes_lists.rs +++ /dev/null @@ -1,49 +0,0 @@ -//! Formats `Vec` using quotes. -//! -//! E.g., `vec![0, 1, 2]` serializes as `["0", "1", "2"]`. -//! -//! Quotes can be optional during decoding. - -use crate::hex; -use serde::ser::SerializeSeq; -use serde::{de, Deserializer, Serializer}; - -pub struct ListOfBytesListVisitor; -impl<'a> serde::de::Visitor<'a> for ListOfBytesListVisitor { - type Value = Vec>; - - fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result { - write!(formatter, "a list of 0x-prefixed byte lists") - } - - fn visit_seq(self, mut seq: A) -> Result - where - A: serde::de::SeqAccess<'a>, - { - let mut vec = vec![]; - - while let Some(val) = seq.next_element::()? { - vec.push(hex::decode(&val).map_err(de::Error::custom)?); - } - - Ok(vec) - } -} - -pub fn serialize(value: &[Vec], serializer: S) -> Result -where - S: Serializer, -{ - let mut seq = serializer.serialize_seq(Some(value.len()))?; - for val in value { - seq.serialize_element(&hex::encode(val))?; - } - seq.end() -} - -pub fn deserialize<'de, D>(deserializer: D) -> Result>, D::Error> -where - D: Deserializer<'de>, -{ - deserializer.deserialize_any(ListOfBytesListVisitor) -} diff --git a/consensus/serde_utils/src/quoted_int.rs b/consensus/serde_utils/src/quoted_int.rs deleted file mode 100644 index 0cc35aa318..0000000000 --- a/consensus/serde_utils/src/quoted_int.rs +++ /dev/null @@ -1,247 +0,0 @@ -//! Formats some integer types using quotes. -//! -//! E.g., `1` serializes as `"1"`. -//! -//! Quotes can be optional during decoding. - -use ethereum_types::U256; -use serde::{Deserializer, Serializer}; -use serde_derive::{Deserialize, Serialize}; -use std::convert::TryFrom; -use std::marker::PhantomData; - -macro_rules! define_mod { - ($int: ty) => { - /// Serde support for deserializing quoted integers. - /// - /// Configurable so that quotes are either required or optional. - pub struct QuotedIntVisitor { - require_quotes: bool, - _phantom: PhantomData, - } - - impl<'a, T> serde::de::Visitor<'a> for QuotedIntVisitor - where - T: From<$int> + Into<$int> + Copy + TryFrom, - { - type Value = T; - - fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result { - if self.require_quotes { - write!(formatter, "a quoted integer") - } else { - write!(formatter, "a quoted or unquoted integer") - } - } - - fn visit_str(self, s: &str) -> Result - where - E: serde::de::Error, - { - s.parse::<$int>() - .map(T::from) - .map_err(serde::de::Error::custom) - } - - fn visit_u64(self, v: u64) -> Result - where - E: serde::de::Error, - { - if self.require_quotes { - Err(serde::de::Error::custom( - "received unquoted integer when quotes are required", - )) - } else { - T::try_from(v).map_err(|_| serde::de::Error::custom("invalid integer")) - } - } - } - - /// Compositional wrapper type that allows quotes or no quotes. - #[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Deserialize, Serialize)] - #[serde(transparent)] - pub struct MaybeQuoted - where - T: From<$int> + Into<$int> + Copy + TryFrom, - { - #[serde(with = "self")] - pub value: T, - } - - /// Wrapper type for requiring quotes on a `$int`-like type. - /// - /// Unlike using `serde(with = "quoted_$int::require_quotes")` this is composable, and can be nested - /// inside types like `Option`, `Result` and `Vec`. - #[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Deserialize, Serialize)] - #[serde(transparent)] - pub struct Quoted - where - T: From<$int> + Into<$int> + Copy + TryFrom, - { - #[serde(with = "require_quotes")] - pub value: T, - } - - /// Serialize with quotes. - pub fn serialize(value: &T, serializer: S) -> Result - where - S: Serializer, - T: From<$int> + Into<$int> + Copy, - { - let v: $int = (*value).into(); - serializer.serialize_str(&format!("{}", v)) - } - - /// Deserialize with or without quotes. - pub fn deserialize<'de, D, T>(deserializer: D) -> Result - where - D: Deserializer<'de>, - T: From<$int> + Into<$int> + Copy + TryFrom, - { - deserializer.deserialize_any(QuotedIntVisitor { - require_quotes: false, - _phantom: PhantomData, - }) - } - - /// Requires quotes when deserializing. - /// - /// Usage: `#[serde(with = "quoted_u64::require_quotes")]`. - pub mod require_quotes { - pub use super::serialize; - use super::*; - - pub fn deserialize<'de, D, T>(deserializer: D) -> Result - where - D: Deserializer<'de>, - T: From<$int> + Into<$int> + Copy + TryFrom, - { - deserializer.deserialize_any(QuotedIntVisitor { - require_quotes: true, - _phantom: PhantomData, - }) - } - } - - #[cfg(test)] - mod test { - use super::*; - - #[test] - fn require_quotes() { - let x = serde_json::from_str::>("\"8\"").unwrap(); - assert_eq!(x.value, 8); - serde_json::from_str::>("8").unwrap_err(); - } - } - }; -} - -pub mod quoted_u8 { - use super::*; - - define_mod!(u8); -} - -pub mod quoted_u32 { - use super::*; - - define_mod!(u32); -} - -pub mod quoted_u64 { - use super::*; - - define_mod!(u64); -} - -pub mod quoted_i64 { - use super::*; - - define_mod!(i64); -} - -pub mod quoted_u256 { - use super::*; - - struct U256Visitor; - - impl<'de> serde::de::Visitor<'de> for U256Visitor { - type Value = U256; - - fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result { - formatter.write_str("a quoted U256 integer") - } - - fn visit_str(self, v: &str) -> Result - where - E: serde::de::Error, - { - U256::from_dec_str(v).map_err(serde::de::Error::custom) - } - } - - /// Serialize with quotes. - pub fn serialize(value: &U256, serializer: S) -> Result - where - S: Serializer, - { - serializer.serialize_str(&format!("{}", value)) - } - - /// Deserialize with quotes. - pub fn deserialize<'de, D>(deserializer: D) -> Result - where - D: Deserializer<'de>, - { - deserializer.deserialize_str(U256Visitor) - } -} - -#[cfg(test)] -mod test { - use super::*; - - #[derive(Debug, PartialEq, Serialize, Deserialize)] - #[serde(transparent)] - struct WrappedU256(#[serde(with = "quoted_u256")] U256); - - #[test] - fn u256_with_quotes() { - assert_eq!( - &serde_json::to_string(&WrappedU256(U256::one())).unwrap(), - "\"1\"" - ); - assert_eq!( - serde_json::from_str::("\"1\"").unwrap(), - WrappedU256(U256::one()) - ); - } - - #[test] - fn u256_without_quotes() { - serde_json::from_str::("1").unwrap_err(); - } - - #[derive(Debug, PartialEq, Serialize, Deserialize)] - #[serde(transparent)] - struct WrappedI64(#[serde(with = "quoted_i64")] i64); - - #[test] - fn negative_i64_with_quotes() { - assert_eq!( - serde_json::from_str::("\"-200\"").unwrap().0, - -200 - ); - assert_eq!( - serde_json::to_string(&WrappedI64(-12_500)).unwrap(), - "\"-12500\"" - ); - } - - // It would be OK if this worked, but we don't need it to (i64s should always be quoted). - #[test] - fn negative_i64_without_quotes() { - serde_json::from_str::("-200").unwrap_err(); - } -} diff --git a/consensus/serde_utils/src/quoted_u64_vec.rs b/consensus/serde_utils/src/quoted_u64_vec.rs deleted file mode 100644 index f124c98909..0000000000 --- a/consensus/serde_utils/src/quoted_u64_vec.rs +++ /dev/null @@ -1,97 +0,0 @@ -//! Formats `Vec` using quotes. -//! -//! E.g., `vec![0, 1, 2]` serializes as `["0", "1", "2"]`. -//! -//! Quotes can be optional during decoding. - -use serde::ser::SerializeSeq; -use serde::{Deserializer, Serializer}; -use serde_derive::{Deserialize, Serialize}; - -#[derive(Serialize, Deserialize)] -#[serde(transparent)] -pub struct QuotedIntWrapper { - #[serde(with = "crate::quoted_u64")] - pub int: u64, -} - -pub struct QuotedIntVecVisitor; -impl<'a> serde::de::Visitor<'a> for QuotedIntVecVisitor { - type Value = Vec; - - fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result { - write!(formatter, "a list of quoted or unquoted integers") - } - - fn visit_seq(self, mut seq: A) -> Result - where - A: serde::de::SeqAccess<'a>, - { - let mut vec = vec![]; - - while let Some(val) = seq.next_element()? { - let val: QuotedIntWrapper = val; - vec.push(val.int); - } - - Ok(vec) - } -} - -pub fn serialize(value: &[u64], serializer: S) -> Result -where - S: Serializer, -{ - let mut seq = serializer.serialize_seq(Some(value.len()))?; - for &int in value { - seq.serialize_element(&QuotedIntWrapper { int })?; - } - seq.end() -} - -pub fn deserialize<'de, D>(deserializer: D) -> Result, D::Error> -where - D: Deserializer<'de>, -{ - deserializer.deserialize_any(QuotedIntVecVisitor) -} - -#[cfg(test)] -mod test { - use super::*; - - #[derive(Debug, Serialize, Deserialize)] - struct Obj { - #[serde(with = "crate::quoted_u64_vec")] - values: Vec, - } - - #[test] - fn quoted_list_success() { - let obj: Obj = serde_json::from_str(r#"{ "values": ["1", "2", "3", "4"] }"#).unwrap(); - assert_eq!(obj.values, vec![1, 2, 3, 4]); - } - - #[test] - fn unquoted_list_success() { - let obj: Obj = serde_json::from_str(r#"{ "values": [1, 2, 3, 4] }"#).unwrap(); - assert_eq!(obj.values, vec![1, 2, 3, 4]); - } - - #[test] - fn mixed_list_success() { - let obj: Obj = serde_json::from_str(r#"{ "values": ["1", 2, "3", "4"] }"#).unwrap(); - assert_eq!(obj.values, vec![1, 2, 3, 4]); - } - - #[test] - fn empty_list_success() { - let obj: Obj = serde_json::from_str(r#"{ "values": [] }"#).unwrap(); - assert!(obj.values.is_empty()); - } - - #[test] - fn whole_list_quoted_err() { - serde_json::from_str::(r#"{ "values": "[1, 2, 3, 4]" }"#).unwrap_err(); - } -} diff --git a/consensus/serde_utils/src/u256_hex_be.rs b/consensus/serde_utils/src/u256_hex_be.rs deleted file mode 100644 index 8007e5792c..0000000000 --- a/consensus/serde_utils/src/u256_hex_be.rs +++ /dev/null @@ -1,144 +0,0 @@ -use ethereum_types::U256; - -use serde::de::Visitor; -use serde::{de, Deserializer, Serialize, Serializer}; -use std::fmt; -use std::str::FromStr; - -pub fn serialize(num: &U256, serializer: S) -> Result -where - S: Serializer, -{ - num.serialize(serializer) -} - -pub struct U256Visitor; - -impl<'de> Visitor<'de> for U256Visitor { - type Value = String; - - fn expecting(&self, formatter: &mut fmt::Formatter) -> fmt::Result { - formatter.write_str("a well formatted hex string") - } - - fn visit_str(self, value: &str) -> Result - where - E: de::Error, - { - if !value.starts_with("0x") { - return Err(de::Error::custom("must start with 0x")); - } - let stripped = &value[2..]; - if stripped.is_empty() { - Err(de::Error::custom(format!( - "quantity cannot be {:?}", - stripped - ))) - } else if stripped == "0" { - Ok(value.to_string()) - } else if stripped.starts_with('0') { - Err(de::Error::custom("cannot have leading zero")) - } else { - Ok(value.to_string()) - } - } -} - -pub fn deserialize<'de, D>(deserializer: D) -> Result -where - D: Deserializer<'de>, -{ - let decoded = deserializer.deserialize_string(U256Visitor)?; - - U256::from_str(&decoded).map_err(|e| de::Error::custom(format!("Invalid U256 string: {}", e))) -} - -#[cfg(test)] -mod test { - use ethereum_types::U256; - use serde::{Deserialize, Serialize}; - use serde_json; - - #[derive(Debug, PartialEq, Serialize, Deserialize)] - #[serde(transparent)] - struct Wrapper { - #[serde(with = "super")] - val: U256, - } - - #[test] - fn encoding() { - assert_eq!( - &serde_json::to_string(&Wrapper { val: 0.into() }).unwrap(), - "\"0x0\"" - ); - assert_eq!( - &serde_json::to_string(&Wrapper { val: 1.into() }).unwrap(), - "\"0x1\"" - ); - assert_eq!( - &serde_json::to_string(&Wrapper { val: 256.into() }).unwrap(), - "\"0x100\"" - ); - assert_eq!( - &serde_json::to_string(&Wrapper { val: 65.into() }).unwrap(), - "\"0x41\"" - ); - assert_eq!( - &serde_json::to_string(&Wrapper { val: 1024.into() }).unwrap(), - "\"0x400\"" - ); - assert_eq!( - &serde_json::to_string(&Wrapper { - val: U256::max_value() - 1 - }) - .unwrap(), - "\"0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe\"" - ); - assert_eq!( - &serde_json::to_string(&Wrapper { - val: U256::max_value() - }) - .unwrap(), - "\"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\"" - ); - } - - #[test] - fn decoding() { - assert_eq!( - serde_json::from_str::("\"0x0\"").unwrap(), - Wrapper { val: 0.into() }, - ); - assert_eq!( - serde_json::from_str::("\"0x41\"").unwrap(), - Wrapper { val: 65.into() }, - ); - assert_eq!( - serde_json::from_str::("\"0x400\"").unwrap(), - Wrapper { val: 1024.into() }, - ); - assert_eq!( - serde_json::from_str::( - "\"0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe\"" - ) - .unwrap(), - Wrapper { - val: U256::max_value() - 1 - }, - ); - assert_eq!( - serde_json::from_str::( - "\"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\"" - ) - .unwrap(), - Wrapper { - val: U256::max_value() - }, - ); - serde_json::from_str::("\"0x\"").unwrap_err(); - serde_json::from_str::("\"0x0400\"").unwrap_err(); - serde_json::from_str::("\"400\"").unwrap_err(); - serde_json::from_str::("\"ff\"").unwrap_err(); - } -} diff --git a/consensus/serde_utils/src/u32_hex.rs b/consensus/serde_utils/src/u32_hex.rs deleted file mode 100644 index c1ab3537b2..0000000000 --- a/consensus/serde_utils/src/u32_hex.rs +++ /dev/null @@ -1,21 +0,0 @@ -//! Formats `u32` as a 0x-prefixed, little-endian hex string. -//! -//! E.g., `0` serializes as `"0x00000000"`. - -use crate::bytes_4_hex; -use serde::{Deserializer, Serializer}; - -pub fn serialize(num: &u32, serializer: S) -> Result -where - S: Serializer, -{ - let hex = format!("0x{}", hex::encode(num.to_le_bytes())); - serializer.serialize_str(&hex) -} - -pub fn deserialize<'de, D>(deserializer: D) -> Result -where - D: Deserializer<'de>, -{ - bytes_4_hex::deserialize(deserializer).map(u32::from_le_bytes) -} diff --git a/consensus/serde_utils/src/u64_hex_be.rs b/consensus/serde_utils/src/u64_hex_be.rs deleted file mode 100644 index e3364a2d2c..0000000000 --- a/consensus/serde_utils/src/u64_hex_be.rs +++ /dev/null @@ -1,134 +0,0 @@ -//! Formats `u64` as a 0x-prefixed, big-endian hex string. -//! -//! E.g., `0` serializes as `"0x0000000000000000"`. - -use serde::de::{self, Error, Visitor}; -use serde::{Deserializer, Serializer}; -use std::fmt; - -const BYTES_LEN: usize = 8; - -pub struct QuantityVisitor; -impl<'de> Visitor<'de> for QuantityVisitor { - type Value = Vec; - - fn expecting(&self, formatter: &mut fmt::Formatter) -> fmt::Result { - formatter.write_str("a hex string") - } - - fn visit_str(self, value: &str) -> Result - where - E: de::Error, - { - if !value.starts_with("0x") { - return Err(de::Error::custom("must start with 0x")); - } - - let stripped = value.trim_start_matches("0x"); - - if stripped.is_empty() { - Err(de::Error::custom(format!( - "quantity cannot be {}", - stripped - ))) - } else if stripped == "0" { - Ok(vec![0]) - } else if stripped.starts_with('0') { - Err(de::Error::custom("cannot have leading zero")) - } else if stripped.len() % 2 != 0 { - hex::decode(format!("0{}", stripped)) - .map_err(|e| de::Error::custom(format!("invalid hex ({:?})", e))) - } else { - hex::decode(stripped).map_err(|e| de::Error::custom(format!("invalid hex ({:?})", e))) - } - } -} - -pub fn serialize(num: &u64, serializer: S) -> Result -where - S: Serializer, -{ - let raw = hex::encode(num.to_be_bytes()); - let trimmed = raw.trim_start_matches('0'); - - let hex = if trimmed.is_empty() { "0" } else { trimmed }; - - serializer.serialize_str(&format!("0x{}", &hex)) -} - -pub fn deserialize<'de, D>(deserializer: D) -> Result -where - D: Deserializer<'de>, -{ - let decoded = deserializer.deserialize_str(QuantityVisitor)?; - - // TODO: this is not strict about byte length like other methods. - if decoded.len() > BYTES_LEN { - return Err(D::Error::custom(format!( - "expected max {} bytes for array, got {}", - BYTES_LEN, - decoded.len() - ))); - } - - let mut array = [0; BYTES_LEN]; - array[BYTES_LEN - decoded.len()..].copy_from_slice(&decoded); - Ok(u64::from_be_bytes(array)) -} - -#[cfg(test)] -mod test { - use serde::{Deserialize, Serialize}; - use serde_json; - - #[derive(Debug, PartialEq, Serialize, Deserialize)] - #[serde(transparent)] - struct Wrapper { - #[serde(with = "super")] - val: u64, - } - - #[test] - fn encoding() { - assert_eq!( - &serde_json::to_string(&Wrapper { val: 0 }).unwrap(), - "\"0x0\"" - ); - assert_eq!( - &serde_json::to_string(&Wrapper { val: 1 }).unwrap(), - "\"0x1\"" - ); - assert_eq!( - &serde_json::to_string(&Wrapper { val: 256 }).unwrap(), - "\"0x100\"" - ); - assert_eq!( - &serde_json::to_string(&Wrapper { val: 65 }).unwrap(), - "\"0x41\"" - ); - assert_eq!( - &serde_json::to_string(&Wrapper { val: 1024 }).unwrap(), - "\"0x400\"" - ); - } - - #[test] - fn decoding() { - assert_eq!( - serde_json::from_str::("\"0x0\"").unwrap(), - Wrapper { val: 0 }, - ); - assert_eq!( - serde_json::from_str::("\"0x41\"").unwrap(), - Wrapper { val: 65 }, - ); - assert_eq!( - serde_json::from_str::("\"0x400\"").unwrap(), - Wrapper { val: 1024 }, - ); - serde_json::from_str::("\"0x\"").unwrap_err(); - serde_json::from_str::("\"0x0400\"").unwrap_err(); - serde_json::from_str::("\"400\"").unwrap_err(); - serde_json::from_str::("\"ff\"").unwrap_err(); - } -} diff --git a/consensus/serde_utils/src/u8_hex.rs b/consensus/serde_utils/src/u8_hex.rs deleted file mode 100644 index 8083e1d120..0000000000 --- a/consensus/serde_utils/src/u8_hex.rs +++ /dev/null @@ -1,29 +0,0 @@ -//! Formats `u8` as a 0x-prefixed hex string. -//! -//! E.g., `0` serializes as `"0x00"`. - -use crate::hex::PrefixedHexVisitor; -use serde::de::Error; -use serde::{Deserializer, Serializer}; - -pub fn serialize(byte: &u8, serializer: S) -> Result -where - S: Serializer, -{ - let hex = format!("0x{}", hex::encode([*byte])); - serializer.serialize_str(&hex) -} - -pub fn deserialize<'de, D>(deserializer: D) -> Result -where - D: Deserializer<'de>, -{ - let bytes = deserializer.deserialize_str(PrefixedHexVisitor)?; - if bytes.len() != 1 { - return Err(D::Error::custom(format!( - "expected 1 byte for u8, got {}", - bytes.len() - ))); - } - Ok(bytes[0]) -} diff --git a/consensus/ssz/Cargo.toml b/consensus/ssz/Cargo.toml deleted file mode 100644 index d39ad10875..0000000000 --- a/consensus/ssz/Cargo.toml +++ /dev/null @@ -1,21 +0,0 @@ -[package] -name = "eth2_ssz" -version = "0.4.1" -authors = ["Paul Hauner "] -edition = "2021" -description = "SimpleSerialize (SSZ) as used in Ethereum 2.0" -license = "Apache-2.0" - -[lib] -name = "ssz" - -[dev-dependencies] -eth2_ssz_derive = "0.3.1" - -[dependencies] -ethereum-types = "0.14.1" -smallvec = { version = "1.6.1", features = ["const_generics"] } -itertools = "0.10.3" - -[features] -arbitrary = ["ethereum-types/arbitrary"] diff --git a/consensus/ssz/README.md b/consensus/ssz/README.md deleted file mode 100644 index 04603cda33..0000000000 --- a/consensus/ssz/README.md +++ /dev/null @@ -1,3 +0,0 @@ -# simpleserialize (ssz) - -[](https://crates.io/crates/eth2_ssz) diff --git a/consensus/ssz/examples/large_list.rs b/consensus/ssz/examples/large_list.rs deleted file mode 100644 index a1b10ab7a3..0000000000 --- a/consensus/ssz/examples/large_list.rs +++ /dev/null @@ -1,15 +0,0 @@ -//! Encode and decode a list many times. -//! -//! Useful for `cargo flamegraph`. - -use ssz::{Decode, Encode}; - -fn main() { - let vec: Vec = vec![4242; 8196]; - - let output: Vec> = (0..40_000) - .map(|_| Vec::from_ssz_bytes(&vec.as_ssz_bytes()).unwrap()) - .collect(); - - println!("{}", output.len()); -} diff --git a/consensus/ssz/examples/large_list_of_structs.rs b/consensus/ssz/examples/large_list_of_structs.rs deleted file mode 100644 index 2aaaf9b8a5..0000000000 --- a/consensus/ssz/examples/large_list_of_structs.rs +++ /dev/null @@ -1,31 +0,0 @@ -//! Encode and decode a list many times. -//! -//! Useful for `cargo flamegraph`. - -use ssz::{Decode, Encode}; -use ssz_derive::{Decode, Encode}; - -#[derive(Clone, Copy, Encode, Decode)] -pub struct FixedLen { - a: u64, - b: u64, - c: u64, - d: u64, -} - -fn main() { - let fixed_len = FixedLen { - a: 42, - b: 42, - c: 42, - d: 42, - }; - - let vec: Vec = vec![fixed_len; 8196]; - - let output: Vec> = (0..40_000) - .map(|_| Vec::from_ssz_bytes(&vec.as_ssz_bytes()).unwrap()) - .collect(); - - println!("{}", output.len()); -} diff --git a/consensus/ssz/examples/struct_definition.rs b/consensus/ssz/examples/struct_definition.rs deleted file mode 100644 index 123da12c58..0000000000 --- a/consensus/ssz/examples/struct_definition.rs +++ /dev/null @@ -1,73 +0,0 @@ -use ssz::{Decode, DecodeError, Encode, SszDecoderBuilder, SszEncoder}; - -#[derive(Debug, PartialEq)] -pub struct Foo { - a: u16, - b: Vec, - c: u16, -} - -impl Encode for Foo { - fn is_ssz_fixed_len() -> bool { - ::is_ssz_fixed_len() && as Encode>::is_ssz_fixed_len() - } - - fn ssz_bytes_len(&self) -> usize { - ::ssz_fixed_len() - + ssz::BYTES_PER_LENGTH_OFFSET - + ::ssz_fixed_len() - + self.b.ssz_bytes_len() - } - - fn ssz_append(&self, buf: &mut Vec) { - let offset = ::ssz_fixed_len() - + as Encode>::ssz_fixed_len() - + ::ssz_fixed_len(); - - let mut encoder = SszEncoder::container(buf, offset); - - encoder.append(&self.a); - encoder.append(&self.b); - encoder.append(&self.c); - - encoder.finalize(); - } -} - -impl Decode for Foo { - fn is_ssz_fixed_len() -> bool { - ::is_ssz_fixed_len() && as Decode>::is_ssz_fixed_len() - } - - fn from_ssz_bytes(bytes: &[u8]) -> Result { - let mut builder = SszDecoderBuilder::new(bytes); - - builder.register_type::()?; - builder.register_type::>()?; - builder.register_type::()?; - - let mut decoder = builder.build()?; - - Ok(Self { - a: decoder.decode_next()?, - b: decoder.decode_next()?, - c: decoder.decode_next()?, - }) - } -} - -fn main() { - let my_foo = Foo { - a: 42, - b: vec![0, 1, 2, 3], - c: 11, - }; - - let bytes = vec![42, 0, 8, 0, 0, 0, 11, 0, 0, 1, 2, 3]; - - assert_eq!(my_foo.as_ssz_bytes(), bytes); - - let decoded_foo = Foo::from_ssz_bytes(&bytes).unwrap(); - - assert_eq!(my_foo, decoded_foo); -} diff --git a/consensus/ssz/src/decode.rs b/consensus/ssz/src/decode.rs deleted file mode 100644 index 10b3573b16..0000000000 --- a/consensus/ssz/src/decode.rs +++ /dev/null @@ -1,374 +0,0 @@ -use super::*; -use smallvec::{smallvec, SmallVec}; -use std::cmp::Ordering; - -type SmallVec8 = SmallVec<[T; 8]>; - -pub mod impls; -pub mod try_from_iter; - -/// Returned when SSZ decoding fails. -#[derive(Debug, PartialEq, Clone)] -pub enum DecodeError { - /// The bytes supplied were too short to be decoded into the specified type. - InvalidByteLength { len: usize, expected: usize }, - /// The given bytes were too short to be read as a length prefix. - InvalidLengthPrefix { len: usize, expected: usize }, - /// A length offset pointed to a byte that was out-of-bounds (OOB). - /// - /// A bytes may be OOB for the following reasons: - /// - /// - It is `>= bytes.len()`. - /// - When decoding variable length items, the 1st offset points "backwards" into the fixed - /// length items (i.e., `length[0] < BYTES_PER_LENGTH_OFFSET`). - /// - When decoding variable-length items, the `n`'th offset was less than the `n-1`'th offset. - OutOfBoundsByte { i: usize }, - /// An offset points “backwards” into the fixed-bytes portion of the message, essentially - /// double-decoding bytes that will also be decoded as fixed-length. - /// - /// https://notes.ethereum.org/ruKvDXl6QOW3gnqVYb8ezA?view#1-Offset-into-fixed-portion - OffsetIntoFixedPortion(usize), - /// The first offset does not point to the byte that follows the fixed byte portion, - /// essentially skipping a variable-length byte. - /// - /// https://notes.ethereum.org/ruKvDXl6QOW3gnqVYb8ezA?view#2-Skip-first-variable-byte - OffsetSkipsVariableBytes(usize), - /// An offset points to bytes prior to the previous offset. Depending on how you look at it, - /// this either double-decodes bytes or makes the first offset a negative-length. - /// - /// https://notes.ethereum.org/ruKvDXl6QOW3gnqVYb8ezA?view#3-Offsets-are-decreasing - OffsetsAreDecreasing(usize), - /// An offset references byte indices that do not exist in the source bytes. - /// - /// https://notes.ethereum.org/ruKvDXl6QOW3gnqVYb8ezA?view#4-Offsets-are-out-of-bounds - OffsetOutOfBounds(usize), - /// A variable-length list does not have a fixed portion that is cleanly divisible by - /// `BYTES_PER_LENGTH_OFFSET`. - InvalidListFixedBytesLen(usize), - /// Some item has a `ssz_fixed_len` of zero. This is illegal. - ZeroLengthItem, - /// The given bytes were invalid for some application-level reason. - BytesInvalid(String), - /// The given union selector is out of bounds. - UnionSelectorInvalid(u8), -} - -/// Performs checks on the `offset` based upon the other parameters provided. -/// -/// ## Detail -/// -/// - `offset`: the offset bytes (e.g., result of `read_offset(..)`). -/// - `previous_offset`: unless this is the first offset in the SSZ object, the value of the -/// previously-read offset. Used to ensure offsets are not decreasing. -/// - `num_bytes`: the total number of bytes in the SSZ object. Used to ensure the offset is not -/// out of bounds. -/// - `num_fixed_bytes`: the number of fixed-bytes in the struct, if it is known. Used to ensure -/// that the first offset doesn't skip any variable bytes. -/// -/// ## References -/// -/// The checks here are derived from this document: -/// -/// https://notes.ethereum.org/ruKvDXl6QOW3gnqVYb8ezA?view -pub fn sanitize_offset( - offset: usize, - previous_offset: Option, - num_bytes: usize, - num_fixed_bytes: Option, -) -> Result { - if num_fixed_bytes.map_or(false, |fixed_bytes| offset < fixed_bytes) { - Err(DecodeError::OffsetIntoFixedPortion(offset)) - } else if previous_offset.is_none() - && num_fixed_bytes.map_or(false, |fixed_bytes| offset != fixed_bytes) - { - Err(DecodeError::OffsetSkipsVariableBytes(offset)) - } else if offset > num_bytes { - Err(DecodeError::OffsetOutOfBounds(offset)) - } else if previous_offset.map_or(false, |prev| prev > offset) { - Err(DecodeError::OffsetsAreDecreasing(offset)) - } else { - Ok(offset) - } -} - -/// Provides SSZ decoding (de-serialization) via the `from_ssz_bytes(&bytes)` method. -/// -/// See `examples/` for manual implementations or the crate root for implementations using -/// `#[derive(Decode)]`. -pub trait Decode: Sized { - /// Returns `true` if this object has a fixed-length. - /// - /// I.e., there are no variable length items in this object or any of it's contained objects. - fn is_ssz_fixed_len() -> bool; - - /// The number of bytes this object occupies in the fixed-length portion of the SSZ bytes. - /// - /// By default, this is set to `BYTES_PER_LENGTH_OFFSET` which is suitable for variable length - /// objects, but not fixed-length objects. Fixed-length objects _must_ return a value which - /// represents their length. - fn ssz_fixed_len() -> usize { - BYTES_PER_LENGTH_OFFSET - } - - /// Attempts to decode `Self` from `bytes`, returning a `DecodeError` on failure. - /// - /// The supplied bytes must be the exact length required to decode `Self`, excess bytes will - /// result in an error. - fn from_ssz_bytes(bytes: &[u8]) -> Result; -} - -#[derive(Copy, Clone, Debug)] -pub struct Offset { - position: usize, - offset: usize, -} - -/// Builds an `SszDecoder`. -/// -/// The purpose of this struct is to split some SSZ bytes into individual slices. The builder is -/// then converted into a `SszDecoder` which decodes those values into object instances. -/// -/// See [`SszDecoder`](struct.SszDecoder.html) for usage examples. -pub struct SszDecoderBuilder<'a> { - bytes: &'a [u8], - items: SmallVec8<&'a [u8]>, - offsets: SmallVec8, - items_index: usize, -} - -impl<'a> SszDecoderBuilder<'a> { - /// Instantiate a new builder that should build a `SszDecoder` over the given `bytes` which - /// are assumed to be the SSZ encoding of some object. - pub fn new(bytes: &'a [u8]) -> Self { - Self { - bytes, - items: smallvec![], - offsets: smallvec![], - items_index: 0, - } - } - - /// Registers a variable-length object as the next item in `bytes`, without specifying the - /// actual type. - /// - /// ## Notes - /// - /// Use of this function is generally discouraged since it cannot detect if some type changes - /// from variable to fixed length. - /// - /// Use `Self::register_type` wherever possible. - pub fn register_anonymous_variable_length_item(&mut self) -> Result<(), DecodeError> { - struct Anonymous; - - impl Decode for Anonymous { - fn is_ssz_fixed_len() -> bool { - false - } - - fn from_ssz_bytes(_bytes: &[u8]) -> Result { - unreachable!("Anonymous should never be decoded") - } - } - - self.register_type::() - } - - /// Declares that some type `T` is the next item in `bytes`. - pub fn register_type(&mut self) -> Result<(), DecodeError> { - self.register_type_parameterized(T::is_ssz_fixed_len(), T::ssz_fixed_len()) - } - - /// Declares that a type with the given parameters is the next item in `bytes`. - pub fn register_type_parameterized( - &mut self, - is_ssz_fixed_len: bool, - ssz_fixed_len: usize, - ) -> Result<(), DecodeError> { - if is_ssz_fixed_len { - let start = self.items_index; - self.items_index += ssz_fixed_len; - - let slice = - self.bytes - .get(start..self.items_index) - .ok_or(DecodeError::InvalidByteLength { - len: self.bytes.len(), - expected: self.items_index, - })?; - - self.items.push(slice); - } else { - self.offsets.push(Offset { - position: self.items.len(), - offset: sanitize_offset( - read_offset(&self.bytes[self.items_index..])?, - self.offsets.last().map(|o| o.offset), - self.bytes.len(), - None, - )?, - }); - - // Push an empty slice into items; it will be replaced later. - self.items.push(&[]); - - self.items_index += BYTES_PER_LENGTH_OFFSET; - } - - Ok(()) - } - - fn finalize(&mut self) -> Result<(), DecodeError> { - if let Some(first_offset) = self.offsets.first().map(|o| o.offset) { - // Check to ensure the first offset points to the byte immediately following the - // fixed-length bytes. - match first_offset.cmp(&self.items_index) { - Ordering::Less => return Err(DecodeError::OffsetIntoFixedPortion(first_offset)), - Ordering::Greater => { - return Err(DecodeError::OffsetSkipsVariableBytes(first_offset)) - } - Ordering::Equal => (), - } - - // Iterate through each pair of offsets, grabbing the slice between each of the offsets. - for pair in self.offsets.windows(2) { - let a = pair[0]; - let b = pair[1]; - - self.items[a.position] = &self.bytes[a.offset..b.offset]; - } - - // Handle the last offset, pushing a slice from it's start through to the end of - // `self.bytes`. - if let Some(last) = self.offsets.last() { - self.items[last.position] = &self.bytes[last.offset..] - } - } else { - // If the container is fixed-length, ensure there are no excess bytes. - if self.items_index != self.bytes.len() { - return Err(DecodeError::InvalidByteLength { - len: self.bytes.len(), - expected: self.items_index, - }); - } - } - - Ok(()) - } - - /// Finalizes the builder, returning a `SszDecoder` that may be used to instantiate objects. - pub fn build(mut self) -> Result, DecodeError> { - self.finalize()?; - - Ok(SszDecoder { items: self.items }) - } -} - -/// Decodes some slices of SSZ into object instances. Should be instantiated using -/// [`SszDecoderBuilder`](struct.SszDecoderBuilder.html). -/// -/// ## Example -/// -/// ```rust -/// use ssz_derive::{Encode, Decode}; -/// use ssz::{Decode, Encode, SszDecoder, SszDecoderBuilder}; -/// -/// #[derive(PartialEq, Debug, Encode, Decode)] -/// struct Foo { -/// a: u64, -/// b: Vec, -/// } -/// -/// fn ssz_decoding_example() { -/// let foo = Foo { -/// a: 42, -/// b: vec![1, 3, 3, 7] -/// }; -/// -/// let bytes = foo.as_ssz_bytes(); -/// -/// let mut builder = SszDecoderBuilder::new(&bytes); -/// -/// builder.register_type::().unwrap(); -/// builder.register_type::>().unwrap(); -/// -/// let mut decoder = builder.build().unwrap(); -/// -/// let decoded_foo = Foo { -/// a: decoder.decode_next().unwrap(), -/// b: decoder.decode_next().unwrap(), -/// }; -/// -/// assert_eq!(foo, decoded_foo); -/// } -/// -/// ``` -pub struct SszDecoder<'a> { - items: SmallVec8<&'a [u8]>, -} - -impl<'a> SszDecoder<'a> { - /// Decodes the next item. - /// - /// # Panics - /// - /// Panics when attempting to decode more items than actually exist. - pub fn decode_next(&mut self) -> Result { - self.decode_next_with(|slice| T::from_ssz_bytes(slice)) - } - - /// Decodes the next item using the provided function. - pub fn decode_next_with(&mut self, f: F) -> Result - where - F: FnOnce(&'a [u8]) -> Result, - { - f(self.items.remove(0)) - } -} - -/// Takes `bytes`, assuming it is the encoding for a SSZ union, and returns the union-selector and -/// the body (trailing bytes). -/// -/// ## Errors -/// -/// Returns an error if: -/// -/// - `bytes` is empty. -/// - the union selector is not a valid value (i.e., larger than the maximum number of variants. -pub fn split_union_bytes(bytes: &[u8]) -> Result<(UnionSelector, &[u8]), DecodeError> { - let selector = bytes - .first() - .copied() - .ok_or(DecodeError::OutOfBoundsByte { i: 0 }) - .and_then(UnionSelector::new)?; - let body = bytes - .get(1..) - .ok_or(DecodeError::OutOfBoundsByte { i: 1 })?; - Ok((selector, body)) -} - -/// Reads a `BYTES_PER_LENGTH_OFFSET`-byte length from `bytes`, where `bytes.len() >= -/// BYTES_PER_LENGTH_OFFSET`. -pub fn read_offset(bytes: &[u8]) -> Result { - decode_offset(bytes.get(0..BYTES_PER_LENGTH_OFFSET).ok_or( - DecodeError::InvalidLengthPrefix { - len: bytes.len(), - expected: BYTES_PER_LENGTH_OFFSET, - }, - )?) -} - -/// Decode bytes as a little-endian usize, returning an `Err` if `bytes.len() != -/// BYTES_PER_LENGTH_OFFSET`. -fn decode_offset(bytes: &[u8]) -> Result { - let len = bytes.len(); - let expected = BYTES_PER_LENGTH_OFFSET; - - if len != expected { - Err(DecodeError::InvalidLengthPrefix { len, expected }) - } else { - let mut array: [u8; BYTES_PER_LENGTH_OFFSET] = std::default::Default::default(); - array.clone_from_slice(bytes); - - Ok(u32::from_le_bytes(array) as usize) - } -} diff --git a/consensus/ssz/src/decode/impls.rs b/consensus/ssz/src/decode/impls.rs deleted file mode 100644 index 3d36fb4379..0000000000 --- a/consensus/ssz/src/decode/impls.rs +++ /dev/null @@ -1,776 +0,0 @@ -use super::*; -use crate::decode::try_from_iter::{TryCollect, TryFromIter}; -use core::num::NonZeroUsize; -use ethereum_types::{H160, H256, U128, U256}; -use itertools::process_results; -use smallvec::SmallVec; -use std::collections::{BTreeMap, BTreeSet}; -use std::iter::{self, FromIterator}; -use std::sync::Arc; - -macro_rules! impl_decodable_for_uint { - ($type: ident, $bit_size: expr) => { - impl Decode for $type { - fn is_ssz_fixed_len() -> bool { - true - } - - fn ssz_fixed_len() -> usize { - $bit_size / 8 - } - - fn from_ssz_bytes(bytes: &[u8]) -> Result { - let len = bytes.len(); - let expected = ::ssz_fixed_len(); - - if len != expected { - Err(DecodeError::InvalidByteLength { len, expected }) - } else { - let mut array: [u8; $bit_size / 8] = std::default::Default::default(); - array.clone_from_slice(bytes); - - Ok(Self::from_le_bytes(array)) - } - } - } - }; -} - -impl_decodable_for_uint!(u8, 8); -impl_decodable_for_uint!(u16, 16); -impl_decodable_for_uint!(u32, 32); -impl_decodable_for_uint!(u64, 64); - -#[cfg(target_pointer_width = "32")] -impl_decodable_for_uint!(usize, 32); - -#[cfg(target_pointer_width = "64")] -impl_decodable_for_uint!(usize, 64); - -macro_rules! impl_decode_for_tuples { - ($( - $Tuple:ident { - $(($idx:tt) -> $T:ident)+ - } - )+) => { - $( - impl<$($T: Decode),+> Decode for ($($T,)+) { - fn is_ssz_fixed_len() -> bool { - $( - <$T as Decode>::is_ssz_fixed_len() && - )* - true - } - - fn ssz_fixed_len() -> usize { - if ::is_ssz_fixed_len() { - $( - <$T as Decode>::ssz_fixed_len() + - )* - 0 - } else { - BYTES_PER_LENGTH_OFFSET - } - } - - fn from_ssz_bytes(bytes: &[u8]) -> Result { - let mut builder = SszDecoderBuilder::new(bytes); - - $( - builder.register_type::<$T>()?; - )* - - let mut decoder = builder.build()?; - - Ok(($( - decoder.decode_next::<$T>()?, - )* - )) - } - } - )+ - } -} - -impl_decode_for_tuples! { - Tuple2 { - (0) -> A - (1) -> B - } - Tuple3 { - (0) -> A - (1) -> B - (2) -> C - } - Tuple4 { - (0) -> A - (1) -> B - (2) -> C - (3) -> D - } - Tuple5 { - (0) -> A - (1) -> B - (2) -> C - (3) -> D - (4) -> E - } - Tuple6 { - (0) -> A - (1) -> B - (2) -> C - (3) -> D - (4) -> E - (5) -> F - } - Tuple7 { - (0) -> A - (1) -> B - (2) -> C - (3) -> D - (4) -> E - (5) -> F - (6) -> G - } - Tuple8 { - (0) -> A - (1) -> B - (2) -> C - (3) -> D - (4) -> E - (5) -> F - (6) -> G - (7) -> H - } - Tuple9 { - (0) -> A - (1) -> B - (2) -> C - (3) -> D - (4) -> E - (5) -> F - (6) -> G - (7) -> H - (8) -> I - } - Tuple10 { - (0) -> A - (1) -> B - (2) -> C - (3) -> D - (4) -> E - (5) -> F - (6) -> G - (7) -> H - (8) -> I - (9) -> J - } - Tuple11 { - (0) -> A - (1) -> B - (2) -> C - (3) -> D - (4) -> E - (5) -> F - (6) -> G - (7) -> H - (8) -> I - (9) -> J - (10) -> K - } - Tuple12 { - (0) -> A - (1) -> B - (2) -> C - (3) -> D - (4) -> E - (5) -> F - (6) -> G - (7) -> H - (8) -> I - (9) -> J - (10) -> K - (11) -> L - } -} - -impl Decode for bool { - fn is_ssz_fixed_len() -> bool { - true - } - - fn ssz_fixed_len() -> usize { - 1 - } - - fn from_ssz_bytes(bytes: &[u8]) -> Result { - let len = bytes.len(); - let expected = ::ssz_fixed_len(); - - if len != expected { - Err(DecodeError::InvalidByteLength { len, expected }) - } else { - match bytes[0] { - 0b0000_0000 => Ok(false), - 0b0000_0001 => Ok(true), - _ => Err(DecodeError::BytesInvalid(format!( - "Out-of-range for boolean: {}", - bytes[0] - ))), - } - } - } -} - -impl Decode for NonZeroUsize { - fn is_ssz_fixed_len() -> bool { - ::is_ssz_fixed_len() - } - - fn ssz_fixed_len() -> usize { - ::ssz_fixed_len() - } - - fn from_ssz_bytes(bytes: &[u8]) -> Result { - let x = usize::from_ssz_bytes(bytes)?; - - if x == 0 { - Err(DecodeError::BytesInvalid( - "NonZeroUsize cannot be zero.".to_string(), - )) - } else { - // `unwrap` is safe here as `NonZeroUsize::new()` succeeds if `x > 0` and this path - // never executes when `x == 0`. - Ok(NonZeroUsize::new(x).unwrap()) - } - } -} - -impl Decode for Option { - fn is_ssz_fixed_len() -> bool { - false - } - fn from_ssz_bytes(bytes: &[u8]) -> Result { - let (selector, body) = split_union_bytes(bytes)?; - match selector.into() { - 0u8 => Ok(None), - 1u8 => ::from_ssz_bytes(body).map(Option::Some), - other => Err(DecodeError::UnionSelectorInvalid(other)), - } - } -} - -impl Decode for Arc { - fn is_ssz_fixed_len() -> bool { - T::is_ssz_fixed_len() - } - - fn ssz_fixed_len() -> usize { - T::ssz_fixed_len() - } - - fn from_ssz_bytes(bytes: &[u8]) -> Result { - T::from_ssz_bytes(bytes).map(Arc::new) - } -} - -impl Decode for H160 { - fn is_ssz_fixed_len() -> bool { - true - } - - fn ssz_fixed_len() -> usize { - 20 - } - - fn from_ssz_bytes(bytes: &[u8]) -> Result { - let len = bytes.len(); - let expected = ::ssz_fixed_len(); - - if len != expected { - Err(DecodeError::InvalidByteLength { len, expected }) - } else { - Ok(Self::from_slice(bytes)) - } - } -} - -impl Decode for H256 { - fn is_ssz_fixed_len() -> bool { - true - } - - fn ssz_fixed_len() -> usize { - 32 - } - - fn from_ssz_bytes(bytes: &[u8]) -> Result { - let len = bytes.len(); - let expected = ::ssz_fixed_len(); - - if len != expected { - Err(DecodeError::InvalidByteLength { len, expected }) - } else { - Ok(H256::from_slice(bytes)) - } - } -} - -impl Decode for U256 { - fn is_ssz_fixed_len() -> bool { - true - } - - fn ssz_fixed_len() -> usize { - 32 - } - - fn from_ssz_bytes(bytes: &[u8]) -> Result { - let len = bytes.len(); - let expected = ::ssz_fixed_len(); - - if len != expected { - Err(DecodeError::InvalidByteLength { len, expected }) - } else { - Ok(U256::from_little_endian(bytes)) - } - } -} - -impl Decode for U128 { - fn is_ssz_fixed_len() -> bool { - true - } - - fn ssz_fixed_len() -> usize { - 16 - } - - fn from_ssz_bytes(bytes: &[u8]) -> Result { - let len = bytes.len(); - let expected = ::ssz_fixed_len(); - - if len != expected { - Err(DecodeError::InvalidByteLength { len, expected }) - } else { - Ok(U128::from_little_endian(bytes)) - } - } -} - -macro_rules! impl_decodable_for_u8_array { - ($len: expr) => { - impl Decode for [u8; $len] { - fn is_ssz_fixed_len() -> bool { - true - } - - fn ssz_fixed_len() -> usize { - $len - } - - fn from_ssz_bytes(bytes: &[u8]) -> Result { - let len = bytes.len(); - let expected = ::ssz_fixed_len(); - - if len != expected { - Err(DecodeError::InvalidByteLength { len, expected }) - } else { - let mut array: [u8; $len] = [0; $len]; - array.copy_from_slice(bytes); - - Ok(array) - } - } - } - }; -} - -impl_decodable_for_u8_array!(4); -impl_decodable_for_u8_array!(32); -impl_decodable_for_u8_array!(48); - -macro_rules! impl_for_vec { - ($type: ty, $max_len: expr) => { - impl Decode for $type { - fn is_ssz_fixed_len() -> bool { - false - } - - fn from_ssz_bytes(bytes: &[u8]) -> Result { - if bytes.is_empty() { - Ok(Self::from_iter(iter::empty())) - } else if T::is_ssz_fixed_len() { - bytes - .chunks(T::ssz_fixed_len()) - .map(T::from_ssz_bytes) - .collect() - } else { - decode_list_of_variable_length_items(bytes, $max_len) - } - } - } - }; -} - -impl_for_vec!(Vec, None); -impl_for_vec!(SmallVec<[T; 1]>, None); -impl_for_vec!(SmallVec<[T; 2]>, None); -impl_for_vec!(SmallVec<[T; 3]>, None); -impl_for_vec!(SmallVec<[T; 4]>, None); -impl_for_vec!(SmallVec<[T; 5]>, None); -impl_for_vec!(SmallVec<[T; 6]>, None); -impl_for_vec!(SmallVec<[T; 7]>, None); -impl_for_vec!(SmallVec<[T; 8]>, None); - -impl Decode for BTreeMap -where - K: Decode + Ord, - V: Decode, -{ - fn is_ssz_fixed_len() -> bool { - false - } - - fn from_ssz_bytes(bytes: &[u8]) -> Result { - if bytes.is_empty() { - Ok(Self::from_iter(iter::empty())) - } else if <(K, V)>::is_ssz_fixed_len() { - bytes - .chunks(<(K, V)>::ssz_fixed_len()) - .map(<(K, V)>::from_ssz_bytes) - .collect() - } else { - decode_list_of_variable_length_items(bytes, None) - } - } -} - -impl Decode for BTreeSet -where - T: Decode + Ord, -{ - fn is_ssz_fixed_len() -> bool { - false - } - - fn from_ssz_bytes(bytes: &[u8]) -> Result { - if bytes.is_empty() { - Ok(Self::from_iter(iter::empty())) - } else if T::is_ssz_fixed_len() { - bytes - .chunks(T::ssz_fixed_len()) - .map(T::from_ssz_bytes) - .collect() - } else { - decode_list_of_variable_length_items(bytes, None) - } - } -} - -/// Decodes `bytes` as if it were a list of variable-length items. -/// -/// The `ssz::SszDecoder` can also perform this functionality, however this function is -/// significantly faster as it is optimized to read same-typed items whilst `ssz::SszDecoder` -/// supports reading items of differing types. -pub fn decode_list_of_variable_length_items>( - bytes: &[u8], - max_len: Option, -) -> Result { - if bytes.is_empty() { - return Container::try_from_iter(iter::empty()).map_err(|e| { - DecodeError::BytesInvalid(format!("Error trying to collect empty list: {:?}", e)) - }); - } - - let first_offset = read_offset(bytes)?; - sanitize_offset(first_offset, None, bytes.len(), Some(first_offset))?; - - if first_offset % BYTES_PER_LENGTH_OFFSET != 0 || first_offset < BYTES_PER_LENGTH_OFFSET { - return Err(DecodeError::InvalidListFixedBytesLen(first_offset)); - } - - let num_items = first_offset / BYTES_PER_LENGTH_OFFSET; - - if max_len.map_or(false, |max| num_items > max) { - return Err(DecodeError::BytesInvalid(format!( - "Variable length list of {} items exceeds maximum of {:?}", - num_items, max_len - ))); - } - - let mut offset = first_offset; - process_results( - (1..=num_items).map(|i| { - let slice_option = if i == num_items { - bytes.get(offset..) - } else { - let start = offset; - - let next_offset = read_offset(&bytes[(i * BYTES_PER_LENGTH_OFFSET)..])?; - offset = - sanitize_offset(next_offset, Some(offset), bytes.len(), Some(first_offset))?; - - bytes.get(start..offset) - }; - - let slice = slice_option.ok_or(DecodeError::OutOfBoundsByte { i: offset })?; - T::from_ssz_bytes(slice) - }), - |iter| iter.try_collect(), - )? - .map_err(|e| DecodeError::BytesInvalid(format!("Error collecting into container: {:?}", e))) -} - -#[cfg(test)] -mod tests { - use super::*; - - // Note: decoding of valid bytes is generally tested "indirectly" in the `/tests` dir, by - // encoding then decoding the element. - - #[test] - fn invalid_u8_array_4() { - assert_eq!( - <[u8; 4]>::from_ssz_bytes(&[0; 3]), - Err(DecodeError::InvalidByteLength { - len: 3, - expected: 4 - }) - ); - - assert_eq!( - <[u8; 4]>::from_ssz_bytes(&[0; 5]), - Err(DecodeError::InvalidByteLength { - len: 5, - expected: 4 - }) - ); - } - - #[test] - fn invalid_bool() { - assert_eq!( - bool::from_ssz_bytes(&[0; 2]), - Err(DecodeError::InvalidByteLength { - len: 2, - expected: 1 - }) - ); - - assert_eq!( - bool::from_ssz_bytes(&[]), - Err(DecodeError::InvalidByteLength { - len: 0, - expected: 1 - }) - ); - - if let Err(DecodeError::BytesInvalid(_)) = bool::from_ssz_bytes(&[2]) { - // Success. - } else { - panic!("Did not return error on invalid bool val") - } - } - - #[test] - fn invalid_h256() { - assert_eq!( - H256::from_ssz_bytes(&[0; 33]), - Err(DecodeError::InvalidByteLength { - len: 33, - expected: 32 - }) - ); - - assert_eq!( - H256::from_ssz_bytes(&[0; 31]), - Err(DecodeError::InvalidByteLength { - len: 31, - expected: 32 - }) - ); - } - - #[test] - fn empty_list() { - let vec: Vec> = vec![]; - let bytes = vec.as_ssz_bytes(); - assert!(bytes.is_empty()); - assert_eq!(Vec::from_ssz_bytes(&bytes), Ok(vec),); - } - - #[test] - fn first_length_points_backwards() { - assert_eq!( - >>::from_ssz_bytes(&[0, 0, 0, 0]), - Err(DecodeError::InvalidListFixedBytesLen(0)) - ); - - assert_eq!( - >>::from_ssz_bytes(&[1, 0, 0, 0]), - Err(DecodeError::InvalidListFixedBytesLen(1)) - ); - - assert_eq!( - >>::from_ssz_bytes(&[2, 0, 0, 0]), - Err(DecodeError::InvalidListFixedBytesLen(2)) - ); - - assert_eq!( - >>::from_ssz_bytes(&[3, 0, 0, 0]), - Err(DecodeError::InvalidListFixedBytesLen(3)) - ); - } - - #[test] - fn lengths_are_decreasing() { - assert_eq!( - >>::from_ssz_bytes(&[12, 0, 0, 0, 14, 0, 0, 0, 12, 0, 0, 0, 1, 0, 1, 0]), - Err(DecodeError::OffsetsAreDecreasing(12)) - ); - } - - #[test] - fn awkward_fixed_length_portion() { - assert_eq!( - >>::from_ssz_bytes(&[10, 0, 0, 0, 10, 0, 0, 0, 0, 0]), - Err(DecodeError::InvalidListFixedBytesLen(10)) - ); - } - - #[test] - fn length_out_of_bounds() { - assert_eq!( - >>::from_ssz_bytes(&[5, 0, 0, 0]), - Err(DecodeError::OffsetOutOfBounds(5)) - ); - assert_eq!( - >>::from_ssz_bytes(&[8, 0, 0, 0, 9, 0, 0, 0]), - Err(DecodeError::OffsetOutOfBounds(9)) - ); - assert_eq!( - >>::from_ssz_bytes(&[8, 0, 0, 0, 16, 0, 0, 0]), - Err(DecodeError::OffsetOutOfBounds(16)) - ); - } - - #[test] - fn vec_of_vec_of_u16() { - assert_eq!( - >>::from_ssz_bytes(&[4, 0, 0, 0]), - Ok(vec![vec![]]) - ); - - assert_eq!( - >::from_ssz_bytes(&[0, 0, 1, 0, 2, 0, 3, 0]), - Ok(vec![0, 1, 2, 3]) - ); - assert_eq!(::from_ssz_bytes(&[16, 0]), Ok(16)); - assert_eq!(::from_ssz_bytes(&[0, 1]), Ok(256)); - assert_eq!(::from_ssz_bytes(&[255, 255]), Ok(65535)); - - assert_eq!( - ::from_ssz_bytes(&[255]), - Err(DecodeError::InvalidByteLength { - len: 1, - expected: 2 - }) - ); - - assert_eq!( - ::from_ssz_bytes(&[]), - Err(DecodeError::InvalidByteLength { - len: 0, - expected: 2 - }) - ); - - assert_eq!( - ::from_ssz_bytes(&[0, 1, 2]), - Err(DecodeError::InvalidByteLength { - len: 3, - expected: 2 - }) - ); - } - - #[test] - fn vec_of_u16() { - assert_eq!(>::from_ssz_bytes(&[0, 0, 0, 0]), Ok(vec![0, 0])); - assert_eq!( - >::from_ssz_bytes(&[0, 0, 1, 0, 2, 0, 3, 0]), - Ok(vec![0, 1, 2, 3]) - ); - assert_eq!(::from_ssz_bytes(&[16, 0]), Ok(16)); - assert_eq!(::from_ssz_bytes(&[0, 1]), Ok(256)); - assert_eq!(::from_ssz_bytes(&[255, 255]), Ok(65535)); - - assert_eq!( - ::from_ssz_bytes(&[255]), - Err(DecodeError::InvalidByteLength { - len: 1, - expected: 2 - }) - ); - - assert_eq!( - ::from_ssz_bytes(&[]), - Err(DecodeError::InvalidByteLength { - len: 0, - expected: 2 - }) - ); - - assert_eq!( - ::from_ssz_bytes(&[0, 1, 2]), - Err(DecodeError::InvalidByteLength { - len: 3, - expected: 2 - }) - ); - } - - #[test] - fn u16() { - assert_eq!(::from_ssz_bytes(&[0, 0]), Ok(0)); - assert_eq!(::from_ssz_bytes(&[16, 0]), Ok(16)); - assert_eq!(::from_ssz_bytes(&[0, 1]), Ok(256)); - assert_eq!(::from_ssz_bytes(&[255, 255]), Ok(65535)); - - assert_eq!( - ::from_ssz_bytes(&[255]), - Err(DecodeError::InvalidByteLength { - len: 1, - expected: 2 - }) - ); - - assert_eq!( - ::from_ssz_bytes(&[]), - Err(DecodeError::InvalidByteLength { - len: 0, - expected: 2 - }) - ); - - assert_eq!( - ::from_ssz_bytes(&[0, 1, 2]), - Err(DecodeError::InvalidByteLength { - len: 3, - expected: 2 - }) - ); - } - - #[test] - fn tuple() { - assert_eq!(<(u16, u16)>::from_ssz_bytes(&[0, 0, 0, 0]), Ok((0, 0))); - assert_eq!(<(u16, u16)>::from_ssz_bytes(&[16, 0, 17, 0]), Ok((16, 17))); - assert_eq!(<(u16, u16)>::from_ssz_bytes(&[0, 1, 2, 0]), Ok((256, 2))); - assert_eq!( - <(u16, u16)>::from_ssz_bytes(&[255, 255, 0, 0]), - Ok((65535, 0)) - ); - } -} diff --git a/consensus/ssz/src/decode/try_from_iter.rs b/consensus/ssz/src/decode/try_from_iter.rs deleted file mode 100644 index 1ff89a107f..0000000000 --- a/consensus/ssz/src/decode/try_from_iter.rs +++ /dev/null @@ -1,103 +0,0 @@ -use smallvec::SmallVec; -use std::collections::{BTreeMap, BTreeSet}; -use std::convert::Infallible; -use std::fmt::Debug; - -/// Partial variant of `std::iter::FromIterator`. -/// -/// This trait is implemented for types which can be constructed from an iterator of decoded SSZ -/// values, but which may refuse values once a length limit is reached. -pub trait TryFromIter: Sized { - type Error: Debug; - - fn try_from_iter(iter: I) -> Result - where - I: IntoIterator; -} - -// It would be nice to be able to do a blanket impl, e.g. -// -// `impl TryFromIter for C where C: FromIterator` -// -// However this runs into trait coherence issues due to the type parameter `T` on `TryFromIter`. -// -// E.g. If we added an impl downstream for `List` then another crate downstream of that -// could legally add an impl of `FromIterator for List` which would create -// two conflicting implementations for `List`. Hence the `List` impl is disallowed -// by the compiler in the presence of the blanket impl. That's obviously annoying, so we opt to -// abandon the blanket impl in favour of impls for selected types. -impl TryFromIter for Vec { - type Error = Infallible; - - fn try_from_iter(values: I) -> Result - where - I: IntoIterator, - { - // Pre-allocate the expected size of the Vec, which is parsed from the SSZ input bytes as - // `num_items`. This length has already been checked to be less than or equal to the type's - // maximum length in `decode_list_of_variable_length_items`. - let iter = values.into_iter(); - let (_, opt_max_len) = iter.size_hint(); - let mut vec = Vec::with_capacity(opt_max_len.unwrap_or(0)); - vec.extend(iter); - Ok(vec) - } -} - -impl TryFromIter for SmallVec<[T; N]> { - type Error = Infallible; - - fn try_from_iter(iter: I) -> Result - where - I: IntoIterator, - { - Ok(Self::from_iter(iter)) - } -} - -impl TryFromIter<(K, V)> for BTreeMap -where - K: Ord, -{ - type Error = Infallible; - - fn try_from_iter(iter: I) -> Result - where - I: IntoIterator, - { - Ok(Self::from_iter(iter)) - } -} - -impl TryFromIter for BTreeSet -where - T: Ord, -{ - type Error = Infallible; - - fn try_from_iter(iter: I) -> Result - where - I: IntoIterator, - { - Ok(Self::from_iter(iter)) - } -} - -/// Partial variant of `collect`. -pub trait TryCollect: Iterator { - fn try_collect(self) -> Result - where - C: TryFromIter; -} - -impl TryCollect for I -where - I: Iterator, -{ - fn try_collect(self) -> Result - where - C: TryFromIter, - { - C::try_from_iter(self) - } -} diff --git a/consensus/ssz/src/encode.rs b/consensus/ssz/src/encode.rs deleted file mode 100644 index a46ef80e05..0000000000 --- a/consensus/ssz/src/encode.rs +++ /dev/null @@ -1,196 +0,0 @@ -use super::*; - -mod impls; - -/// Provides SSZ encoding (serialization) via the `as_ssz_bytes(&self)` method. -/// -/// See `examples/` for manual implementations or the crate root for implementations using -/// `#[derive(Encode)]`. -pub trait Encode { - /// Returns `true` if this object has a fixed-length. - /// - /// I.e., there are no variable length items in this object or any of it's contained objects. - fn is_ssz_fixed_len() -> bool; - - /// Append the encoding `self` to `buf`. - /// - /// Note, variable length objects need only to append their "variable length" portion, they do - /// not need to provide their offset. - fn ssz_append(&self, buf: &mut Vec); - - /// The number of bytes this object occupies in the fixed-length portion of the SSZ bytes. - /// - /// By default, this is set to `BYTES_PER_LENGTH_OFFSET` which is suitable for variable length - /// objects, but not fixed-length objects. Fixed-length objects _must_ return a value which - /// represents their length. - fn ssz_fixed_len() -> usize { - BYTES_PER_LENGTH_OFFSET - } - - /// Returns the size (in bytes) when `self` is serialized. - /// - /// Returns the same value as `self.as_ssz_bytes().len()` but this method is significantly more - /// efficient. - fn ssz_bytes_len(&self) -> usize; - - /// Returns the full-form encoding of this object. - /// - /// The default implementation of this method should suffice for most cases. - fn as_ssz_bytes(&self) -> Vec { - let mut buf = vec![]; - - self.ssz_append(&mut buf); - - buf - } -} - -/// Allow for encoding an ordered series of distinct or indistinct objects as SSZ bytes. -/// -/// **You must call `finalize(..)` after the final `append(..)` call** to ensure the bytes are -/// written to `buf`. -/// -/// ## Example -/// -/// Use `SszEncoder` to produce identical output to `foo.as_ssz_bytes()`: -/// -/// ```rust -/// use ssz_derive::{Encode, Decode}; -/// use ssz::{Decode, Encode, SszEncoder}; -/// -/// #[derive(PartialEq, Debug, Encode, Decode)] -/// struct Foo { -/// a: u64, -/// b: Vec, -/// } -/// -/// fn ssz_encode_example() { -/// let foo = Foo { -/// a: 42, -/// b: vec![1, 3, 3, 7] -/// }; -/// -/// let mut buf: Vec = vec![]; -/// let offset = ::ssz_fixed_len() + as Encode>::ssz_fixed_len(); -/// -/// let mut encoder = SszEncoder::container(&mut buf, offset); -/// -/// encoder.append(&foo.a); -/// encoder.append(&foo.b); -/// -/// encoder.finalize(); -/// -/// assert_eq!(foo.as_ssz_bytes(), buf); -/// } -/// -/// ``` -pub struct SszEncoder<'a> { - offset: usize, - buf: &'a mut Vec, - variable_bytes: Vec, -} - -impl<'a> SszEncoder<'a> { - /// Instantiate a new encoder for encoding a SSZ container. - pub fn container(buf: &'a mut Vec, num_fixed_bytes: usize) -> Self { - buf.reserve(num_fixed_bytes); - - Self { - offset: num_fixed_bytes, - buf, - variable_bytes: vec![], - } - } - - /// Append some `item` to the SSZ bytes. - pub fn append(&mut self, item: &T) { - self.append_parameterized(T::is_ssz_fixed_len(), |buf| item.ssz_append(buf)) - } - - /// Uses `ssz_append` to append the encoding of some item to the SSZ bytes. - pub fn append_parameterized(&mut self, is_ssz_fixed_len: bool, ssz_append: F) - where - F: Fn(&mut Vec), - { - if is_ssz_fixed_len { - ssz_append(self.buf); - } else { - self.buf - .extend_from_slice(&encode_length(self.offset + self.variable_bytes.len())); - - ssz_append(&mut self.variable_bytes); - } - } - - /// Write the variable bytes to `self.bytes`. - /// - /// This method must be called after the final `append(..)` call when serializing - /// variable-length items. - pub fn finalize(&mut self) -> &mut Vec { - self.buf.append(&mut self.variable_bytes); - - self.buf - } -} - -/// Encode `len` as a little-endian byte array of `BYTES_PER_LENGTH_OFFSET` length. -/// -/// If `len` is larger than `2 ^ BYTES_PER_LENGTH_OFFSET`, a `debug_assert` is raised. -pub fn encode_length(len: usize) -> [u8; BYTES_PER_LENGTH_OFFSET] { - // Note: it is possible for `len` to be larger than what can be encoded in - // `BYTES_PER_LENGTH_OFFSET` bytes, triggering this debug assertion. - // - // These are the alternatives to using a `debug_assert` here: - // - // 1. Use `assert`. - // 2. Push an error to the caller (e.g., `Option` or `Result`). - // 3. Ignore it completely. - // - // I have avoided (1) because it's basically a choice between "produce invalid SSZ" or "kill - // the entire program". I figure it may be possible for an attacker to trigger this assert and - // take the program down -- I think producing invalid SSZ is a better option than this. - // - // I have avoided (2) because this error will need to be propagated upstream, making encoding a - // function which may fail. I don't think this is ergonomic and the upsides don't outweigh the - // downsides. - // - // I figure a `debug_assertion` is better than (3) as it will give us a change to detect the - // error during testing. - // - // If you have a different opinion, feel free to start an issue and tag @paulhauner. - debug_assert!(len <= MAX_LENGTH_VALUE); - - let mut bytes = [0; BYTES_PER_LENGTH_OFFSET]; - bytes.copy_from_slice(&len.to_le_bytes()[0..BYTES_PER_LENGTH_OFFSET]); - bytes -} - -#[cfg(test)] -mod tests { - use super::*; - - #[test] - fn test_encode_length() { - assert_eq!(encode_length(0), [0; 4]); - - assert_eq!(encode_length(1), [1, 0, 0, 0]); - - assert_eq!( - encode_length(MAX_LENGTH_VALUE), - [255; BYTES_PER_LENGTH_OFFSET] - ); - } - - #[test] - #[should_panic] - #[cfg(debug_assertions)] - fn test_encode_length_above_max_debug_panics() { - encode_length(MAX_LENGTH_VALUE + 1); - } - - #[test] - #[cfg(not(debug_assertions))] - fn test_encode_length_above_max_not_debug_does_not_panic() { - assert_eq!(&encode_length(MAX_LENGTH_VALUE + 1)[..], &[0; 4]); - } -} diff --git a/consensus/ssz/src/encode/impls.rs b/consensus/ssz/src/encode/impls.rs deleted file mode 100644 index 8c609d9397..0000000000 --- a/consensus/ssz/src/encode/impls.rs +++ /dev/null @@ -1,633 +0,0 @@ -use super::*; -use core::num::NonZeroUsize; -use ethereum_types::{H160, H256, U128, U256}; -use smallvec::SmallVec; -use std::collections::{BTreeMap, BTreeSet}; -use std::sync::Arc; - -macro_rules! impl_encodable_for_uint { - ($type: ident, $bit_size: expr) => { - impl Encode for $type { - fn is_ssz_fixed_len() -> bool { - true - } - - fn ssz_fixed_len() -> usize { - $bit_size / 8 - } - - fn ssz_bytes_len(&self) -> usize { - $bit_size / 8 - } - - fn ssz_append(&self, buf: &mut Vec) { - buf.extend_from_slice(&self.to_le_bytes()); - } - } - }; -} - -impl_encodable_for_uint!(u8, 8); -impl_encodable_for_uint!(u16, 16); -impl_encodable_for_uint!(u32, 32); -impl_encodable_for_uint!(u64, 64); - -#[cfg(target_pointer_width = "32")] -impl_encodable_for_uint!(usize, 32); - -#[cfg(target_pointer_width = "64")] -impl_encodable_for_uint!(usize, 64); - -// Based on the `tuple_impls` macro from the standard library. -macro_rules! impl_encode_for_tuples { - ($( - $Tuple:ident { - $(($idx:tt) -> $T:ident)+ - } - )+) => { - $( - impl<$($T: Encode),+> Encode for ($($T,)+) { - fn is_ssz_fixed_len() -> bool { - $( - <$T as Encode>::is_ssz_fixed_len() && - )* - true - } - - fn ssz_fixed_len() -> usize { - if ::is_ssz_fixed_len() { - $( - <$T as Encode>::ssz_fixed_len() + - )* - 0 - } else { - BYTES_PER_LENGTH_OFFSET - } - } - - fn ssz_bytes_len(&self) -> usize { - if ::is_ssz_fixed_len() { - ::ssz_fixed_len() - } else { - let mut len = 0; - $( - len += if <$T as Encode>::is_ssz_fixed_len() { - <$T as Encode>::ssz_fixed_len() - } else { - BYTES_PER_LENGTH_OFFSET + - self.$idx.ssz_bytes_len() - }; - )* - len - } - } - - fn ssz_append(&self, buf: &mut Vec) { - let offset = $( - <$T as Encode>::ssz_fixed_len() + - )* - 0; - - let mut encoder = SszEncoder::container(buf, offset); - - $( - encoder.append(&self.$idx); - )* - - encoder.finalize(); - } - } - )+ - } -} - -impl_encode_for_tuples! { - Tuple2 { - (0) -> A - (1) -> B - } - Tuple3 { - (0) -> A - (1) -> B - (2) -> C - } - Tuple4 { - (0) -> A - (1) -> B - (2) -> C - (3) -> D - } - Tuple5 { - (0) -> A - (1) -> B - (2) -> C - (3) -> D - (4) -> E - } - Tuple6 { - (0) -> A - (1) -> B - (2) -> C - (3) -> D - (4) -> E - (5) -> F - } - Tuple7 { - (0) -> A - (1) -> B - (2) -> C - (3) -> D - (4) -> E - (5) -> F - (6) -> G - } - Tuple8 { - (0) -> A - (1) -> B - (2) -> C - (3) -> D - (4) -> E - (5) -> F - (6) -> G - (7) -> H - } - Tuple9 { - (0) -> A - (1) -> B - (2) -> C - (3) -> D - (4) -> E - (5) -> F - (6) -> G - (7) -> H - (8) -> I - } - Tuple10 { - (0) -> A - (1) -> B - (2) -> C - (3) -> D - (4) -> E - (5) -> F - (6) -> G - (7) -> H - (8) -> I - (9) -> J - } - Tuple11 { - (0) -> A - (1) -> B - (2) -> C - (3) -> D - (4) -> E - (5) -> F - (6) -> G - (7) -> H - (8) -> I - (9) -> J - (10) -> K - } - Tuple12 { - (0) -> A - (1) -> B - (2) -> C - (3) -> D - (4) -> E - (5) -> F - (6) -> G - (7) -> H - (8) -> I - (9) -> J - (10) -> K - (11) -> L - } -} - -impl Encode for Option { - fn is_ssz_fixed_len() -> bool { - false - } - fn ssz_append(&self, buf: &mut Vec) { - match self { - Option::None => { - let union_selector: u8 = 0u8; - buf.push(union_selector); - } - Option::Some(ref inner) => { - let union_selector: u8 = 1u8; - buf.push(union_selector); - inner.ssz_append(buf); - } - } - } - fn ssz_bytes_len(&self) -> usize { - match self { - Option::None => 1usize, - Option::Some(ref inner) => inner - .ssz_bytes_len() - .checked_add(1) - .expect("encoded length must be less than usize::max_value"), - } - } -} - -impl Encode for Arc { - fn is_ssz_fixed_len() -> bool { - T::is_ssz_fixed_len() - } - - fn ssz_fixed_len() -> usize { - T::ssz_fixed_len() - } - - fn ssz_append(&self, buf: &mut Vec) { - self.as_ref().ssz_append(buf) - } - - fn ssz_bytes_len(&self) -> usize { - self.as_ref().ssz_bytes_len() - } -} - -// Encode transparently through references. -impl<'a, T: Encode> Encode for &'a T { - fn is_ssz_fixed_len() -> bool { - T::is_ssz_fixed_len() - } - - fn ssz_fixed_len() -> usize { - T::ssz_fixed_len() - } - - fn ssz_append(&self, buf: &mut Vec) { - T::ssz_append(self, buf) - } - - fn ssz_bytes_len(&self) -> usize { - T::ssz_bytes_len(self) - } -} - -/// Compute the encoded length of a vector-like sequence of `T`. -pub fn sequence_ssz_bytes_len(iter: I) -> usize -where - I: Iterator + ExactSizeIterator, - T: Encode, -{ - // Compute length before doing any iteration. - let length = iter.len(); - if ::is_ssz_fixed_len() { - ::ssz_fixed_len() * length - } else { - let mut len = iter.map(|item| item.ssz_bytes_len()).sum(); - len += BYTES_PER_LENGTH_OFFSET * length; - len - } -} - -/// Encode a vector-like sequence of `T`. -pub fn sequence_ssz_append(iter: I, buf: &mut Vec) -where - I: Iterator + ExactSizeIterator, - T: Encode, -{ - if T::is_ssz_fixed_len() { - buf.reserve(T::ssz_fixed_len() * iter.len()); - - for item in iter { - item.ssz_append(buf); - } - } else { - let mut encoder = SszEncoder::container(buf, iter.len() * BYTES_PER_LENGTH_OFFSET); - - for item in iter { - encoder.append(&item); - } - - encoder.finalize(); - } -} - -macro_rules! impl_for_vec { - ($type: ty) => { - impl Encode for $type { - fn is_ssz_fixed_len() -> bool { - false - } - - fn ssz_bytes_len(&self) -> usize { - sequence_ssz_bytes_len(self.iter()) - } - - fn ssz_append(&self, buf: &mut Vec) { - sequence_ssz_append(self.iter(), buf) - } - } - }; -} - -impl_for_vec!(Vec); -impl_for_vec!(SmallVec<[T; 1]>); -impl_for_vec!(SmallVec<[T; 2]>); -impl_for_vec!(SmallVec<[T; 3]>); -impl_for_vec!(SmallVec<[T; 4]>); -impl_for_vec!(SmallVec<[T; 5]>); -impl_for_vec!(SmallVec<[T; 6]>); -impl_for_vec!(SmallVec<[T; 7]>); -impl_for_vec!(SmallVec<[T; 8]>); - -impl Encode for BTreeMap -where - K: Encode + Ord, - V: Encode, -{ - fn is_ssz_fixed_len() -> bool { - false - } - - fn ssz_bytes_len(&self) -> usize { - sequence_ssz_bytes_len(self.iter()) - } - - fn ssz_append(&self, buf: &mut Vec) { - sequence_ssz_append(self.iter(), buf) - } -} - -impl Encode for BTreeSet -where - T: Encode + Ord, -{ - fn is_ssz_fixed_len() -> bool { - false - } - - fn ssz_bytes_len(&self) -> usize { - sequence_ssz_bytes_len(self.iter()) - } - - fn ssz_append(&self, buf: &mut Vec) { - sequence_ssz_append(self.iter(), buf) - } -} - -impl Encode for bool { - fn is_ssz_fixed_len() -> bool { - true - } - - fn ssz_fixed_len() -> usize { - 1 - } - - fn ssz_bytes_len(&self) -> usize { - 1 - } - - fn ssz_append(&self, buf: &mut Vec) { - buf.extend_from_slice(&(*self as u8).to_le_bytes()); - } -} - -impl Encode for NonZeroUsize { - fn is_ssz_fixed_len() -> bool { - ::is_ssz_fixed_len() - } - - fn ssz_fixed_len() -> usize { - ::ssz_fixed_len() - } - - fn ssz_bytes_len(&self) -> usize { - std::mem::size_of::() - } - - fn ssz_append(&self, buf: &mut Vec) { - self.get().ssz_append(buf) - } -} - -impl Encode for H160 { - fn is_ssz_fixed_len() -> bool { - true - } - - fn ssz_fixed_len() -> usize { - 20 - } - - fn ssz_bytes_len(&self) -> usize { - 20 - } - - fn ssz_append(&self, buf: &mut Vec) { - buf.extend_from_slice(self.as_bytes()); - } -} - -impl Encode for H256 { - fn is_ssz_fixed_len() -> bool { - true - } - - fn ssz_fixed_len() -> usize { - 32 - } - - fn ssz_bytes_len(&self) -> usize { - 32 - } - - fn ssz_append(&self, buf: &mut Vec) { - buf.extend_from_slice(self.as_bytes()); - } -} - -impl Encode for U256 { - fn is_ssz_fixed_len() -> bool { - true - } - - fn ssz_fixed_len() -> usize { - 32 - } - - fn ssz_bytes_len(&self) -> usize { - 32 - } - - fn ssz_append(&self, buf: &mut Vec) { - let n = ::ssz_fixed_len(); - let s = buf.len(); - - buf.resize(s + n, 0); - self.to_little_endian(&mut buf[s..]); - } -} - -impl Encode for U128 { - fn is_ssz_fixed_len() -> bool { - true - } - - fn ssz_fixed_len() -> usize { - 16 - } - - fn ssz_bytes_len(&self) -> usize { - 16 - } - - fn ssz_append(&self, buf: &mut Vec) { - let n = ::ssz_fixed_len(); - let s = buf.len(); - - buf.resize(s + n, 0); - self.to_little_endian(&mut buf[s..]); - } -} - -macro_rules! impl_encodable_for_u8_array { - ($len: expr) => { - impl Encode for [u8; $len] { - fn is_ssz_fixed_len() -> bool { - true - } - - fn ssz_fixed_len() -> usize { - $len - } - - fn ssz_bytes_len(&self) -> usize { - $len - } - - fn ssz_append(&self, buf: &mut Vec) { - buf.extend_from_slice(&self[..]); - } - } - }; -} - -impl_encodable_for_u8_array!(4); -impl_encodable_for_u8_array!(32); -impl_encodable_for_u8_array!(48); - -#[cfg(test)] -mod tests { - use super::*; - - #[test] - fn vec_of_u8() { - let vec: Vec = vec![]; - assert_eq!(vec.as_ssz_bytes(), vec![]); - - let vec: Vec = vec![1]; - assert_eq!(vec.as_ssz_bytes(), vec![1]); - - let vec: Vec = vec![0, 1, 2, 3]; - assert_eq!(vec.as_ssz_bytes(), vec![0, 1, 2, 3]); - } - - #[test] - fn vec_of_vec_of_u8() { - let vec: Vec> = vec![]; - assert_eq!(vec.as_ssz_bytes(), vec![]); - - let vec: Vec> = vec![vec![]]; - assert_eq!(vec.as_ssz_bytes(), vec![4, 0, 0, 0]); - - let vec: Vec> = vec![vec![], vec![]]; - assert_eq!(vec.as_ssz_bytes(), vec![8, 0, 0, 0, 8, 0, 0, 0]); - - let vec: Vec> = vec![vec![0, 1, 2], vec![11, 22, 33]]; - assert_eq!( - vec.as_ssz_bytes(), - vec![8, 0, 0, 0, 11, 0, 0, 0, 0, 1, 2, 11, 22, 33] - ); - } - - #[test] - fn ssz_encode_u8() { - assert_eq!(0_u8.as_ssz_bytes(), vec![0]); - assert_eq!(1_u8.as_ssz_bytes(), vec![1]); - assert_eq!(100_u8.as_ssz_bytes(), vec![100]); - assert_eq!(255_u8.as_ssz_bytes(), vec![255]); - } - - #[test] - fn ssz_encode_u16() { - assert_eq!(1_u16.as_ssz_bytes(), vec![1, 0]); - assert_eq!(100_u16.as_ssz_bytes(), vec![100, 0]); - assert_eq!((1_u16 << 8).as_ssz_bytes(), vec![0, 1]); - assert_eq!(65535_u16.as_ssz_bytes(), vec![255, 255]); - } - - #[test] - fn ssz_encode_u32() { - assert_eq!(1_u32.as_ssz_bytes(), vec![1, 0, 0, 0]); - assert_eq!(100_u32.as_ssz_bytes(), vec![100, 0, 0, 0]); - assert_eq!((1_u32 << 16).as_ssz_bytes(), vec![0, 0, 1, 0]); - assert_eq!((1_u32 << 24).as_ssz_bytes(), vec![0, 0, 0, 1]); - assert_eq!((!0_u32).as_ssz_bytes(), vec![255, 255, 255, 255]); - } - - #[test] - fn ssz_encode_u64() { - assert_eq!(1_u64.as_ssz_bytes(), vec![1, 0, 0, 0, 0, 0, 0, 0]); - assert_eq!( - (!0_u64).as_ssz_bytes(), - vec![255, 255, 255, 255, 255, 255, 255, 255] - ); - } - - #[test] - fn ssz_encode_usize() { - assert_eq!(1_usize.as_ssz_bytes(), vec![1, 0, 0, 0, 0, 0, 0, 0]); - assert_eq!( - (!0_usize).as_ssz_bytes(), - vec![255, 255, 255, 255, 255, 255, 255, 255] - ); - } - - #[test] - fn ssz_encode_option_u8() { - let opt: Option = None; - assert_eq!(opt.as_ssz_bytes(), vec![0]); - let opt: Option = Some(2); - assert_eq!(opt.as_ssz_bytes(), vec![1, 2]); - } - - #[test] - fn ssz_encode_bool() { - assert_eq!(true.as_ssz_bytes(), vec![1]); - assert_eq!(false.as_ssz_bytes(), vec![0]); - } - - #[test] - fn ssz_encode_h256() { - assert_eq!(H256::from(&[0; 32]).as_ssz_bytes(), vec![0; 32]); - assert_eq!(H256::from(&[1; 32]).as_ssz_bytes(), vec![1; 32]); - - let bytes = vec![ - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, - ]; - - assert_eq!(H256::from_slice(&bytes).as_ssz_bytes(), bytes); - } - - #[test] - fn ssz_encode_u8_array_4() { - assert_eq!([0, 0, 0, 0].as_ssz_bytes(), vec![0; 4]); - assert_eq!([1, 0, 0, 0].as_ssz_bytes(), vec![1, 0, 0, 0]); - assert_eq!([1, 2, 3, 4].as_ssz_bytes(), vec![1, 2, 3, 4]); - } - - #[test] - fn tuple() { - assert_eq!((10u8, 11u8).as_ssz_bytes(), vec![10, 11]); - assert_eq!((10u32, 11u8).as_ssz_bytes(), vec![10, 0, 0, 0, 11]); - assert_eq!((10u8, 11u8, 12u8).as_ssz_bytes(), vec![10, 11, 12]); - } -} diff --git a/consensus/ssz/src/legacy.rs b/consensus/ssz/src/legacy.rs deleted file mode 100644 index 4953db057d..0000000000 --- a/consensus/ssz/src/legacy.rs +++ /dev/null @@ -1,265 +0,0 @@ -//! Provides a "legacy" version of SSZ encoding for `Option where T: Encode + Decode`. -//! -//! The SSZ specification changed in 2021 to use a 1-byte union selector, instead of a 4-byte one -//! which was used in the Lighthouse database. -//! -//! Users can use the `four_byte_option_impl` macro to define a module that can be used with the -//! `#[ssz(with = "module")]`. -//! -//! ## Example -//! -//! ```rust -//! use ssz_derive::{Encode, Decode}; -//! use ssz::four_byte_option_impl; -//! -//! four_byte_option_impl!(impl_for_u64, u64); -//! -//! #[derive(Encode, Decode)] -//! struct Foo { -//! #[ssz(with = "impl_for_u64")] -//! a: Option, -//! } -//! ``` - -use crate::*; - -#[macro_export] -macro_rules! four_byte_option_impl { - ($mod_name: ident, $type: ty) => { - #[allow(dead_code)] - mod $mod_name { - use super::*; - - pub mod encode { - use super::*; - #[allow(unused_imports)] - use ssz::*; - - pub fn is_ssz_fixed_len() -> bool { - false - } - - pub fn ssz_fixed_len() -> usize { - BYTES_PER_LENGTH_OFFSET - } - - pub fn ssz_bytes_len(opt: &Option<$type>) -> usize { - if let Some(some) = opt { - let len = if <$type as Encode>::is_ssz_fixed_len() { - <$type as Encode>::ssz_fixed_len() - } else { - <$type as Encode>::ssz_bytes_len(some) - }; - len + BYTES_PER_LENGTH_OFFSET - } else { - BYTES_PER_LENGTH_OFFSET - } - } - - pub fn ssz_append(opt: &Option<$type>, buf: &mut Vec) { - match opt { - None => buf.extend_from_slice(&legacy::encode_four_byte_union_selector(0)), - Some(t) => { - buf.extend_from_slice(&legacy::encode_four_byte_union_selector(1)); - t.ssz_append(buf); - } - } - } - - pub fn as_ssz_bytes(opt: &Option<$type>) -> Vec { - let mut buf = vec![]; - - ssz_append(opt, &mut buf); - - buf - } - } - - pub mod decode { - use super::*; - #[allow(unused_imports)] - use ssz::*; - - pub fn is_ssz_fixed_len() -> bool { - false - } - - pub fn ssz_fixed_len() -> usize { - BYTES_PER_LENGTH_OFFSET - } - - pub fn from_ssz_bytes(bytes: &[u8]) -> Result, DecodeError> { - if bytes.len() < BYTES_PER_LENGTH_OFFSET { - return Err(DecodeError::InvalidByteLength { - len: bytes.len(), - expected: BYTES_PER_LENGTH_OFFSET, - }); - } - - let (index_bytes, value_bytes) = bytes.split_at(BYTES_PER_LENGTH_OFFSET); - - let index = legacy::read_four_byte_union_selector(index_bytes)?; - if index == 0 { - Ok(None) - } else if index == 1 { - Ok(Some(<$type as ssz::Decode>::from_ssz_bytes(value_bytes)?)) - } else { - Err(DecodeError::BytesInvalid(format!( - "{} is not a valid union index for Option", - index - ))) - } - } - } - } - }; -} - -pub fn encode_four_byte_union_selector(selector: usize) -> [u8; BYTES_PER_LENGTH_OFFSET] { - encode_length(selector) -} - -pub fn read_four_byte_union_selector(bytes: &[u8]) -> Result { - read_offset(bytes) -} - -#[cfg(test)] -mod test { - use super::*; - use crate as ssz; - use ssz_derive::{Decode, Encode}; - - type VecU16 = Vec; - - four_byte_option_impl!(impl_u16, u16); - four_byte_option_impl!(impl_vec_u16, VecU16); - - #[test] - fn ssz_encode_option_u16() { - let item = Some(65535_u16); - let bytes = vec![1, 0, 0, 0, 255, 255]; - assert_eq!(impl_u16::encode::as_ssz_bytes(&item), bytes); - assert_eq!(impl_u16::decode::from_ssz_bytes(&bytes).unwrap(), item); - - let item = None; - let bytes = vec![0, 0, 0, 0]; - assert_eq!(impl_u16::encode::as_ssz_bytes(&item), bytes); - assert_eq!(impl_u16::decode::from_ssz_bytes(&bytes).unwrap(), None); - } - - #[test] - fn ssz_encode_option_vec_u16() { - let item = Some(vec![0_u16, 1]); - let bytes = vec![1, 0, 0, 0, 0, 0, 1, 0]; - assert_eq!(impl_vec_u16::encode::as_ssz_bytes(&item), bytes); - assert_eq!(impl_vec_u16::decode::from_ssz_bytes(&bytes).unwrap(), item); - - let item = None; - let bytes = vec![0, 0, 0, 0]; - assert_eq!(impl_vec_u16::encode::as_ssz_bytes(&item), bytes); - assert_eq!(impl_vec_u16::decode::from_ssz_bytes(&bytes).unwrap(), item); - } - - fn round_trip(items: Vec) { - for item in items { - let encoded = &item.as_ssz_bytes(); - assert_eq!(item.ssz_bytes_len(), encoded.len()); - assert_eq!(T::from_ssz_bytes(encoded), Ok(item)); - } - } - - #[derive(Debug, PartialEq, Encode, Decode)] - struct TwoVariableLenOptions { - a: u16, - #[ssz(with = "impl_u16")] - b: Option, - #[ssz(with = "impl_vec_u16")] - c: Option>, - #[ssz(with = "impl_vec_u16")] - d: Option>, - } - - #[test] - #[allow(clippy::zero_prefixed_literal)] - fn two_variable_len_options_encoding() { - let s = TwoVariableLenOptions { - a: 42, - b: None, - c: Some(vec![0]), - d: None, - }; - - let bytes = vec![ - // 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 - // | option | offset | offset | option = vec![ - TwoVariableLenOptions { - a: 42, - b: Some(12), - c: Some(vec![0]), - d: Some(vec![1]), - }, - TwoVariableLenOptions { - a: 42, - b: Some(12), - c: Some(vec![0]), - d: None, - }, - TwoVariableLenOptions { - a: 42, - b: None, - c: Some(vec![0]), - d: None, - }, - TwoVariableLenOptions { - a: 42, - b: None, - c: None, - d: None, - }, - ]; - - round_trip(vec); - } - - #[test] - fn tuple_u8_u16() { - let vec: Vec<(u8, u16)> = vec![ - (0, 0), - (0, 1), - (1, 0), - (u8::max_value(), u16::max_value()), - (0, u16::max_value()), - (u8::max_value(), 0), - (42, 12301), - ]; - - round_trip(vec); - } - - #[test] - fn tuple_vec_vec() { - let vec: Vec<(u64, Vec, Vec>)> = vec![ - (0, vec![], vec![vec![]]), - (99, vec![101], vec![vec![], vec![]]), - ( - 42, - vec![12, 13, 14], - vec![vec![99, 98, 97, 96], vec![42, 44, 46, 48, 50]], - ), - ]; - - round_trip(vec); - } -} diff --git a/consensus/ssz/src/lib.rs b/consensus/ssz/src/lib.rs deleted file mode 100644 index e71157a3ee..0000000000 --- a/consensus/ssz/src/lib.rs +++ /dev/null @@ -1,71 +0,0 @@ -//! Provides encoding (serialization) and decoding (deserialization) in the SimpleSerialize (SSZ) -//! format designed for use in Ethereum 2.0. -//! -//! Adheres to the Ethereum 2.0 [SSZ -//! specification](https://github.com/ethereum/eth2.0-specs/blob/v0.12.1/ssz/simple-serialize.md) -//! at v0.12.1. -//! -//! ## Example -//! -//! ```rust -//! use ssz_derive::{Encode, Decode}; -//! use ssz::{Decode, Encode}; -//! -//! #[derive(PartialEq, Debug, Encode, Decode)] -//! struct Foo { -//! a: u64, -//! b: Vec, -//! } -//! -//! fn ssz_encode_decode_example() { -//! let foo = Foo { -//! a: 42, -//! b: vec![1, 3, 3, 7] -//! }; -//! -//! let ssz_bytes: Vec = foo.as_ssz_bytes(); -//! -//! let decoded_foo = Foo::from_ssz_bytes(&ssz_bytes).unwrap(); -//! -//! assert_eq!(foo, decoded_foo); -//! } -//! -//! ``` -//! -//! See `examples/` for manual implementations of the `Encode` and `Decode` traits. - -mod decode; -mod encode; -pub mod legacy; -mod union_selector; - -pub use decode::{ - impls::decode_list_of_variable_length_items, read_offset, split_union_bytes, - try_from_iter::TryFromIter, Decode, DecodeError, SszDecoder, SszDecoderBuilder, -}; -pub use encode::{encode_length, Encode, SszEncoder}; -pub use union_selector::UnionSelector; - -/// The number of bytes used to represent an offset. -pub const BYTES_PER_LENGTH_OFFSET: usize = 4; -/// The maximum value that can be represented using `BYTES_PER_LENGTH_OFFSET`. -#[cfg(target_pointer_width = "32")] -pub const MAX_LENGTH_VALUE: usize = (std::u32::MAX >> (8 * (4 - BYTES_PER_LENGTH_OFFSET))) as usize; -#[cfg(target_pointer_width = "64")] -pub const MAX_LENGTH_VALUE: usize = (std::u64::MAX >> (8 * (8 - BYTES_PER_LENGTH_OFFSET))) as usize; - -/// The number of bytes used to indicate the variant of a union. -pub const BYTES_PER_UNION_SELECTOR: usize = 1; -/// The highest possible union selector value (higher values are reserved for backwards compatible -/// extensions). -pub const MAX_UNION_SELECTOR: u8 = 127; - -/// Convenience function to SSZ encode an object supporting ssz::Encode. -/// -/// Equivalent to `val.as_ssz_bytes()`. -pub fn ssz_encode(val: &T) -> Vec -where - T: Encode, -{ - val.as_ssz_bytes() -} diff --git a/consensus/ssz/src/union_selector.rs b/consensus/ssz/src/union_selector.rs deleted file mode 100644 index 18bab094aa..0000000000 --- a/consensus/ssz/src/union_selector.rs +++ /dev/null @@ -1,29 +0,0 @@ -use crate::*; - -/// Provides the one-byte "selector" from the SSZ union specification: -/// -/// https://github.com/ethereum/consensus-specs/blob/v1.1.0-beta.3/ssz/simple-serialize.md#union -#[derive(Copy, Clone)] -pub struct UnionSelector(u8); - -impl From for u8 { - fn from(union_selector: UnionSelector) -> u8 { - union_selector.0 - } -} - -impl PartialEq for UnionSelector { - fn eq(&self, other: &u8) -> bool { - self.0 == *other - } -} - -impl UnionSelector { - /// Instantiate `self`, returning an error if `selector > MAX_UNION_SELECTOR`. - pub fn new(selector: u8) -> Result { - Some(selector) - .filter(|_| selector <= MAX_UNION_SELECTOR) - .map(Self) - .ok_or(DecodeError::UnionSelectorInvalid(selector)) - } -} diff --git a/consensus/ssz/tests/tests.rs b/consensus/ssz/tests/tests.rs deleted file mode 100644 index f52d2c5cdf..0000000000 --- a/consensus/ssz/tests/tests.rs +++ /dev/null @@ -1,390 +0,0 @@ -use ethereum_types::H256; -use ssz::{Decode, DecodeError, Encode}; -use ssz_derive::{Decode, Encode}; - -mod round_trip { - use super::*; - use std::collections::BTreeMap; - use std::iter::FromIterator; - - fn round_trip(items: Vec) { - for item in items { - let encoded = &item.as_ssz_bytes(); - assert_eq!(item.ssz_bytes_len(), encoded.len()); - assert_eq!(T::from_ssz_bytes(encoded), Ok(item)); - } - } - - #[test] - fn bool() { - let items: Vec = vec![true, false]; - - round_trip(items); - } - - #[test] - fn option_u16() { - let items: Vec> = vec![None, Some(2u16)]; - - round_trip(items); - } - - #[test] - fn u8_array_4() { - let items: Vec<[u8; 4]> = vec![[0, 0, 0, 0], [1, 0, 0, 0], [1, 2, 3, 4], [1, 2, 0, 4]]; - - round_trip(items); - } - - #[test] - fn h256() { - let items: Vec = vec![H256::zero(), H256::from([1; 32]), H256::random()]; - - round_trip(items); - } - - #[test] - fn vec_of_h256() { - let items: Vec> = vec![ - vec![], - vec![H256::zero(), H256::from([1; 32]), H256::random()], - ]; - - round_trip(items); - } - - #[test] - fn option_vec_h256() { - let items: Vec>> = vec![ - None, - Some(vec![]), - Some(vec![H256::zero(), H256::from([1; 32]), H256::random()]), - ]; - - round_trip(items); - } - - #[test] - fn vec_u16() { - let items: Vec> = vec![ - vec![], - vec![255], - vec![0, 1, 2], - vec![100; 64], - vec![255, 0, 255], - ]; - - round_trip(items); - } - - #[test] - fn vec_of_vec_u16() { - let items: Vec>> = vec![ - vec![], - vec![vec![]], - vec![vec![1, 2, 3]], - vec![vec![], vec![]], - vec![vec![], vec![1, 2, 3]], - vec![vec![1, 2, 3], vec![1, 2, 3]], - vec![vec![1, 2, 3], vec![], vec![1, 2, 3]], - vec![vec![], vec![], vec![1, 2, 3]], - vec![vec![], vec![1], vec![1, 2, 3]], - vec![vec![], vec![1], vec![1, 2, 3]], - ]; - - round_trip(items); - } - - #[derive(Debug, PartialEq, Encode, Decode)] - struct FixedLen { - a: u16, - b: u64, - c: u32, - } - - #[test] - #[allow(clippy::zero_prefixed_literal)] - fn fixed_len_struct_encoding() { - let items: Vec = vec![ - FixedLen { a: 0, b: 0, c: 0 }, - FixedLen { a: 1, b: 1, c: 1 }, - FixedLen { a: 1, b: 0, c: 1 }, - ]; - - let expected_encodings = vec![ - // | u16--| u64----------------------------| u32----------| - vec![00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00], - vec![01, 00, 01, 00, 00, 00, 00, 00, 00, 00, 01, 00, 00, 00], - vec![01, 00, 00, 00, 00, 00, 00, 00, 00, 00, 01, 00, 00, 00], - ]; - - for i in 0..items.len() { - assert_eq!( - items[i].as_ssz_bytes(), - expected_encodings[i], - "Failed on {}", - i - ); - } - } - - #[test] - fn fixed_len_excess_bytes() { - let fixed = FixedLen { a: 1, b: 2, c: 3 }; - - let mut bytes = fixed.as_ssz_bytes(); - bytes.append(&mut vec![0]); - - assert_eq!( - FixedLen::from_ssz_bytes(&bytes), - Err(DecodeError::InvalidByteLength { - len: 15, - expected: 14, - }) - ); - } - - #[test] - fn vec_of_fixed_len_struct() { - let items: Vec = vec![ - FixedLen { a: 0, b: 0, c: 0 }, - FixedLen { a: 1, b: 1, c: 1 }, - FixedLen { a: 1, b: 0, c: 1 }, - ]; - - round_trip(items); - } - - #[derive(Debug, PartialEq, Encode, Decode)] - struct VariableLen { - a: u16, - b: Vec, - c: u32, - } - - #[test] - #[allow(clippy::zero_prefixed_literal)] - fn offset_into_fixed_bytes() { - let bytes = vec![ - // 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 - // | offset | u32 | variable - 01, 00, 09, 00, 00, 00, 01, 00, 00, 00, 00, 00, 01, 00, 02, 00, - ]; - - assert_eq!( - VariableLen::from_ssz_bytes(&bytes), - Err(DecodeError::OffsetIntoFixedPortion(9)) - ); - } - - #[test] - fn variable_len_excess_bytes() { - let variable = VariableLen { - a: 1, - b: vec![2], - c: 3, - }; - - let mut bytes = variable.as_ssz_bytes(); - bytes.append(&mut vec![0]); - - // The error message triggered is not so helpful, it's caught by a side-effect. Just - // checking there is _some_ error is fine. - assert!(VariableLen::from_ssz_bytes(&bytes).is_err()); - } - - #[test] - #[allow(clippy::zero_prefixed_literal)] - fn first_offset_skips_byte() { - let bytes = vec![ - // 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 - // | offset | u32 | variable - 01, 00, 11, 00, 00, 00, 01, 00, 00, 00, 00, 00, 01, 00, 02, 00, - ]; - - assert_eq!( - VariableLen::from_ssz_bytes(&bytes), - Err(DecodeError::OffsetSkipsVariableBytes(11)) - ); - } - - #[test] - #[allow(clippy::zero_prefixed_literal)] - fn variable_len_struct_encoding() { - let items: Vec = vec![ - VariableLen { - a: 0, - b: vec![], - c: 0, - }, - VariableLen { - a: 1, - b: vec![0], - c: 1, - }, - VariableLen { - a: 1, - b: vec![0, 1, 2], - c: 1, - }, - ]; - - let expected_encodings = vec![ - // 00..................................09 - // | u16--| vec offset-----| u32------------| vec payload --------| - vec![00, 00, 10, 00, 00, 00, 00, 00, 00, 00], - vec![01, 00, 10, 00, 00, 00, 01, 00, 00, 00, 00, 00], - vec![ - 01, 00, 10, 00, 00, 00, 01, 00, 00, 00, 00, 00, 01, 00, 02, 00, - ], - ]; - - for i in 0..items.len() { - assert_eq!( - items[i].as_ssz_bytes(), - expected_encodings[i], - "Failed on {}", - i - ); - } - } - - #[test] - fn vec_of_variable_len_struct() { - let items: Vec = vec![ - VariableLen { - a: 0, - b: vec![], - c: 0, - }, - VariableLen { - a: 255, - b: vec![0, 1, 2, 3], - c: 99, - }, - VariableLen { - a: 255, - b: vec![0], - c: 99, - }, - VariableLen { - a: 50, - b: vec![0], - c: 0, - }, - ]; - - round_trip(items); - } - - #[derive(Debug, PartialEq, Encode, Decode)] - struct ThreeVariableLen { - a: u16, - b: Vec, - c: Vec, - d: Vec, - } - - #[test] - fn three_variable_len() { - let vec: Vec = vec![ThreeVariableLen { - a: 42, - b: vec![0], - c: vec![1], - d: vec![2], - }]; - - round_trip(vec); - } - - #[test] - #[allow(clippy::zero_prefixed_literal)] - fn offsets_decreasing() { - let bytes = vec![ - // 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 - // | offset | offset | offset | variable - 01, 00, 14, 00, 00, 00, 15, 00, 00, 00, 14, 00, 00, 00, 00, 00, - ]; - - assert_eq!( - ThreeVariableLen::from_ssz_bytes(&bytes), - Err(DecodeError::OffsetsAreDecreasing(14)) - ); - } - - #[test] - fn tuple_u8_u16() { - let vec: Vec<(u8, u16)> = vec![ - (0, 0), - (0, 1), - (1, 0), - (u8::max_value(), u16::max_value()), - (0, u16::max_value()), - (u8::max_value(), 0), - (42, 12301), - ]; - - round_trip(vec); - } - - #[test] - fn tuple_vec_vec() { - let vec: Vec<(u64, Vec, Vec>)> = vec![ - (0, vec![], vec![vec![]]), - (99, vec![101], vec![vec![], vec![]]), - ( - 42, - vec![12, 13, 14], - vec![vec![99, 98, 97, 96], vec![42, 44, 46, 48, 50]], - ), - ]; - - round_trip(vec); - } - - #[test] - fn btree_map_fixed() { - let data = vec![ - BTreeMap::new(), - BTreeMap::from_iter(vec![(0u8, 0u16), (1, 2), (2, 4), (4, 6)]), - ]; - round_trip(data); - } - - #[test] - fn btree_map_variable_value() { - let data = vec![ - BTreeMap::new(), - BTreeMap::from_iter(vec![ - ( - 0u64, - ThreeVariableLen { - a: 1, - b: vec![3, 5, 7], - c: vec![], - d: vec![0, 0], - }, - ), - ( - 1, - ThreeVariableLen { - a: 99, - b: vec![1], - c: vec![2, 3, 4, 5, 6, 7, 8, 9, 10], - d: vec![4, 5, 6, 7, 8], - }, - ), - ( - 2, - ThreeVariableLen { - a: 0, - b: vec![], - c: vec![], - d: vec![], - }, - ), - ]), - ]; - round_trip(data); - } -} diff --git a/consensus/ssz_derive/Cargo.toml b/consensus/ssz_derive/Cargo.toml deleted file mode 100644 index d3b2865a61..0000000000 --- a/consensus/ssz_derive/Cargo.toml +++ /dev/null @@ -1,20 +0,0 @@ -[package] -name = "eth2_ssz_derive" -version = "0.3.1" -authors = ["Paul Hauner "] -edition = "2021" -description = "Procedural derive macros to accompany the eth2_ssz crate." -license = "Apache-2.0" - -[lib] -name = "ssz_derive" -proc-macro = true - -[dependencies] -syn = "1.0.42" -proc-macro2 = "1.0.23" -quote = "1.0.7" -darling = "0.13.0" - -[dev-dependencies] -eth2_ssz = "0.4.1" diff --git a/consensus/ssz_derive/src/lib.rs b/consensus/ssz_derive/src/lib.rs deleted file mode 100644 index 53752ba44b..0000000000 --- a/consensus/ssz_derive/src/lib.rs +++ /dev/null @@ -1,981 +0,0 @@ -//! Provides procedural derive macros for the `Encode` and `Decode` traits of the `eth2_ssz` crate. -//! -//! ## Attributes -//! -//! The following struct/enum attributes are available: -//! -//! - `#[ssz(enum_behaviour = "union")]`: encodes and decodes an `enum` with a one-byte variant selector. -//! - `#[ssz(enum_behaviour = "transparent")]`: allows encoding an `enum` by serializing only the -//! value whilst ignoring outermost the `enum`. -//! - `#[ssz(struct_behaviour = "container")]`: encodes and decodes the `struct` as an SSZ -//! "container". -//! - `#[ssz(struct_behaviour = "transparent")]`: encodes and decodes a `struct` with exactly one -//! non-skipped field as if the outermost `struct` does not exist. -//! -//! The following field attributes are available: -//! -//! - `#[ssz(with = "module")]`: uses the methods in `module` to implement `ssz::Encode` and -//! `ssz::Decode`. This is useful when it's not possible to create an `impl` for that type -//! (e.g. the type is defined in another crate). -//! - `#[ssz(skip_serializing)]`: this field will not be included in the serialized SSZ vector. -//! - `#[ssz(skip_deserializing)]`: this field will not be expected in the serialized -//! SSZ vector and it will be initialized from a `Default` implementation. -//! -//! ## Examples -//! -//! ### Structs -//! -//! ```rust -//! use ssz::{Encode, Decode}; -//! use ssz_derive::{Encode, Decode}; -//! -//! /// Represented as an SSZ "list" wrapped in an SSZ "container". -//! #[derive(Debug, PartialEq, Encode, Decode)] -//! #[ssz(struct_behaviour = "container")] // "container" is the default behaviour -//! struct TypicalStruct { -//! foo: Vec -//! } -//! -//! assert_eq!( -//! TypicalStruct { foo: vec![42] }.as_ssz_bytes(), -//! vec![4, 0, 0, 0, 42] -//! ); -//! -//! assert_eq!( -//! TypicalStruct::from_ssz_bytes(&[4, 0, 0, 0, 42]).unwrap(), -//! TypicalStruct { foo: vec![42] }, -//! ); -//! -//! /// Represented as an SSZ "list" *without* an SSZ "container". -//! #[derive(Encode, Decode)] -//! #[ssz(struct_behaviour = "transparent")] -//! struct WrapperStruct { -//! foo: Vec -//! } -//! -//! assert_eq!( -//! WrapperStruct { foo: vec![42] }.as_ssz_bytes(), -//! vec![42] -//! ); -//! -//! /// Represented as an SSZ "list" *without* an SSZ "container". The `bar` byte is ignored. -//! #[derive(Debug, PartialEq, Encode, Decode)] -//! #[ssz(struct_behaviour = "transparent")] -//! struct WrapperStructSkippedField { -//! foo: Vec, -//! #[ssz(skip_serializing, skip_deserializing)] -//! bar: u8, -//! } -//! -//! assert_eq!( -//! WrapperStructSkippedField { foo: vec![42], bar: 99 }.as_ssz_bytes(), -//! vec![42] -//! ); -//! assert_eq!( -//! WrapperStructSkippedField::from_ssz_bytes(&[42]).unwrap(), -//! WrapperStructSkippedField { foo: vec![42], bar: 0 } -//! ); -//! -//! /// Represented as an SSZ "list" *without* an SSZ "container". -//! #[derive(Encode, Decode)] -//! #[ssz(struct_behaviour = "transparent")] -//! struct NewType(Vec); -//! -//! assert_eq!( -//! NewType(vec![42]).as_ssz_bytes(), -//! vec![42] -//! ); -//! -//! /// Represented as an SSZ "list" *without* an SSZ "container". The `bar` byte is ignored. -//! #[derive(Debug, PartialEq, Encode, Decode)] -//! #[ssz(struct_behaviour = "transparent")] -//! struct NewTypeSkippedField(Vec, #[ssz(skip_serializing, skip_deserializing)] u8); -//! -//! assert_eq!( -//! NewTypeSkippedField(vec![42], 99).as_ssz_bytes(), -//! vec![42] -//! ); -//! assert_eq!( -//! NewTypeSkippedField::from_ssz_bytes(&[42]).unwrap(), -//! NewTypeSkippedField(vec![42], 0) -//! ); -//! ``` -//! -//! ### Enums -//! -//! ```rust -//! use ssz::{Encode, Decode}; -//! use ssz_derive::{Encode, Decode}; -//! -//! /// Represented as an SSZ "union". -//! #[derive(Debug, PartialEq, Encode, Decode)] -//! #[ssz(enum_behaviour = "union")] -//! enum UnionEnum { -//! Foo(u8), -//! Bar(Vec), -//! } -//! -//! assert_eq!( -//! UnionEnum::Foo(42).as_ssz_bytes(), -//! vec![0, 42] -//! ); -//! assert_eq!( -//! UnionEnum::from_ssz_bytes(&[1, 42, 42]).unwrap(), -//! UnionEnum::Bar(vec![42, 42]), -//! ); -//! -//! /// Represented as only the value in the enum variant. -//! #[derive(Debug, PartialEq, Encode)] -//! #[ssz(enum_behaviour = "transparent")] -//! enum TransparentEnum { -//! Foo(u8), -//! Bar(Vec), -//! } -//! -//! assert_eq!( -//! TransparentEnum::Foo(42).as_ssz_bytes(), -//! vec![42] -//! ); -//! assert_eq!( -//! TransparentEnum::Bar(vec![42, 42]).as_ssz_bytes(), -//! vec![42, 42] -//! ); -//! ``` - -use darling::{FromDeriveInput, FromMeta}; -use proc_macro::TokenStream; -use quote::quote; -use std::convert::TryInto; -use syn::{parse_macro_input, DataEnum, DataStruct, DeriveInput, Ident}; - -/// The highest possible union selector value (higher values are reserved for backwards compatible -/// extensions). -const MAX_UNION_SELECTOR: u8 = 127; - -const ENUM_TRANSPARENT: &str = "transparent"; -const ENUM_UNION: &str = "union"; -const NO_ENUM_BEHAVIOUR_ERROR: &str = "enums require an \"enum_behaviour\" attribute with \ - a \"transparent\" or \"union\" value, e.g., #[ssz(enum_behaviour = \"transparent\")]"; - -#[derive(Debug, FromDeriveInput)] -#[darling(attributes(ssz))] -struct StructOpts { - #[darling(default)] - enum_behaviour: Option, - #[darling(default)] - struct_behaviour: Option, -} - -/// Field-level configuration. -#[derive(Debug, Default, FromMeta)] -struct FieldOpts { - #[darling(default)] - with: Option, - #[darling(default)] - skip_serializing: bool, - #[darling(default)] - skip_deserializing: bool, -} - -enum Procedure<'a> { - Struct { - data: &'a syn::DataStruct, - behaviour: StructBehaviour, - }, - Enum { - data: &'a syn::DataEnum, - behaviour: EnumBehaviour, - }, -} - -enum StructBehaviour { - Container, - Transparent, -} - -enum EnumBehaviour { - Union, - Transparent, -} - -impl<'a> Procedure<'a> { - fn read(item: &'a DeriveInput) -> Self { - let opts = StructOpts::from_derive_input(item).unwrap(); - - match &item.data { - syn::Data::Struct(data) => { - if opts.enum_behaviour.is_some() { - panic!("cannot use \"enum_behaviour\" for a struct"); - } - - match opts.struct_behaviour.as_deref() { - Some("container") | None => Procedure::Struct { - data, - behaviour: StructBehaviour::Container, - }, - Some("transparent") => Procedure::Struct { - data, - behaviour: StructBehaviour::Transparent, - }, - Some(other) => panic!( - "{} is not a valid struct behaviour, use \"container\" or \"transparent\"", - other - ), - } - } - syn::Data::Enum(data) => { - if opts.struct_behaviour.is_some() { - panic!("cannot use \"struct_behaviour\" for an enum"); - } - - match opts.enum_behaviour.as_deref() { - Some("union") => Procedure::Enum { - data, - behaviour: EnumBehaviour::Union, - }, - Some("transparent") => Procedure::Enum { - data, - behaviour: EnumBehaviour::Transparent, - }, - Some(other) => panic!( - "{} is not a valid enum behaviour, use \"container\" or \"transparent\"", - other - ), - None => panic!("{}", NO_ENUM_BEHAVIOUR_ERROR), - } - } - _ => panic!("ssz_derive only supports structs and enums"), - } - } -} - -fn parse_ssz_fields( - struct_data: &syn::DataStruct, -) -> Vec<(&syn::Type, Option<&syn::Ident>, FieldOpts)> { - struct_data - .fields - .iter() - .map(|field| { - let ty = &field.ty; - let ident = field.ident.as_ref(); - - let field_opts_candidates = field - .attrs - .iter() - .filter(|attr| attr.path.get_ident().map_or(false, |ident| *ident == "ssz")) - .collect::>(); - - if field_opts_candidates.len() > 1 { - panic!("more than one field-level \"ssz\" attribute provided") - } - - let field_opts = field_opts_candidates - .first() - .map(|attr| { - let meta = attr.parse_meta().unwrap(); - FieldOpts::from_meta(&meta).unwrap() - }) - .unwrap_or_default(); - - (ty, ident, field_opts) - }) - .collect() -} - -/// Implements `ssz::Encode` for some `struct` or `enum`. -#[proc_macro_derive(Encode, attributes(ssz))] -pub fn ssz_encode_derive(input: TokenStream) -> TokenStream { - let item = parse_macro_input!(input as DeriveInput); - let procedure = Procedure::read(&item); - - match procedure { - Procedure::Struct { data, behaviour } => match behaviour { - StructBehaviour::Transparent => ssz_encode_derive_struct_transparent(&item, data), - StructBehaviour::Container => ssz_encode_derive_struct(&item, data), - }, - Procedure::Enum { data, behaviour } => match behaviour { - EnumBehaviour::Transparent => ssz_encode_derive_enum_transparent(&item, data), - EnumBehaviour::Union => ssz_encode_derive_enum_union(&item, data), - }, - } -} - -/// Derive `ssz::Encode` for a struct. -/// -/// Fields are encoded in the order they are defined. -/// -/// ## Field attributes -/// -/// - `#[ssz(skip_serializing)]`: the field will not be serialized. -fn ssz_encode_derive_struct(derive_input: &DeriveInput, struct_data: &DataStruct) -> TokenStream { - let name = &derive_input.ident; - let (impl_generics, ty_generics, where_clause) = &derive_input.generics.split_for_impl(); - - let field_is_ssz_fixed_len = &mut vec![]; - let field_fixed_len = &mut vec![]; - let field_ssz_bytes_len = &mut vec![]; - let field_encoder_append = &mut vec![]; - - for (ty, ident, field_opts) in parse_ssz_fields(struct_data) { - if field_opts.skip_serializing { - continue; - } - - let ident = match ident { - Some(ref ident) => ident, - _ => panic!( - "#[ssz(struct_behaviour = \"container\")] only supports named struct fields." - ), - }; - - if let Some(module) = field_opts.with { - let module = quote! { #module::encode }; - field_is_ssz_fixed_len.push(quote! { #module::is_ssz_fixed_len() }); - field_fixed_len.push(quote! { #module::ssz_fixed_len() }); - field_ssz_bytes_len.push(quote! { #module::ssz_bytes_len(&self.#ident) }); - field_encoder_append.push(quote! { - encoder.append_parameterized( - #module::is_ssz_fixed_len(), - |buf| #module::ssz_append(&self.#ident, buf) - ) - }); - } else { - field_is_ssz_fixed_len.push(quote! { <#ty as ssz::Encode>::is_ssz_fixed_len() }); - field_fixed_len.push(quote! { <#ty as ssz::Encode>::ssz_fixed_len() }); - field_ssz_bytes_len.push(quote! { self.#ident.ssz_bytes_len() }); - field_encoder_append.push(quote! { encoder.append(&self.#ident) }); - } - } - - let output = quote! { - impl #impl_generics ssz::Encode for #name #ty_generics #where_clause { - fn is_ssz_fixed_len() -> bool { - #( - #field_is_ssz_fixed_len && - )* - true - } - - fn ssz_fixed_len() -> usize { - if ::is_ssz_fixed_len() { - let mut len: usize = 0; - #( - len = len - .checked_add(#field_fixed_len) - .expect("encode ssz_fixed_len length overflow"); - )* - len - } else { - ssz::BYTES_PER_LENGTH_OFFSET - } - } - - fn ssz_bytes_len(&self) -> usize { - if ::is_ssz_fixed_len() { - ::ssz_fixed_len() - } else { - let mut len: usize = 0; - #( - if #field_is_ssz_fixed_len { - len = len - .checked_add(#field_fixed_len) - .expect("encode ssz_bytes_len length overflow"); - } else { - len = len - .checked_add(ssz::BYTES_PER_LENGTH_OFFSET) - .expect("encode ssz_bytes_len length overflow for offset"); - len = len - .checked_add(#field_ssz_bytes_len) - .expect("encode ssz_bytes_len length overflow for bytes"); - } - )* - - len - } - } - - fn ssz_append(&self, buf: &mut Vec) { - let mut offset: usize = 0; - #( - offset = offset - .checked_add(#field_fixed_len) - .expect("encode ssz_append offset overflow"); - )* - - let mut encoder = ssz::SszEncoder::container(buf, offset); - - #( - #field_encoder_append; - )* - - encoder.finalize(); - } - } - }; - output.into() -} - -/// Derive `ssz::Encode` "transparently" for a struct which has exactly one non-skipped field. -/// -/// The single field is encoded directly, making the outermost `struct` transparent. -/// -/// ## Field attributes -/// -/// - `#[ssz(skip_serializing)]`: the field will not be serialized. -fn ssz_encode_derive_struct_transparent( - derive_input: &DeriveInput, - struct_data: &DataStruct, -) -> TokenStream { - let name = &derive_input.ident; - let (impl_generics, ty_generics, where_clause) = &derive_input.generics.split_for_impl(); - let ssz_fields = parse_ssz_fields(struct_data); - let num_fields = ssz_fields - .iter() - .filter(|(_, _, field_opts)| !field_opts.skip_deserializing) - .count(); - - if num_fields != 1 { - panic!( - "A \"transparent\" struct must have exactly one non-skipped field ({} fields found)", - num_fields - ); - } - - let (ty, ident, _field_opts) = ssz_fields - .iter() - .find(|(_, _, field_opts)| !field_opts.skip_deserializing) - .expect("\"transparent\" struct must have at least one non-skipped field"); - - let output = if let Some(field_name) = ident { - quote! { - impl #impl_generics ssz::Encode for #name #ty_generics #where_clause { - fn is_ssz_fixed_len() -> bool { - <#ty as ssz::Encode>::is_ssz_fixed_len() - } - - fn ssz_fixed_len() -> usize { - <#ty as ssz::Encode>::ssz_fixed_len() - } - - fn ssz_bytes_len(&self) -> usize { - self.#field_name.ssz_bytes_len() - } - - fn ssz_append(&self, buf: &mut Vec) { - self.#field_name.ssz_append(buf) - } - } - } - } else { - quote! { - impl #impl_generics ssz::Encode for #name #ty_generics #where_clause { - fn is_ssz_fixed_len() -> bool { - <#ty as ssz::Encode>::is_ssz_fixed_len() - } - - fn ssz_fixed_len() -> usize { - <#ty as ssz::Encode>::ssz_fixed_len() - } - - fn ssz_bytes_len(&self) -> usize { - self.0.ssz_bytes_len() - } - - fn ssz_append(&self, buf: &mut Vec) { - self.0.ssz_append(buf) - } - } - } - }; - - output.into() -} - -/// Derive `ssz::Encode` for an enum in the "transparent" method. -/// -/// The "transparent" method is distinct from the "union" method specified in the SSZ specification. -/// When using "transparent", the enum will be ignored and the contained field will be serialized as -/// if the enum does not exist. Since an union variant "selector" is not serialized, it is not -/// possible to reliably decode an enum that is serialized transparently. -/// -/// ## Limitations -/// -/// Only supports: -/// - Enums with a single field per variant, where -/// - All fields are variably sized from an SSZ-perspective (not fixed size). -/// -/// ## Panics -/// -/// Will panic at compile-time if the single field requirement isn't met, but will panic *at run -/// time* if the variable-size requirement isn't met. -fn ssz_encode_derive_enum_transparent( - derive_input: &DeriveInput, - enum_data: &DataEnum, -) -> TokenStream { - let name = &derive_input.ident; - let (impl_generics, ty_generics, where_clause) = &derive_input.generics.split_for_impl(); - - let (patterns, assert_exprs): (Vec<_>, Vec<_>) = enum_data - .variants - .iter() - .map(|variant| { - let variant_name = &variant.ident; - - if variant.fields.len() != 1 { - panic!("ssz::Encode can only be derived for enums with 1 field per variant"); - } - - let pattern = quote! { - #name::#variant_name(ref inner) - }; - - let ty = &(&variant.fields).into_iter().next().unwrap().ty; - let type_assert = quote! { - !<#ty as ssz::Encode>::is_ssz_fixed_len() - }; - (pattern, type_assert) - }) - .unzip(); - - let output = quote! { - impl #impl_generics ssz::Encode for #name #ty_generics #where_clause { - fn is_ssz_fixed_len() -> bool { - assert!( - #( - #assert_exprs && - )* true, - "not all enum variants are variably-sized" - ); - false - } - - fn ssz_bytes_len(&self) -> usize { - match self { - #( - #patterns => inner.ssz_bytes_len(), - )* - } - } - - fn ssz_append(&self, buf: &mut Vec) { - match self { - #( - #patterns => inner.ssz_append(buf), - )* - } - } - } - }; - output.into() -} - -/// Derive `ssz::Encode` for an `enum` following the "union" SSZ spec. -/// -/// The union selector will be determined based upon the order in which the enum variants are -/// defined. E.g., the top-most variant in the enum will have a selector of `0`, the variant -/// beneath it will have a selector of `1` and so on. -/// -/// # Limitations -/// -/// Only supports enums where each variant has a single field. -fn ssz_encode_derive_enum_union(derive_input: &DeriveInput, enum_data: &DataEnum) -> TokenStream { - let name = &derive_input.ident; - let (impl_generics, ty_generics, where_clause) = &derive_input.generics.split_for_impl(); - - let patterns: Vec<_> = enum_data - .variants - .iter() - .map(|variant| { - let variant_name = &variant.ident; - - if variant.fields.len() != 1 { - panic!("ssz::Encode can only be derived for enums with 1 field per variant"); - } - - let pattern = quote! { - #name::#variant_name(ref inner) - }; - pattern - }) - .collect(); - - let union_selectors = compute_union_selectors(patterns.len()); - - let output = quote! { - impl #impl_generics ssz::Encode for #name #ty_generics #where_clause { - fn is_ssz_fixed_len() -> bool { - false - } - - fn ssz_bytes_len(&self) -> usize { - match self { - #( - #patterns => inner - .ssz_bytes_len() - .checked_add(1) - .expect("encoded length must be less than usize::max_value"), - )* - } - } - - fn ssz_append(&self, buf: &mut Vec) { - match self { - #( - #patterns => { - let union_selector: u8 = #union_selectors; - debug_assert!(union_selector <= ssz::MAX_UNION_SELECTOR); - buf.push(union_selector); - inner.ssz_append(buf) - }, - )* - } - } - } - }; - output.into() -} - -/// Derive `ssz::Decode` for a struct or enum. -#[proc_macro_derive(Decode, attributes(ssz))] -pub fn ssz_decode_derive(input: TokenStream) -> TokenStream { - let item = parse_macro_input!(input as DeriveInput); - let procedure = Procedure::read(&item); - - match procedure { - Procedure::Struct { data, behaviour } => match behaviour { - StructBehaviour::Transparent => ssz_decode_derive_struct_transparent(&item, data), - StructBehaviour::Container => ssz_decode_derive_struct(&item, data), - }, - Procedure::Enum { data, behaviour } => match behaviour { - EnumBehaviour::Union => ssz_decode_derive_enum_union(&item, data), - EnumBehaviour::Transparent => panic!( - "Decode cannot be derived for enum_behaviour \"{}\", only \"{}\" is valid.", - ENUM_TRANSPARENT, ENUM_UNION - ), - }, - } -} - -/// Implements `ssz::Decode` for some `struct`. -/// -/// Fields are decoded in the order they are defined. -/// -/// ## Field attributes -/// -/// - `#[ssz(skip_deserializing)]`: during de-serialization the field will be instantiated from a -/// `Default` implementation. The decoder will assume that the field was not serialized at all -/// (e.g., if it has been serialized, an error will be raised instead of `Default` overriding it). -fn ssz_decode_derive_struct(item: &DeriveInput, struct_data: &DataStruct) -> TokenStream { - let name = &item.ident; - let (impl_generics, ty_generics, where_clause) = &item.generics.split_for_impl(); - - let mut register_types = vec![]; - let mut field_names = vec![]; - let mut fixed_decodes = vec![]; - let mut decodes = vec![]; - let mut is_fixed_lens = vec![]; - let mut fixed_lens = vec![]; - - for (ty, ident, field_opts) in parse_ssz_fields(struct_data) { - let ident = match ident { - Some(ref ident) => ident, - _ => panic!( - "#[ssz(struct_behaviour = \"container\")] only supports named struct fields." - ), - }; - - field_names.push(quote! { - #ident - }); - - // Field should not be deserialized; use a `Default` impl to instantiate. - if field_opts.skip_deserializing { - decodes.push(quote! { - let #ident = <_>::default(); - }); - - fixed_decodes.push(quote! { - let #ident = <_>::default(); - }); - - continue; - } - - let is_ssz_fixed_len; - let ssz_fixed_len; - let from_ssz_bytes; - if let Some(module) = field_opts.with { - let module = quote! { #module::decode }; - - is_ssz_fixed_len = quote! { #module::is_ssz_fixed_len() }; - ssz_fixed_len = quote! { #module::ssz_fixed_len() }; - from_ssz_bytes = quote! { #module::from_ssz_bytes(slice) }; - - register_types.push(quote! { - builder.register_type_parameterized(#is_ssz_fixed_len, #ssz_fixed_len)?; - }); - decodes.push(quote! { - let #ident = decoder.decode_next_with(|slice| #module::from_ssz_bytes(slice))?; - }); - } else { - is_ssz_fixed_len = quote! { <#ty as ssz::Decode>::is_ssz_fixed_len() }; - ssz_fixed_len = quote! { <#ty as ssz::Decode>::ssz_fixed_len() }; - from_ssz_bytes = quote! { <#ty as ssz::Decode>::from_ssz_bytes(slice) }; - - register_types.push(quote! { - builder.register_type::<#ty>()?; - }); - decodes.push(quote! { - let #ident = decoder.decode_next()?; - }); - } - - fixed_decodes.push(quote! { - let #ident = { - start = end; - end = end - .checked_add(#ssz_fixed_len) - .ok_or_else(|| ssz::DecodeError::OutOfBoundsByte { - i: usize::max_value() - })?; - let slice = bytes.get(start..end) - .ok_or_else(|| ssz::DecodeError::InvalidByteLength { - len: bytes.len(), - expected: end - })?; - #from_ssz_bytes? - }; - }); - is_fixed_lens.push(is_ssz_fixed_len); - fixed_lens.push(ssz_fixed_len); - } - - let output = quote! { - impl #impl_generics ssz::Decode for #name #ty_generics #where_clause { - fn is_ssz_fixed_len() -> bool { - #( - #is_fixed_lens && - )* - true - } - - fn ssz_fixed_len() -> usize { - if ::is_ssz_fixed_len() { - let mut len: usize = 0; - #( - len = len - .checked_add(#fixed_lens) - .expect("decode ssz_fixed_len overflow"); - )* - len - } else { - ssz::BYTES_PER_LENGTH_OFFSET - } - } - - fn from_ssz_bytes(bytes: &[u8]) -> std::result::Result { - if ::is_ssz_fixed_len() { - if bytes.len() != ::ssz_fixed_len() { - return Err(ssz::DecodeError::InvalidByteLength { - len: bytes.len(), - expected: ::ssz_fixed_len(), - }); - } - - let mut start: usize = 0; - let mut end = start; - - #( - #fixed_decodes - )* - - Ok(Self { - #( - #field_names, - )* - }) - } else { - let mut builder = ssz::SszDecoderBuilder::new(bytes); - - #( - #register_types - )* - - let mut decoder = builder.build()?; - - #( - #decodes - )* - - - Ok(Self { - #( - #field_names, - )* - }) - } - } - } - }; - output.into() -} - -/// Implements `ssz::Decode` "transparently" for a `struct` with exactly one non-skipped field. -/// -/// The bytes will be decoded as if they are the inner field, without the outermost struct. The -/// outermost struct will then be applied artificially. -/// -/// ## Field attributes -/// -/// - `#[ssz(skip_deserializing)]`: during de-serialization the field will be instantiated from a -/// `Default` implementation. The decoder will assume that the field was not serialized at all -/// (e.g., if it has been serialized, an error will be raised instead of `Default` overriding it). -fn ssz_decode_derive_struct_transparent( - item: &DeriveInput, - struct_data: &DataStruct, -) -> TokenStream { - let name = &item.ident; - let (impl_generics, ty_generics, where_clause) = &item.generics.split_for_impl(); - let ssz_fields = parse_ssz_fields(struct_data); - let num_fields = ssz_fields - .iter() - .filter(|(_, _, field_opts)| !field_opts.skip_deserializing) - .count(); - - if num_fields != 1 { - panic!( - "A \"transparent\" struct must have exactly one non-skipped field ({} fields found)", - num_fields - ); - } - - let mut fields = vec![]; - let mut wrapped_type = None; - - for (i, (ty, ident, field_opts)) in ssz_fields.into_iter().enumerate() { - if let Some(name) = ident { - if field_opts.skip_deserializing { - fields.push(quote! { - #name: <_>::default(), - }); - } else { - fields.push(quote! { - #name: <_>::from_ssz_bytes(bytes)?, - }); - wrapped_type = Some(ty); - } - } else { - let index = syn::Index::from(i); - if field_opts.skip_deserializing { - fields.push(quote! { - #index:<_>::default(), - }); - } else { - fields.push(quote! { - #index:<_>::from_ssz_bytes(bytes)?, - }); - wrapped_type = Some(ty); - } - } - } - - let ty = wrapped_type.unwrap(); - - let output = quote! { - impl #impl_generics ssz::Decode for #name #ty_generics #where_clause { - fn is_ssz_fixed_len() -> bool { - <#ty as ssz::Decode>::is_ssz_fixed_len() - } - - fn ssz_fixed_len() -> usize { - <#ty as ssz::Decode>::ssz_fixed_len() - } - - fn from_ssz_bytes(bytes: &[u8]) -> std::result::Result { - Ok(Self { - #( - #fields - )* - - }) - } - } - }; - output.into() -} - -/// Derive `ssz::Decode` for an `enum` following the "union" SSZ spec. -fn ssz_decode_derive_enum_union(derive_input: &DeriveInput, enum_data: &DataEnum) -> TokenStream { - let name = &derive_input.ident; - let (impl_generics, ty_generics, where_clause) = &derive_input.generics.split_for_impl(); - - let (constructors, var_types): (Vec<_>, Vec<_>) = enum_data - .variants - .iter() - .map(|variant| { - let variant_name = &variant.ident; - - if variant.fields.len() != 1 { - panic!("ssz::Encode can only be derived for enums with 1 field per variant"); - } - - let constructor = quote! { - #name::#variant_name - }; - - let ty = &(&variant.fields).into_iter().next().unwrap().ty; - (constructor, ty) - }) - .unzip(); - - let union_selectors = compute_union_selectors(constructors.len()); - - let output = quote! { - impl #impl_generics ssz::Decode for #name #ty_generics #where_clause { - fn is_ssz_fixed_len() -> bool { - false - } - - fn from_ssz_bytes(bytes: &[u8]) -> Result { - // Sanity check to ensure the definition here does not drift from the one defined in - // `ssz`. - debug_assert_eq!(#MAX_UNION_SELECTOR, ssz::MAX_UNION_SELECTOR); - - let (selector, body) = ssz::split_union_bytes(bytes)?; - - match selector.into() { - #( - #union_selectors => { - <#var_types as ssz::Decode>::from_ssz_bytes(body).map(#constructors) - }, - )* - other => Err(ssz::DecodeError::UnionSelectorInvalid(other)) - } - } - } - }; - output.into() -} - -fn compute_union_selectors(num_variants: usize) -> Vec { - let union_selectors = (0..num_variants) - .map(|i| { - i.try_into() - .expect("union selector exceeds u8::max_value, union has too many variants") - }) - .collect::>(); - - let highest_selector = union_selectors - .last() - .copied() - .expect("0-variant union is not permitted"); - - assert!( - highest_selector <= MAX_UNION_SELECTOR, - "union selector {} exceeds limit of {}, enum has too many variants", - highest_selector, - MAX_UNION_SELECTOR - ); - - union_selectors -} diff --git a/consensus/ssz_derive/tests/tests.rs b/consensus/ssz_derive/tests/tests.rs deleted file mode 100644 index 2eeb3a48db..0000000000 --- a/consensus/ssz_derive/tests/tests.rs +++ /dev/null @@ -1,215 +0,0 @@ -use ssz::{Decode, Encode}; -use ssz_derive::{Decode, Encode}; -use std::fmt::Debug; -use std::marker::PhantomData; - -fn assert_encode(item: &T, bytes: &[u8]) { - assert_eq!(item.as_ssz_bytes(), bytes); -} - -fn assert_encode_decode(item: &T, bytes: &[u8]) { - assert_encode(item, bytes); - assert_eq!(T::from_ssz_bytes(bytes).unwrap(), *item); -} - -#[derive(PartialEq, Debug, Encode, Decode)] -#[ssz(enum_behaviour = "union")] -enum TwoFixedUnion { - U8(u8), - U16(u16), -} - -#[derive(PartialEq, Debug, Encode, Decode)] -struct TwoFixedUnionStruct { - a: TwoFixedUnion, -} - -#[test] -fn two_fixed_union() { - let eight = TwoFixedUnion::U8(1); - let sixteen = TwoFixedUnion::U16(1); - - assert_encode_decode(&eight, &[0, 1]); - assert_encode_decode(&sixteen, &[1, 1, 0]); - - assert_encode_decode(&TwoFixedUnionStruct { a: eight }, &[4, 0, 0, 0, 0, 1]); - assert_encode_decode(&TwoFixedUnionStruct { a: sixteen }, &[4, 0, 0, 0, 1, 1, 0]); -} - -#[derive(PartialEq, Debug, Encode, Decode)] -struct VariableA { - a: u8, - b: Vec, -} - -#[derive(PartialEq, Debug, Encode, Decode)] -struct VariableB { - a: Vec, - b: u8, -} - -#[derive(PartialEq, Debug, Encode)] -#[ssz(enum_behaviour = "transparent")] -enum TwoVariableTrans { - A(VariableA), - B(VariableB), -} - -#[derive(PartialEq, Debug, Encode)] -struct TwoVariableTransStruct { - a: TwoVariableTrans, -} - -#[derive(PartialEq, Debug, Encode, Decode)] -#[ssz(enum_behaviour = "union")] -enum TwoVariableUnion { - A(VariableA), - B(VariableB), -} - -#[derive(PartialEq, Debug, Encode, Decode)] -struct TwoVariableUnionStruct { - a: TwoVariableUnion, -} - -#[test] -fn two_variable_trans() { - let trans_a = TwoVariableTrans::A(VariableA { - a: 1, - b: vec![2, 3], - }); - let trans_b = TwoVariableTrans::B(VariableB { - a: vec![1, 2], - b: 3, - }); - - assert_encode(&trans_a, &[1, 5, 0, 0, 0, 2, 3]); - assert_encode(&trans_b, &[5, 0, 0, 0, 3, 1, 2]); - - assert_encode( - &TwoVariableTransStruct { a: trans_a }, - &[4, 0, 0, 0, 1, 5, 0, 0, 0, 2, 3], - ); - assert_encode( - &TwoVariableTransStruct { a: trans_b }, - &[4, 0, 0, 0, 5, 0, 0, 0, 3, 1, 2], - ); -} - -#[test] -fn two_variable_union() { - let union_a = TwoVariableUnion::A(VariableA { - a: 1, - b: vec![2, 3], - }); - let union_b = TwoVariableUnion::B(VariableB { - a: vec![1, 2], - b: 3, - }); - - assert_encode_decode(&union_a, &[0, 1, 5, 0, 0, 0, 2, 3]); - assert_encode_decode(&union_b, &[1, 5, 0, 0, 0, 3, 1, 2]); - - assert_encode_decode( - &TwoVariableUnionStruct { a: union_a }, - &[4, 0, 0, 0, 0, 1, 5, 0, 0, 0, 2, 3], - ); - assert_encode_decode( - &TwoVariableUnionStruct { a: union_b }, - &[4, 0, 0, 0, 1, 5, 0, 0, 0, 3, 1, 2], - ); -} - -#[derive(PartialEq, Debug, Encode, Decode)] -#[ssz(enum_behaviour = "union")] -enum TwoVecUnion { - A(Vec), - B(Vec), -} - -#[test] -fn two_vec_union() { - assert_encode_decode(&TwoVecUnion::A(vec![]), &[0]); - assert_encode_decode(&TwoVecUnion::B(vec![]), &[1]); - - assert_encode_decode(&TwoVecUnion::A(vec![0]), &[0, 0]); - assert_encode_decode(&TwoVecUnion::B(vec![0]), &[1, 0]); - - assert_encode_decode(&TwoVecUnion::A(vec![0, 1]), &[0, 0, 1]); - assert_encode_decode(&TwoVecUnion::B(vec![0, 1]), &[1, 0, 1]); -} - -#[derive(PartialEq, Debug, Encode, Decode)] -#[ssz(struct_behaviour = "transparent")] -struct TransparentStruct { - inner: Vec, -} - -impl TransparentStruct { - fn new(inner: u8) -> Self { - Self { inner: vec![inner] } - } -} - -#[test] -fn transparent_struct() { - assert_encode_decode(&TransparentStruct::new(42), &vec![42_u8].as_ssz_bytes()); -} - -#[derive(PartialEq, Debug, Encode, Decode)] -#[ssz(struct_behaviour = "transparent")] -struct TransparentStructSkippedField { - inner: Vec, - #[ssz(skip_serializing, skip_deserializing)] - skipped: PhantomData, -} - -impl TransparentStructSkippedField { - fn new(inner: u8) -> Self { - Self { - inner: vec![inner], - skipped: PhantomData, - } - } -} - -#[test] -fn transparent_struct_skipped_field() { - assert_encode_decode( - &TransparentStructSkippedField::new(42), - &vec![42_u8].as_ssz_bytes(), - ); -} - -#[derive(PartialEq, Debug, Encode, Decode)] -#[ssz(struct_behaviour = "transparent")] -struct TransparentStructNewType(Vec); - -#[test] -fn transparent_struct_newtype() { - assert_encode_decode( - &TransparentStructNewType(vec![42_u8]), - &vec![42_u8].as_ssz_bytes(), - ); -} - -#[derive(PartialEq, Debug, Encode, Decode)] -#[ssz(struct_behaviour = "transparent")] -struct TransparentStructNewTypeSkippedField( - Vec, - #[ssz(skip_serializing, skip_deserializing)] PhantomData, -); - -impl TransparentStructNewTypeSkippedField { - fn new(inner: Vec) -> Self { - Self(inner, PhantomData) - } -} - -#[test] -fn transparent_struct_newtype_skipped_field() { - assert_encode_decode( - &TransparentStructNewTypeSkippedField::new(vec![42_u8]), - &vec![42_u8].as_ssz_bytes(), - ); -} diff --git a/consensus/ssz_types/Cargo.toml b/consensus/ssz_types/Cargo.toml deleted file mode 100644 index 2baa8994fb..0000000000 --- a/consensus/ssz_types/Cargo.toml +++ /dev/null @@ -1,25 +0,0 @@ -[package] -name = "eth2_ssz_types" -version = "0.2.2" -authors = ["Paul Hauner "] -edition = "2021" -description = "Provides types with unique properties required for SSZ serialization and Merklization." -license = "Apache-2.0" - -[lib] -name = "ssz_types" - -[dependencies] -tree_hash = "0.4.1" -serde = "1.0.116" -serde_derive = "1.0.116" -eth2_serde_utils = "0.1.1" -eth2_ssz = "0.4.1" -typenum = "1.12.0" -arbitrary = { version = "1.0", features = ["derive"], optional = true } -derivative = "2.1.1" -smallvec = "1.8.0" - -[dev-dependencies] -serde_json = "1.0.58" -tree_hash_derive = "0.4.0" diff --git a/consensus/ssz_types/src/bitfield.rs b/consensus/ssz_types/src/bitfield.rs deleted file mode 100644 index b7bde22578..0000000000 --- a/consensus/ssz_types/src/bitfield.rs +++ /dev/null @@ -1,1332 +0,0 @@ -use crate::tree_hash::bitfield_bytes_tree_hash_root; -use crate::Error; -use core::marker::PhantomData; -use derivative::Derivative; -use eth2_serde_utils::hex::{encode as hex_encode, PrefixedHexVisitor}; -use serde::de::{Deserialize, Deserializer}; -use serde::ser::{Serialize, Serializer}; -use smallvec::{smallvec, SmallVec, ToSmallVec}; -use ssz::{Decode, Encode}; -use tree_hash::Hash256; -use typenum::Unsigned; - -/// Maximum number of bytes to store on the stack in a bitfield's `SmallVec`. -/// -/// The default of 32 bytes is enough to take us through to ~500K validators, as the byte length of -/// attestation bitfields is roughly `N // 32 slots // 64 committes // 8 bits`. -pub const SMALLVEC_LEN: usize = 32; - -/// A marker trait applied to `Variable` and `Fixed` that defines the behaviour of a `Bitfield`. -pub trait BitfieldBehaviour: Clone {} - -/// A marker struct used to declare SSZ `Variable` behaviour on a `Bitfield`. -/// -/// See the [`Bitfield`](struct.Bitfield.html) docs for usage. -#[derive(Clone, PartialEq, Eq, Debug)] -pub struct Variable { - _phantom: PhantomData, -} - -/// A marker struct used to declare SSZ `Fixed` behaviour on a `Bitfield`. -/// -/// See the [`Bitfield`](struct.Bitfield.html) docs for usage. -#[derive(Clone, PartialEq, Eq, Debug)] -pub struct Fixed { - _phantom: PhantomData, -} - -impl BitfieldBehaviour for Variable {} -impl BitfieldBehaviour for Fixed {} - -/// A heap-allocated, ordered, variable-length collection of `bool` values, limited to `N` bits. -pub type BitList = Bitfield>; - -/// A heap-allocated, ordered, fixed-length collection of `bool` values, with `N` bits. -/// -/// See [Bitfield](struct.Bitfield.html) documentation. -pub type BitVector = Bitfield>; - -/// A heap-allocated, ordered, fixed-length, collection of `bool` values. Use of -/// [`BitList`](type.BitList.html) or [`BitVector`](type.BitVector.html) type aliases is preferred -/// over direct use of this struct. -/// -/// The `T` type parameter is used to define length behaviour with the `Variable` or `Fixed` marker -/// structs. -/// -/// The length of the Bitfield is set at instantiation (i.e., runtime, not compile time). However, -/// use with a `Variable` sets a type-level (i.e., compile-time) maximum length and `Fixed` -/// provides a type-level fixed length. -/// -/// ## Example -/// -/// The example uses the following crate-level type aliases: -/// -/// - `BitList` is an alias for `Bitfield>` -/// - `BitVector` is an alias for `Bitfield>` -/// -/// ``` -/// use ssz_types::{BitVector, BitList, typenum}; -/// -/// // `BitList` has a type-level maximum length. The length of the list is specified at runtime -/// // and it must be less than or equal to `N`. After instantiation, `BitList` cannot grow or -/// // shrink. -/// type BitList8 = BitList; -/// -/// // Creating a `BitList` with a larger-than-`N` capacity returns `None`. -/// assert!(BitList8::with_capacity(9).is_err()); -/// -/// let mut bitlist = BitList8::with_capacity(4).unwrap(); // `BitList` permits a capacity of less than the maximum. -/// assert!(bitlist.set(3, true).is_ok()); // Setting inside the instantiation capacity is permitted. -/// assert!(bitlist.set(5, true).is_err()); // Setting outside that capacity is not. -/// -/// // `BitVector` has a type-level fixed length. Unlike `BitList`, it cannot be instantiated with a custom length -/// // or grow/shrink. -/// type BitVector8 = BitVector; -/// -/// let mut bitvector = BitVector8::new(); -/// assert_eq!(bitvector.len(), 8); // `BitVector` length is fixed at the type-level. -/// assert!(bitvector.set(7, true).is_ok()); // Setting inside the capacity is permitted. -/// assert!(bitvector.set(9, true).is_err()); // Setting outside the capacity is not. -/// -/// ``` -/// -/// ## Note -/// -/// The internal representation of the bitfield is the same as that required by SSZ. The lowest -/// byte (by `Vec` index) stores the lowest bit-indices and the right-most bit stores the lowest -/// bit-index. E.g., `smallvec![0b0000_0001, 0b0000_0010]` has bits `0, 9` set. -#[derive(Clone, Debug, Derivative)] -#[derivative(PartialEq, Eq, Hash(bound = ""))] -pub struct Bitfield { - bytes: SmallVec<[u8; SMALLVEC_LEN]>, - len: usize, - _phantom: PhantomData, -} - -impl Bitfield> { - /// Instantiate with capacity for `num_bits` boolean values. The length cannot be grown or - /// shrunk after instantiation. - /// - /// All bits are initialized to `false`. - /// - /// Returns `None` if `num_bits > N`. - pub fn with_capacity(num_bits: usize) -> Result { - if num_bits <= N::to_usize() { - Ok(Self { - bytes: smallvec![0; bytes_for_bit_len(num_bits)], - len: num_bits, - _phantom: PhantomData, - }) - } else { - Err(Error::OutOfBounds { - i: Self::max_len(), - len: Self::max_len(), - }) - } - } - - /// Equal to `N` regardless of the value supplied to `with_capacity`. - pub fn max_len() -> usize { - N::to_usize() - } - - /// Consumes `self`, returning a serialized representation. - /// - /// The output is faithful to the SSZ encoding of `self`, such that a leading `true` bit is - /// used to indicate the length of the bitfield. - /// - /// ## Example - /// ``` - /// use ssz_types::{BitList, typenum}; - /// use smallvec::SmallVec; - /// - /// type BitList8 = BitList; - /// - /// let b = BitList8::with_capacity(4).unwrap(); - /// - /// assert_eq!(b.into_bytes(), SmallVec::from_buf([0b0001_0000])); - /// ``` - pub fn into_bytes(self) -> SmallVec<[u8; SMALLVEC_LEN]> { - let len = self.len(); - let mut bytes = self.bytes; - - bytes.resize(bytes_for_bit_len(len + 1), 0); - - let mut bitfield: Bitfield> = Bitfield::from_raw_bytes(bytes, len + 1) - .unwrap_or_else(|_| { - unreachable!( - "Bitfield with {} bytes must have enough capacity for {} bits.", - bytes_for_bit_len(len + 1), - len + 1 - ) - }); - bitfield - .set(len, true) - .expect("len must be in bounds for bitfield."); - - bitfield.bytes - } - - /// Instantiates a new instance from `bytes`. Consumes the same format that `self.into_bytes()` - /// produces (SSZ). - /// - /// Returns `None` if `bytes` are not a valid encoding. - pub fn from_bytes(bytes: SmallVec<[u8; SMALLVEC_LEN]>) -> Result { - let bytes_len = bytes.len(); - let mut initial_bitfield: Bitfield> = { - let num_bits = bytes.len() * 8; - Bitfield::from_raw_bytes(bytes, num_bits)? - }; - - let len = initial_bitfield - .highest_set_bit() - .ok_or(Error::MissingLengthInformation)?; - - // The length bit should be in the last byte, or else it means we have too many bytes. - if len / 8 + 1 != bytes_len { - return Err(Error::InvalidByteCount { - given: bytes_len, - expected: len / 8 + 1, - }); - } - - if len <= Self::max_len() { - initial_bitfield - .set(len, false) - .expect("Bit has been confirmed to exist"); - - let mut bytes = initial_bitfield.into_raw_bytes(); - - bytes.truncate(bytes_for_bit_len(len)); - - Self::from_raw_bytes(bytes, len) - } else { - Err(Error::OutOfBounds { - i: Self::max_len(), - len: Self::max_len(), - }) - } - } - - /// Compute the intersection of two BitLists of potentially different lengths. - /// - /// Return a new BitList with length equal to the shorter of the two inputs. - pub fn intersection(&self, other: &Self) -> Self { - let min_len = std::cmp::min(self.len(), other.len()); - let mut result = Self::with_capacity(min_len).expect("min len always less than N"); - // Bitwise-and the bytes together, starting from the left of each vector. This takes care - // of masking out any entries beyond `min_len` as well, assuming the bitfield doesn't - // contain any set bits beyond its length. - for i in 0..result.bytes.len() { - result.bytes[i] = self.bytes[i] & other.bytes[i]; - } - result - } - - /// Compute the union of two BitLists of potentially different lengths. - /// - /// Return a new BitList with length equal to the longer of the two inputs. - pub fn union(&self, other: &Self) -> Self { - let max_len = std::cmp::max(self.len(), other.len()); - let mut result = Self::with_capacity(max_len).expect("max len always less than N"); - for i in 0..result.bytes.len() { - result.bytes[i] = - self.bytes.get(i).copied().unwrap_or(0) | other.bytes.get(i).copied().unwrap_or(0); - } - result - } -} - -impl Bitfield> { - /// Instantiate a new `Bitfield` with a fixed-length of `N` bits. - /// - /// All bits are initialized to `false`. - pub fn new() -> Self { - Self { - bytes: smallvec![0; bytes_for_bit_len(Self::capacity())], - len: Self::capacity(), - _phantom: PhantomData, - } - } - - /// Returns `N`, the number of bits in `Self`. - pub fn capacity() -> usize { - N::to_usize() - } - - /// Consumes `self`, returning a serialized representation. - /// - /// The output is faithful to the SSZ encoding of `self`. - /// - /// ## Example - /// ``` - /// use ssz_types::{BitVector, typenum}; - /// use smallvec::SmallVec; - /// - /// type BitVector4 = BitVector; - /// - /// assert_eq!(BitVector4::new().into_bytes(), SmallVec::from_buf([0b0000_0000])); - /// ``` - pub fn into_bytes(self) -> SmallVec<[u8; SMALLVEC_LEN]> { - self.into_raw_bytes() - } - - /// Instantiates a new instance from `bytes`. Consumes the same format that `self.into_bytes()` - /// produces (SSZ). - /// - /// Returns `None` if `bytes` are not a valid encoding. - pub fn from_bytes(bytes: SmallVec<[u8; SMALLVEC_LEN]>) -> Result { - Self::from_raw_bytes(bytes, Self::capacity()) - } - - /// Compute the intersection of two fixed-length `Bitfield`s. - /// - /// Return a new fixed-length `Bitfield`. - pub fn intersection(&self, other: &Self) -> Self { - let mut result = Self::new(); - // Bitwise-and the bytes together, starting from the left of each vector. This takes care - // of masking out any entries beyond `min_len` as well, assuming the bitfield doesn't - // contain any set bits beyond its length. - for i in 0..result.bytes.len() { - result.bytes[i] = self.bytes[i] & other.bytes[i]; - } - result - } - - /// Compute the union of two fixed-length `Bitfield`s. - /// - /// Return a new fixed-length `Bitfield`. - pub fn union(&self, other: &Self) -> Self { - let mut result = Self::new(); - for i in 0..result.bytes.len() { - result.bytes[i] = - self.bytes.get(i).copied().unwrap_or(0) | other.bytes.get(i).copied().unwrap_or(0); - } - result - } -} - -impl Default for Bitfield> { - fn default() -> Self { - Self::new() - } -} - -impl Bitfield { - /// Sets the `i`'th bit to `value`. - /// - /// Returns `None` if `i` is out-of-bounds of `self`. - pub fn set(&mut self, i: usize, value: bool) -> Result<(), Error> { - let len = self.len; - - if i < len { - let byte = self - .bytes - .get_mut(i / 8) - .ok_or(Error::OutOfBounds { i, len })?; - - if value { - *byte |= 1 << (i % 8) - } else { - *byte &= !(1 << (i % 8)) - } - - Ok(()) - } else { - Err(Error::OutOfBounds { i, len: self.len }) - } - } - - /// Returns the value of the `i`'th bit. - /// - /// Returns `Error` if `i` is out-of-bounds of `self`. - pub fn get(&self, i: usize) -> Result { - if i < self.len { - let byte = self - .bytes - .get(i / 8) - .ok_or(Error::OutOfBounds { i, len: self.len })?; - - Ok(*byte & 1 << (i % 8) > 0) - } else { - Err(Error::OutOfBounds { i, len: self.len }) - } - } - - /// Returns the number of bits stored in `self`. - pub fn len(&self) -> usize { - self.len - } - - /// Returns `true` if `self.len() == 0`. - pub fn is_empty(&self) -> bool { - self.len == 0 - } - - /// Returns the underlying bytes representation of the bitfield. - pub fn into_raw_bytes(self) -> SmallVec<[u8; SMALLVEC_LEN]> { - self.bytes - } - - /// Returns a view into the underlying bytes representation of the bitfield. - pub fn as_slice(&self) -> &[u8] { - &self.bytes - } - - /// Instantiates from the given `bytes`, which are the same format as output from - /// `self.into_raw_bytes()`. - /// - /// Returns `None` if: - /// - /// - `bytes` is not the minimal required bytes to represent a bitfield of `bit_len` bits. - /// - `bit_len` is not a multiple of 8 and `bytes` contains set bits that are higher than, or - /// equal to `bit_len`. - fn from_raw_bytes(bytes: SmallVec<[u8; SMALLVEC_LEN]>, bit_len: usize) -> Result { - if bit_len == 0 { - if bytes.len() == 1 && bytes[0] == 0 { - // A bitfield with `bit_len` 0 can only be represented by a single zero byte. - Ok(Self { - bytes, - len: 0, - _phantom: PhantomData, - }) - } else { - Err(Error::ExcessBits) - } - } else if bytes.len() != bytes_for_bit_len(bit_len) { - // The number of bytes must be the minimum required to represent `bit_len`. - Err(Error::InvalidByteCount { - given: bytes.len(), - expected: bytes_for_bit_len(bit_len), - }) - } else { - // Ensure there are no bits higher than `bit_len` that are set to true. - let (mask, _) = u8::max_value().overflowing_shr(8 - (bit_len as u32 % 8)); - - if (bytes.last().expect("Guarded against empty bytes") & !mask) == 0 { - Ok(Self { - bytes, - len: bit_len, - _phantom: PhantomData, - }) - } else { - Err(Error::ExcessBits) - } - } - } - - /// Returns the `Some(i)` where `i` is the highest index with a set bit. Returns `None` if - /// there are no set bits. - pub fn highest_set_bit(&self) -> Option { - self.bytes - .iter() - .enumerate() - .rev() - .find(|(_, byte)| **byte > 0) - .map(|(i, byte)| i * 8 + 7 - byte.leading_zeros() as usize) - } - - /// Returns an iterator across bitfield `bool` values, starting at the lowest index. - pub fn iter(&self) -> BitIter<'_, T> { - BitIter { - bitfield: self, - i: 0, - } - } - - /// Returns true if no bits are set. - pub fn is_zero(&self) -> bool { - self.bytes.iter().all(|byte| *byte == 0) - } - - /// Returns the number of bits that are set to `true`. - pub fn num_set_bits(&self) -> usize { - self.bytes - .iter() - .map(|byte| byte.count_ones() as usize) - .sum() - } - - /// Compute the difference of this Bitfield and another of potentially different length. - pub fn difference(&self, other: &Self) -> Self { - let mut result = self.clone(); - result.difference_inplace(other); - result - } - - /// Compute the difference of this Bitfield and another of potentially different length. - pub fn difference_inplace(&mut self, other: &Self) { - let min_byte_len = std::cmp::min(self.bytes.len(), other.bytes.len()); - - for i in 0..min_byte_len { - self.bytes[i] &= !other.bytes[i]; - } - } - - /// Shift the bits to higher indices, filling the lower indices with zeroes. - /// - /// The amount to shift by, `n`, must be less than or equal to `self.len()`. - pub fn shift_up(&mut self, n: usize) -> Result<(), Error> { - if n <= self.len() { - // Shift the bits up (starting from the high indices to avoid overwriting) - for i in (n..self.len()).rev() { - self.set(i, self.get(i - n)?)?; - } - // Zero the low bits - for i in 0..n { - self.set(i, false).unwrap(); - } - Ok(()) - } else { - Err(Error::OutOfBounds { - i: n, - len: self.len(), - }) - } - } -} - -/// Returns the minimum required bytes to represent a given number of bits. -/// -/// `bit_len == 0` requires a single byte. -fn bytes_for_bit_len(bit_len: usize) -> usize { - std::cmp::max(1, (bit_len + 7) / 8) -} - -/// An iterator over the bits in a `Bitfield`. -pub struct BitIter<'a, T> { - bitfield: &'a Bitfield, - i: usize, -} - -impl<'a, T: BitfieldBehaviour> Iterator for BitIter<'a, T> { - type Item = bool; - - fn next(&mut self) -> Option { - let res = self.bitfield.get(self.i).ok()?; - self.i += 1; - Some(res) - } -} - -impl Encode for Bitfield> { - fn is_ssz_fixed_len() -> bool { - false - } - - fn ssz_bytes_len(&self) -> usize { - // We could likely do better than turning this into bytes and reading the length, however - // it is kept this way for simplicity. - self.clone().into_bytes().len() - } - - fn ssz_append(&self, buf: &mut Vec) { - buf.extend_from_slice(&self.clone().into_bytes()) - } -} - -impl Decode for Bitfield> { - fn is_ssz_fixed_len() -> bool { - false - } - - fn from_ssz_bytes(bytes: &[u8]) -> Result { - Self::from_bytes(bytes.to_smallvec()).map_err(|e| { - ssz::DecodeError::BytesInvalid(format!("BitList failed to decode: {:?}", e)) - }) - } -} - -impl Encode for Bitfield> { - fn is_ssz_fixed_len() -> bool { - true - } - - fn ssz_bytes_len(&self) -> usize { - self.as_slice().len() - } - - fn ssz_fixed_len() -> usize { - bytes_for_bit_len(N::to_usize()) - } - - fn ssz_append(&self, buf: &mut Vec) { - buf.extend_from_slice(&self.clone().into_bytes()) - } -} - -impl Decode for Bitfield> { - fn is_ssz_fixed_len() -> bool { - true - } - - fn ssz_fixed_len() -> usize { - bytes_for_bit_len(N::to_usize()) - } - - fn from_ssz_bytes(bytes: &[u8]) -> Result { - Self::from_bytes(bytes.to_smallvec()).map_err(|e| { - ssz::DecodeError::BytesInvalid(format!("BitVector failed to decode: {:?}", e)) - }) - } -} - -impl Serialize for Bitfield> { - /// Serde serialization is compliant with the Ethereum YAML test format. - fn serialize(&self, serializer: S) -> Result - where - S: Serializer, - { - serializer.serialize_str(&hex_encode(self.as_ssz_bytes())) - } -} - -impl<'de, N: Unsigned + Clone> Deserialize<'de> for Bitfield> { - /// Serde serialization is compliant with the Ethereum YAML test format. - fn deserialize(deserializer: D) -> Result - where - D: Deserializer<'de>, - { - let bytes = deserializer.deserialize_str(PrefixedHexVisitor)?; - Self::from_ssz_bytes(&bytes) - .map_err(|e| serde::de::Error::custom(format!("Bitfield {:?}", e))) - } -} - -impl Serialize for Bitfield> { - /// Serde serialization is compliant with the Ethereum YAML test format. - fn serialize(&self, serializer: S) -> Result - where - S: Serializer, - { - serializer.serialize_str(&hex_encode(self.as_ssz_bytes())) - } -} - -impl<'de, N: Unsigned + Clone> Deserialize<'de> for Bitfield> { - /// Serde serialization is compliant with the Ethereum YAML test format. - fn deserialize(deserializer: D) -> Result - where - D: Deserializer<'de>, - { - let bytes = deserializer.deserialize_str(PrefixedHexVisitor)?; - Self::from_ssz_bytes(&bytes) - .map_err(|e| serde::de::Error::custom(format!("Bitfield {:?}", e))) - } -} - -impl tree_hash::TreeHash for Bitfield> { - fn tree_hash_type() -> tree_hash::TreeHashType { - tree_hash::TreeHashType::List - } - - fn tree_hash_packed_encoding(&self) -> tree_hash::PackedEncoding { - unreachable!("List should never be packed.") - } - - fn tree_hash_packing_factor() -> usize { - unreachable!("List should never be packed.") - } - - fn tree_hash_root(&self) -> Hash256 { - // Note: we use `as_slice` because it does _not_ have the length-delimiting bit set (or - // present). - let root = bitfield_bytes_tree_hash_root::(self.as_slice()); - tree_hash::mix_in_length(&root, self.len()) - } -} - -impl tree_hash::TreeHash for Bitfield> { - fn tree_hash_type() -> tree_hash::TreeHashType { - tree_hash::TreeHashType::Vector - } - - fn tree_hash_packed_encoding(&self) -> tree_hash::PackedEncoding { - unreachable!("Vector should never be packed.") - } - - fn tree_hash_packing_factor() -> usize { - unreachable!("Vector should never be packed.") - } - - fn tree_hash_root(&self) -> Hash256 { - bitfield_bytes_tree_hash_root::(self.as_slice()) - } -} - -#[cfg(feature = "arbitrary")] -impl arbitrary::Arbitrary<'_> for Bitfield> { - fn arbitrary(u: &mut arbitrary::Unstructured<'_>) -> arbitrary::Result { - let size = N::to_usize(); - let mut vec = smallvec![0u8; size]; - u.fill_buffer(&mut vec)?; - Self::from_bytes(vec).map_err(|_| arbitrary::Error::IncorrectFormat) - } -} - -#[cfg(feature = "arbitrary")] -impl arbitrary::Arbitrary<'_> for Bitfield> { - fn arbitrary(u: &mut arbitrary::Unstructured<'_>) -> arbitrary::Result { - let max_size = N::to_usize(); - let rand = usize::arbitrary(u)?; - let size = std::cmp::min(rand, max_size); - let mut vec = smallvec![0u8; size]; - u.fill_buffer(&mut vec)?; - Self::from_bytes(vec).map_err(|_| arbitrary::Error::IncorrectFormat) - } -} - -#[cfg(test)] -mod bitvector { - use super::*; - use crate::BitVector; - - pub type BitVector0 = BitVector; - pub type BitVector1 = BitVector; - pub type BitVector4 = BitVector; - pub type BitVector8 = BitVector; - pub type BitVector16 = BitVector; - pub type BitVector64 = BitVector; - - #[test] - fn ssz_encode() { - assert_eq!(BitVector0::new().as_ssz_bytes(), vec![0b0000_0000]); - assert_eq!(BitVector1::new().as_ssz_bytes(), vec![0b0000_0000]); - assert_eq!(BitVector4::new().as_ssz_bytes(), vec![0b0000_0000]); - assert_eq!(BitVector8::new().as_ssz_bytes(), vec![0b0000_0000]); - assert_eq!( - BitVector16::new().as_ssz_bytes(), - vec![0b0000_0000, 0b0000_0000] - ); - - let mut b = BitVector8::new(); - for i in 0..8 { - b.set(i, true).unwrap(); - } - assert_eq!(b.as_ssz_bytes(), vec![255]); - - let mut b = BitVector4::new(); - for i in 0..4 { - b.set(i, true).unwrap(); - } - assert_eq!(b.as_ssz_bytes(), vec![0b0000_1111]); - } - - #[test] - fn ssz_decode() { - assert!(BitVector0::from_ssz_bytes(&[0b0000_0000]).is_ok()); - assert!(BitVector0::from_ssz_bytes(&[0b0000_0001]).is_err()); - assert!(BitVector0::from_ssz_bytes(&[0b0000_0010]).is_err()); - - assert!(BitVector1::from_ssz_bytes(&[0b0000_0001]).is_ok()); - assert!(BitVector1::from_ssz_bytes(&[0b0000_0010]).is_err()); - assert!(BitVector1::from_ssz_bytes(&[0b0000_0100]).is_err()); - assert!(BitVector1::from_ssz_bytes(&[0b0000_0000, 0b0000_0000]).is_err()); - - assert!(BitVector8::from_ssz_bytes(&[0b0000_0000]).is_ok()); - assert!(BitVector8::from_ssz_bytes(&[1, 0b0000_0000]).is_err()); - assert!(BitVector8::from_ssz_bytes(&[0b0000_0000, 1]).is_err()); - assert!(BitVector8::from_ssz_bytes(&[0b0000_0001]).is_ok()); - assert!(BitVector8::from_ssz_bytes(&[0b0000_0010]).is_ok()); - assert!(BitVector8::from_ssz_bytes(&[0b0000_0100, 0b0000_0001]).is_err()); - assert!(BitVector8::from_ssz_bytes(&[0b0000_0100, 0b0000_0010]).is_err()); - assert!(BitVector8::from_ssz_bytes(&[0b0000_0100, 0b0000_0100]).is_err()); - - assert!(BitVector16::from_ssz_bytes(&[0b0000_0000]).is_err()); - assert!(BitVector16::from_ssz_bytes(&[0b0000_0000, 0b0000_0000]).is_ok()); - assert!(BitVector16::from_ssz_bytes(&[1, 0b0000_0000, 0b0000_0000]).is_err()); - } - - #[test] - fn intersection() { - let a = BitVector16::from_raw_bytes(smallvec![0b1100, 0b0001], 16).unwrap(); - let b = BitVector16::from_raw_bytes(smallvec![0b1011, 0b1001], 16).unwrap(); - let c = BitVector16::from_raw_bytes(smallvec![0b1000, 0b0001], 16).unwrap(); - - assert_eq!(a.intersection(&b), c); - assert_eq!(b.intersection(&a), c); - assert_eq!(a.intersection(&c), c); - assert_eq!(b.intersection(&c), c); - assert_eq!(a.intersection(&a), a); - assert_eq!(b.intersection(&b), b); - assert_eq!(c.intersection(&c), c); - } - - #[test] - fn intersection_diff_length() { - let a = BitVector16::from_bytes(smallvec![0b0010_1110, 0b0010_1011]).unwrap(); - let b = BitVector16::from_bytes(smallvec![0b0010_1101, 0b0000_0001]).unwrap(); - let c = BitVector16::from_bytes(smallvec![0b0010_1100, 0b0000_0001]).unwrap(); - - assert_eq!(a.len(), 16); - assert_eq!(b.len(), 16); - assert_eq!(c.len(), 16); - assert_eq!(a.intersection(&b), c); - assert_eq!(b.intersection(&a), c); - } - - #[test] - fn union() { - let a = BitVector16::from_raw_bytes(smallvec![0b1100, 0b0001], 16).unwrap(); - let b = BitVector16::from_raw_bytes(smallvec![0b1011, 0b1001], 16).unwrap(); - let c = BitVector16::from_raw_bytes(smallvec![0b1111, 0b1001], 16).unwrap(); - - assert_eq!(a.union(&b), c); - assert_eq!(b.union(&a), c); - assert_eq!(a.union(&a), a); - assert_eq!(b.union(&b), b); - assert_eq!(c.union(&c), c); - } - - #[test] - fn union_diff_length() { - let a = BitVector16::from_bytes(smallvec![0b0010_1011, 0b0010_1110]).unwrap(); - let b = BitVector16::from_bytes(smallvec![0b0000_0001, 0b0010_1101]).unwrap(); - let c = BitVector16::from_bytes(smallvec![0b0010_1011, 0b0010_1111]).unwrap(); - - assert_eq!(a.len(), c.len()); - assert_eq!(a.union(&b), c); - assert_eq!(b.union(&a), c); - } - - #[test] - fn ssz_round_trip() { - assert_round_trip(BitVector0::new()); - - let mut b = BitVector1::new(); - b.set(0, true).unwrap(); - assert_round_trip(b); - - let mut b = BitVector8::new(); - for j in 0..8 { - if j % 2 == 0 { - b.set(j, true).unwrap(); - } - } - assert_round_trip(b); - - let mut b = BitVector8::new(); - for j in 0..8 { - b.set(j, true).unwrap(); - } - assert_round_trip(b); - - let mut b = BitVector16::new(); - for j in 0..16 { - if j % 2 == 0 { - b.set(j, true).unwrap(); - } - } - assert_round_trip(b); - - let mut b = BitVector16::new(); - for j in 0..16 { - b.set(j, true).unwrap(); - } - assert_round_trip(b); - } - - fn assert_round_trip(t: T) { - assert_eq!(T::from_ssz_bytes(&t.as_ssz_bytes()).unwrap(), t); - } - - #[test] - fn ssz_bytes_len() { - for i in 0..64 { - let mut bitfield = BitVector64::new(); - for j in 0..i { - bitfield.set(j, true).expect("should set bit in bounds"); - } - let bytes = bitfield.as_ssz_bytes(); - assert_eq!(bitfield.ssz_bytes_len(), bytes.len(), "i = {}", i); - } - } - - #[test] - fn excess_bits_nimbus() { - let bad = vec![0b0001_1111]; - - assert!(BitVector4::from_ssz_bytes(&bad).is_err()); - } - - // Ensure that stack size of a BitVector is manageable. - #[test] - fn size_of() { - assert_eq!(std::mem::size_of::(), SMALLVEC_LEN + 24); - } -} - -#[cfg(test)] -#[allow(clippy::cognitive_complexity)] -mod bitlist { - use super::*; - use crate::BitList; - - pub type BitList0 = BitList; - pub type BitList1 = BitList; - pub type BitList8 = BitList; - pub type BitList16 = BitList; - pub type BitList1024 = BitList; - - #[test] - fn ssz_encode() { - assert_eq!( - BitList0::with_capacity(0).unwrap().as_ssz_bytes(), - vec![0b0000_0001], - ); - - assert_eq!( - BitList1::with_capacity(0).unwrap().as_ssz_bytes(), - vec![0b0000_0001], - ); - - assert_eq!( - BitList1::with_capacity(1).unwrap().as_ssz_bytes(), - vec![0b0000_0010], - ); - - assert_eq!( - BitList8::with_capacity(8).unwrap().as_ssz_bytes(), - vec![0b0000_0000, 0b0000_0001], - ); - - assert_eq!( - BitList8::with_capacity(7).unwrap().as_ssz_bytes(), - vec![0b1000_0000] - ); - - let mut b = BitList8::with_capacity(8).unwrap(); - for i in 0..8 { - b.set(i, true).unwrap(); - } - assert_eq!(b.as_ssz_bytes(), vec![255, 0b0000_0001]); - - let mut b = BitList8::with_capacity(8).unwrap(); - for i in 0..4 { - b.set(i, true).unwrap(); - } - assert_eq!(b.as_ssz_bytes(), vec![0b0000_1111, 0b0000_0001]); - - assert_eq!( - BitList16::with_capacity(16).unwrap().as_ssz_bytes(), - vec![0b0000_0000, 0b0000_0000, 0b0000_0001] - ); - } - - #[test] - fn ssz_decode() { - assert!(BitList0::from_ssz_bytes(&[]).is_err()); - assert!(BitList1::from_ssz_bytes(&[]).is_err()); - assert!(BitList8::from_ssz_bytes(&[]).is_err()); - assert!(BitList16::from_ssz_bytes(&[]).is_err()); - - assert!(BitList0::from_ssz_bytes(&[0b0000_0000]).is_err()); - assert!(BitList1::from_ssz_bytes(&[0b0000_0000, 0b0000_0000]).is_err()); - assert!(BitList8::from_ssz_bytes(&[0b0000_0000]).is_err()); - assert!(BitList16::from_ssz_bytes(&[0b0000_0000]).is_err()); - - assert!(BitList0::from_ssz_bytes(&[0b0000_0001]).is_ok()); - assert!(BitList0::from_ssz_bytes(&[0b0000_0010]).is_err()); - - assert!(BitList1::from_ssz_bytes(&[0b0000_0001]).is_ok()); - assert!(BitList1::from_ssz_bytes(&[0b0000_0010]).is_ok()); - assert!(BitList1::from_ssz_bytes(&[0b0000_0100]).is_err()); - - assert!(BitList8::from_ssz_bytes(&[0b0000_0001]).is_ok()); - assert!(BitList8::from_ssz_bytes(&[0b0000_0010]).is_ok()); - assert!(BitList8::from_ssz_bytes(&[0b0000_0001, 0b0000_0001]).is_ok()); - assert!(BitList8::from_ssz_bytes(&[0b0000_0001, 0b0000_0010]).is_err()); - assert!(BitList8::from_ssz_bytes(&[0b0000_0001, 0b0000_0100]).is_err()); - } - - #[test] - fn ssz_decode_extra_bytes() { - assert!(BitList0::from_ssz_bytes(&[0b0000_0001, 0b0000_0000]).is_err()); - assert!(BitList1::from_ssz_bytes(&[0b0000_0001, 0b0000_0000]).is_err()); - assert!(BitList8::from_ssz_bytes(&[0b0000_0001, 0b0000_0000]).is_err()); - assert!(BitList16::from_ssz_bytes(&[0b0000_0001, 0b0000_0000]).is_err()); - assert!(BitList1024::from_ssz_bytes(&[0b1000_0000, 0]).is_err()); - assert!(BitList1024::from_ssz_bytes(&[0b1000_0000, 0, 0]).is_err()); - assert!(BitList1024::from_ssz_bytes(&[0b1000_0000, 0, 0, 0, 0]).is_err()); - } - - #[test] - fn ssz_round_trip() { - assert_round_trip(BitList0::with_capacity(0).unwrap()); - - for i in 0..2 { - assert_round_trip(BitList1::with_capacity(i).unwrap()); - } - for i in 0..9 { - assert_round_trip(BitList8::with_capacity(i).unwrap()); - } - for i in 0..17 { - assert_round_trip(BitList16::with_capacity(i).unwrap()); - } - - let mut b = BitList1::with_capacity(1).unwrap(); - b.set(0, true).unwrap(); - assert_round_trip(b); - - for i in 0..8 { - let mut b = BitList8::with_capacity(i).unwrap(); - for j in 0..i { - if j % 2 == 0 { - b.set(j, true).unwrap(); - } - } - assert_round_trip(b); - - let mut b = BitList8::with_capacity(i).unwrap(); - for j in 0..i { - b.set(j, true).unwrap(); - } - assert_round_trip(b); - } - - for i in 0..16 { - let mut b = BitList16::with_capacity(i).unwrap(); - for j in 0..i { - if j % 2 == 0 { - b.set(j, true).unwrap(); - } - } - assert_round_trip(b); - - let mut b = BitList16::with_capacity(i).unwrap(); - for j in 0..i { - b.set(j, true).unwrap(); - } - assert_round_trip(b); - } - } - - fn assert_round_trip(t: T) { - assert_eq!(T::from_ssz_bytes(&t.as_ssz_bytes()).unwrap(), t); - } - - #[test] - fn from_raw_bytes() { - assert!(BitList1024::from_raw_bytes(smallvec![0b0000_0000], 0).is_ok()); - assert!(BitList1024::from_raw_bytes(smallvec![0b0000_0001], 1).is_ok()); - assert!(BitList1024::from_raw_bytes(smallvec![0b0000_0011], 2).is_ok()); - assert!(BitList1024::from_raw_bytes(smallvec![0b0000_0111], 3).is_ok()); - assert!(BitList1024::from_raw_bytes(smallvec![0b0000_1111], 4).is_ok()); - assert!(BitList1024::from_raw_bytes(smallvec![0b0001_1111], 5).is_ok()); - assert!(BitList1024::from_raw_bytes(smallvec![0b0011_1111], 6).is_ok()); - assert!(BitList1024::from_raw_bytes(smallvec![0b0111_1111], 7).is_ok()); - assert!(BitList1024::from_raw_bytes(smallvec![0b1111_1111], 8).is_ok()); - - assert!(BitList1024::from_raw_bytes(smallvec![0b1111_1111, 0b0000_0001], 9).is_ok()); - assert!(BitList1024::from_raw_bytes(smallvec![0b1111_1111, 0b0000_0011], 10).is_ok()); - assert!(BitList1024::from_raw_bytes(smallvec![0b1111_1111, 0b0000_0111], 11).is_ok()); - assert!(BitList1024::from_raw_bytes(smallvec![0b1111_1111, 0b0000_1111], 12).is_ok()); - assert!(BitList1024::from_raw_bytes(smallvec![0b1111_1111, 0b0001_1111], 13).is_ok()); - assert!(BitList1024::from_raw_bytes(smallvec![0b1111_1111, 0b0011_1111], 14).is_ok()); - assert!(BitList1024::from_raw_bytes(smallvec![0b1111_1111, 0b0111_1111], 15).is_ok()); - assert!(BitList1024::from_raw_bytes(smallvec![0b1111_1111, 0b1111_1111], 16).is_ok()); - - for i in 0..8 { - assert!(BitList1024::from_raw_bytes(smallvec![], i).is_err()); - assert!(BitList1024::from_raw_bytes(smallvec![0b1111_1111], i).is_err()); - assert!(BitList1024::from_raw_bytes(smallvec![0b0000_0000, 0b1111_1110], i).is_err()); - } - - assert!(BitList1024::from_raw_bytes(smallvec![0b0000_0001], 0).is_err()); - - assert!(BitList1024::from_raw_bytes(smallvec![0b0000_0001], 0).is_err()); - assert!(BitList1024::from_raw_bytes(smallvec![0b0000_0011], 1).is_err()); - assert!(BitList1024::from_raw_bytes(smallvec![0b0000_0111], 2).is_err()); - assert!(BitList1024::from_raw_bytes(smallvec![0b0000_1111], 3).is_err()); - assert!(BitList1024::from_raw_bytes(smallvec![0b0001_1111], 4).is_err()); - assert!(BitList1024::from_raw_bytes(smallvec![0b0011_1111], 5).is_err()); - assert!(BitList1024::from_raw_bytes(smallvec![0b0111_1111], 6).is_err()); - assert!(BitList1024::from_raw_bytes(smallvec![0b1111_1111], 7).is_err()); - - assert!(BitList1024::from_raw_bytes(smallvec![0b1111_1111, 0b0000_0001], 8).is_err()); - assert!(BitList1024::from_raw_bytes(smallvec![0b1111_1111, 0b0000_0011], 9).is_err()); - assert!(BitList1024::from_raw_bytes(smallvec![0b1111_1111, 0b0000_0111], 10).is_err()); - assert!(BitList1024::from_raw_bytes(smallvec![0b1111_1111, 0b0000_1111], 11).is_err()); - assert!(BitList1024::from_raw_bytes(smallvec![0b1111_1111, 0b0001_1111], 12).is_err()); - assert!(BitList1024::from_raw_bytes(smallvec![0b1111_1111, 0b0011_1111], 13).is_err()); - assert!(BitList1024::from_raw_bytes(smallvec![0b1111_1111, 0b0111_1111], 14).is_err()); - assert!(BitList1024::from_raw_bytes(smallvec![0b1111_1111, 0b1111_1111], 15).is_err()); - } - - fn test_set_unset(num_bits: usize) { - let mut bitfield = BitList1024::with_capacity(num_bits).unwrap(); - - for i in 0..=num_bits { - if i < num_bits { - // Starts as false - assert_eq!(bitfield.get(i), Ok(false)); - // Can be set true. - assert!(bitfield.set(i, true).is_ok()); - assert_eq!(bitfield.get(i), Ok(true)); - // Can be set false - assert!(bitfield.set(i, false).is_ok()); - assert_eq!(bitfield.get(i), Ok(false)); - } else { - assert!(bitfield.get(i).is_err()); - assert!(bitfield.set(i, true).is_err()); - assert!(bitfield.get(i).is_err()); - } - } - } - - fn test_bytes_round_trip(num_bits: usize) { - for i in 0..num_bits { - let mut bitfield = BitList1024::with_capacity(num_bits).unwrap(); - bitfield.set(i, true).unwrap(); - - let bytes = bitfield.clone().into_raw_bytes(); - assert_eq!(bitfield, Bitfield::from_raw_bytes(bytes, num_bits).unwrap()); - } - } - - #[test] - fn set_unset() { - for i in 0..8 * 5 { - test_set_unset(i) - } - } - - #[test] - fn bytes_round_trip() { - for i in 0..8 * 5 { - test_bytes_round_trip(i) - } - } - - /// Type-specialised `smallvec` macro for testing. - macro_rules! bytevec { - ($($x : expr),* $(,)*) => { - { - let __smallvec: SmallVec<[u8; SMALLVEC_LEN]> = smallvec!($($x),*); - __smallvec - } - }; - } - - #[test] - fn into_raw_bytes() { - let mut bitfield = BitList1024::with_capacity(9).unwrap(); - bitfield.set(0, true).unwrap(); - assert_eq!( - bitfield.clone().into_raw_bytes(), - bytevec![0b0000_0001, 0b0000_0000] - ); - bitfield.set(1, true).unwrap(); - assert_eq!( - bitfield.clone().into_raw_bytes(), - bytevec![0b0000_0011, 0b0000_0000] - ); - bitfield.set(2, true).unwrap(); - assert_eq!( - bitfield.clone().into_raw_bytes(), - bytevec![0b0000_0111, 0b0000_0000] - ); - bitfield.set(3, true).unwrap(); - assert_eq!( - bitfield.clone().into_raw_bytes(), - bytevec![0b0000_1111, 0b0000_0000] - ); - bitfield.set(4, true).unwrap(); - assert_eq!( - bitfield.clone().into_raw_bytes(), - bytevec![0b0001_1111, 0b0000_0000] - ); - bitfield.set(5, true).unwrap(); - assert_eq!( - bitfield.clone().into_raw_bytes(), - bytevec![0b0011_1111, 0b0000_0000] - ); - bitfield.set(6, true).unwrap(); - assert_eq!( - bitfield.clone().into_raw_bytes(), - bytevec![0b0111_1111, 0b0000_0000] - ); - bitfield.set(7, true).unwrap(); - assert_eq!( - bitfield.clone().into_raw_bytes(), - bytevec![0b1111_1111, 0b0000_0000] - ); - bitfield.set(8, true).unwrap(); - assert_eq!( - bitfield.into_raw_bytes(), - bytevec![0b1111_1111, 0b0000_0001] - ); - } - - #[test] - fn highest_set_bit() { - assert_eq!( - BitList1024::with_capacity(16).unwrap().highest_set_bit(), - None - ); - - assert_eq!( - BitList1024::from_raw_bytes(smallvec![0b0000_0001, 0b0000_0000], 16) - .unwrap() - .highest_set_bit(), - Some(0) - ); - - assert_eq!( - BitList1024::from_raw_bytes(smallvec![0b0000_0010, 0b0000_0000], 16) - .unwrap() - .highest_set_bit(), - Some(1) - ); - - assert_eq!( - BitList1024::from_raw_bytes(smallvec![0b0000_1000], 8) - .unwrap() - .highest_set_bit(), - Some(3) - ); - - assert_eq!( - BitList1024::from_raw_bytes(smallvec![0b0000_0000, 0b1000_0000], 16) - .unwrap() - .highest_set_bit(), - Some(15) - ); - } - - #[test] - fn intersection() { - let a = BitList1024::from_raw_bytes(smallvec![0b1100, 0b0001], 16).unwrap(); - let b = BitList1024::from_raw_bytes(smallvec![0b1011, 0b1001], 16).unwrap(); - let c = BitList1024::from_raw_bytes(smallvec![0b1000, 0b0001], 16).unwrap(); - - assert_eq!(a.intersection(&b), c); - assert_eq!(b.intersection(&a), c); - assert_eq!(a.intersection(&c), c); - assert_eq!(b.intersection(&c), c); - assert_eq!(a.intersection(&a), a); - assert_eq!(b.intersection(&b), b); - assert_eq!(c.intersection(&c), c); - } - - #[test] - fn intersection_diff_length() { - let a = BitList1024::from_bytes(smallvec![0b0010_1110, 0b0010_1011]).unwrap(); - let b = BitList1024::from_bytes(smallvec![0b0010_1101, 0b0000_0001]).unwrap(); - let c = BitList1024::from_bytes(smallvec![0b0010_1100, 0b0000_0001]).unwrap(); - let d = BitList1024::from_bytes(smallvec![0b0010_1110, 0b1111_1111, 0b1111_1111]).unwrap(); - - assert_eq!(a.len(), 13); - assert_eq!(b.len(), 8); - assert_eq!(c.len(), 8); - assert_eq!(d.len(), 23); - assert_eq!(a.intersection(&b), c); - assert_eq!(b.intersection(&a), c); - assert_eq!(a.intersection(&d), a); - assert_eq!(d.intersection(&a), a); - } - - #[test] - fn union() { - let a = BitList1024::from_raw_bytes(smallvec![0b1100, 0b0001], 16).unwrap(); - let b = BitList1024::from_raw_bytes(smallvec![0b1011, 0b1001], 16).unwrap(); - let c = BitList1024::from_raw_bytes(smallvec![0b1111, 0b1001], 16).unwrap(); - - assert_eq!(a.union(&b), c); - assert_eq!(b.union(&a), c); - assert_eq!(a.union(&a), a); - assert_eq!(b.union(&b), b); - assert_eq!(c.union(&c), c); - } - - #[test] - fn union_diff_length() { - let a = BitList1024::from_bytes(smallvec![0b0010_1011, 0b0010_1110]).unwrap(); - let b = BitList1024::from_bytes(smallvec![0b0000_0001, 0b0010_1101]).unwrap(); - let c = BitList1024::from_bytes(smallvec![0b0010_1011, 0b0010_1111]).unwrap(); - let d = BitList1024::from_bytes(smallvec![0b0010_1011, 0b1011_1110, 0b1000_1101]).unwrap(); - - assert_eq!(a.len(), c.len()); - assert_eq!(a.union(&b), c); - assert_eq!(b.union(&a), c); - assert_eq!(a.union(&d), d); - assert_eq!(d.union(&a), d); - } - - #[test] - fn difference() { - let a = BitList1024::from_raw_bytes(smallvec![0b1100, 0b0001], 16).unwrap(); - let b = BitList1024::from_raw_bytes(smallvec![0b1011, 0b1001], 16).unwrap(); - let a_b = BitList1024::from_raw_bytes(smallvec![0b0100, 0b0000], 16).unwrap(); - let b_a = BitList1024::from_raw_bytes(smallvec![0b0011, 0b1000], 16).unwrap(); - - assert_eq!(a.difference(&b), a_b); - assert_eq!(b.difference(&a), b_a); - assert!(a.difference(&a).is_zero()); - } - - #[test] - fn difference_diff_length() { - let a = BitList1024::from_raw_bytes(smallvec![0b0110, 0b1100, 0b0011], 24).unwrap(); - let b = BitList1024::from_raw_bytes(smallvec![0b1011, 0b1001], 16).unwrap(); - let a_b = BitList1024::from_raw_bytes(smallvec![0b0100, 0b0100, 0b0011], 24).unwrap(); - let b_a = BitList1024::from_raw_bytes(smallvec![0b1001, 0b0001], 16).unwrap(); - - assert_eq!(a.difference(&b), a_b); - assert_eq!(b.difference(&a), b_a); - } - - #[test] - fn shift_up() { - let mut a = BitList1024::from_raw_bytes(smallvec![0b1100_1111, 0b1101_0110], 16).unwrap(); - let mut b = BitList1024::from_raw_bytes(smallvec![0b1001_1110, 0b1010_1101], 16).unwrap(); - - a.shift_up(1).unwrap(); - assert_eq!(a, b); - a.shift_up(15).unwrap(); - assert!(a.is_zero()); - - b.shift_up(16).unwrap(); - assert!(b.is_zero()); - assert!(b.shift_up(17).is_err()); - } - - #[test] - fn num_set_bits() { - let a = BitList1024::from_raw_bytes(smallvec![0b1100, 0b0001], 16).unwrap(); - let b = BitList1024::from_raw_bytes(smallvec![0b1011, 0b1001], 16).unwrap(); - - assert_eq!(a.num_set_bits(), 3); - assert_eq!(b.num_set_bits(), 5); - } - - #[test] - fn iter() { - let mut bitfield = BitList1024::with_capacity(9).unwrap(); - bitfield.set(2, true).unwrap(); - bitfield.set(8, true).unwrap(); - - assert_eq!( - bitfield.iter().collect::>(), - vec![false, false, true, false, false, false, false, false, true] - ); - } - - #[test] - fn ssz_bytes_len() { - for i in 1..64 { - let mut bitfield = BitList1024::with_capacity(i).unwrap(); - for j in 0..i { - bitfield.set(j, true).expect("should set bit in bounds"); - } - let bytes = bitfield.as_ssz_bytes(); - assert_eq!(bitfield.ssz_bytes_len(), bytes.len(), "i = {}", i); - } - } - - // Ensure that the stack size of a BitList is manageable. - #[test] - fn size_of() { - assert_eq!(std::mem::size_of::(), SMALLVEC_LEN + 24); - } -} diff --git a/consensus/ssz_types/src/fixed_vector.rs b/consensus/ssz_types/src/fixed_vector.rs deleted file mode 100644 index 9625f27f3a..0000000000 --- a/consensus/ssz_types/src/fixed_vector.rs +++ /dev/null @@ -1,446 +0,0 @@ -use crate::tree_hash::vec_tree_hash_root; -use crate::Error; -use derivative::Derivative; -use serde_derive::{Deserialize, Serialize}; -use std::marker::PhantomData; -use std::ops::{Deref, DerefMut, Index, IndexMut}; -use std::slice::SliceIndex; -use tree_hash::Hash256; -use typenum::Unsigned; - -pub use typenum; - -/// Emulates a SSZ `Vector` (distinct from a Rust `Vec`). -/// -/// An ordered, heap-allocated, fixed-length, homogeneous collection of `T`, with `N` values. -/// -/// This struct is backed by a Rust `Vec` but constrained such that it must be instantiated with a -/// fixed number of elements and you may not add or remove elements, only modify. -/// -/// The length of this struct is fixed at the type-level using -/// [typenum](https://crates.io/crates/typenum). -/// -/// ## Note -/// -/// Whilst it is possible with this library, SSZ declares that a `FixedVector` with a length of `0` -/// is illegal. -/// -/// ## Example -/// -/// ``` -/// use ssz_types::{FixedVector, typenum}; -/// -/// let base: Vec = vec![1, 2, 3, 4]; -/// -/// // Create a `FixedVector` from a `Vec` that has the expected length. -/// let exact: FixedVector<_, typenum::U4> = FixedVector::from(base.clone()); -/// assert_eq!(&exact[..], &[1, 2, 3, 4]); -/// -/// // Create a `FixedVector` from a `Vec` that is too long and the `Vec` is truncated. -/// let short: FixedVector<_, typenum::U3> = FixedVector::from(base.clone()); -/// assert_eq!(&short[..], &[1, 2, 3]); -/// -/// // Create a `FixedVector` from a `Vec` that is too short and the missing values are created -/// // using `std::default::Default`. -/// let long: FixedVector<_, typenum::U5> = FixedVector::from(base); -/// assert_eq!(&long[..], &[1, 2, 3, 4, 0]); -/// ``` -#[derive(Debug, Clone, Serialize, Deserialize, Derivative)] -#[derivative(PartialEq, Hash(bound = "T: std::hash::Hash"))] -#[serde(transparent)] -pub struct FixedVector { - vec: Vec, - _phantom: PhantomData, -} - -impl FixedVector { - /// Returns `Ok` if the given `vec` equals the fixed length of `Self`. Otherwise returns - /// `Err`. - pub fn new(vec: Vec) -> Result { - if vec.len() == Self::capacity() { - Ok(Self { - vec, - _phantom: PhantomData, - }) - } else { - Err(Error::OutOfBounds { - i: vec.len(), - len: Self::capacity(), - }) - } - } - - /// Create a new vector filled with clones of `elem`. - pub fn from_elem(elem: T) -> Self - where - T: Clone, - { - Self { - vec: vec![elem; N::to_usize()], - _phantom: PhantomData, - } - } - - /// Identical to `self.capacity`, returns the type-level constant length. - /// - /// Exists for compatibility with `Vec`. - pub fn len(&self) -> usize { - self.vec.len() - } - - /// True if the type-level constant length of `self` is zero. - pub fn is_empty(&self) -> bool { - self.len() == 0 - } - - /// Returns the type-level constant length. - pub fn capacity() -> usize { - N::to_usize() - } -} - -impl From> for FixedVector { - fn from(mut vec: Vec) -> Self { - vec.resize_with(Self::capacity(), Default::default); - - Self { - vec, - _phantom: PhantomData, - } - } -} - -impl From> for Vec { - fn from(vector: FixedVector) -> Vec { - vector.vec - } -} - -impl Default for FixedVector { - fn default() -> Self { - Self { - vec: (0..N::to_usize()).map(|_| T::default()).collect(), - _phantom: PhantomData, - } - } -} - -impl> Index for FixedVector { - type Output = I::Output; - - #[inline] - fn index(&self, index: I) -> &Self::Output { - Index::index(&self.vec, index) - } -} - -impl> IndexMut for FixedVector { - #[inline] - fn index_mut(&mut self, index: I) -> &mut Self::Output { - IndexMut::index_mut(&mut self.vec, index) - } -} - -impl Deref for FixedVector { - type Target = [T]; - - fn deref(&self) -> &[T] { - &self.vec[..] - } -} - -// This implementation is required to use `get_mut` to access elements. -// -// It's safe because none of the methods on mutable slices allow changing the length -// of the backing vec. -impl DerefMut for FixedVector { - fn deref_mut(&mut self) -> &mut [T] { - &mut self.vec[..] - } -} - -impl tree_hash::TreeHash for FixedVector -where - T: tree_hash::TreeHash, -{ - fn tree_hash_type() -> tree_hash::TreeHashType { - tree_hash::TreeHashType::Vector - } - - fn tree_hash_packed_encoding(&self) -> tree_hash::PackedEncoding { - unreachable!("Vector should never be packed.") - } - - fn tree_hash_packing_factor() -> usize { - unreachable!("Vector should never be packed.") - } - - fn tree_hash_root(&self) -> Hash256 { - vec_tree_hash_root::(&self.vec) - } -} - -impl ssz::Encode for FixedVector -where - T: ssz::Encode, -{ - fn is_ssz_fixed_len() -> bool { - T::is_ssz_fixed_len() - } - - fn ssz_fixed_len() -> usize { - if ::is_ssz_fixed_len() { - T::ssz_fixed_len() * N::to_usize() - } else { - ssz::BYTES_PER_LENGTH_OFFSET - } - } - - fn ssz_bytes_len(&self) -> usize { - self.vec.ssz_bytes_len() - } - - fn ssz_append(&self, buf: &mut Vec) { - if T::is_ssz_fixed_len() { - buf.reserve(T::ssz_fixed_len() * self.len()); - - for item in &self.vec { - item.ssz_append(buf); - } - } else { - let mut encoder = - ssz::SszEncoder::container(buf, self.len() * ssz::BYTES_PER_LENGTH_OFFSET); - - for item in &self.vec { - encoder.append(item); - } - - encoder.finalize(); - } - } -} - -impl ssz::Decode for FixedVector -where - T: ssz::Decode, -{ - fn is_ssz_fixed_len() -> bool { - T::is_ssz_fixed_len() - } - - fn ssz_fixed_len() -> usize { - if ::is_ssz_fixed_len() { - T::ssz_fixed_len() * N::to_usize() - } else { - ssz::BYTES_PER_LENGTH_OFFSET - } - } - - fn from_ssz_bytes(bytes: &[u8]) -> Result { - let fixed_len = N::to_usize(); - - if bytes.is_empty() { - Err(ssz::DecodeError::InvalidByteLength { - len: 0, - expected: 1, - }) - } else if T::is_ssz_fixed_len() { - let num_items = bytes - .len() - .checked_div(T::ssz_fixed_len()) - .ok_or(ssz::DecodeError::ZeroLengthItem)?; - - if num_items != fixed_len { - return Err(ssz::DecodeError::BytesInvalid(format!( - "FixedVector of {} items has {} items", - num_items, fixed_len - ))); - } - - bytes - .chunks(T::ssz_fixed_len()) - .map(|chunk| T::from_ssz_bytes(chunk)) - .collect::, _>>() - .and_then(|vec| { - Self::new(vec).map_err(|e| { - ssz::DecodeError::BytesInvalid(format!( - "Wrong number of FixedVector elements: {:?}", - e - )) - }) - }) - } else { - let vec = ssz::decode_list_of_variable_length_items(bytes, Some(fixed_len))?; - Self::new(vec).map_err(|e| { - ssz::DecodeError::BytesInvalid(format!( - "Wrong number of FixedVector elements: {:?}", - e - )) - }) - } - } -} - -#[cfg(feature = "arbitrary")] -impl<'a, T: arbitrary::Arbitrary<'a>, N: 'static + Unsigned> arbitrary::Arbitrary<'a> - for FixedVector -{ - fn arbitrary(u: &mut arbitrary::Unstructured<'a>) -> arbitrary::Result { - let size = N::to_usize(); - let mut vec: Vec = Vec::with_capacity(size); - for _ in 0..size { - vec.push(::arbitrary(u)?); - } - Self::new(vec).map_err(|_| arbitrary::Error::IncorrectFormat) - } -} - -#[cfg(test)] -mod test { - use super::*; - use ssz::*; - use tree_hash::{merkle_root, TreeHash}; - use tree_hash_derive::TreeHash; - use typenum::*; - - #[test] - fn new() { - let vec = vec![42; 5]; - let fixed: Result, _> = FixedVector::new(vec); - assert!(fixed.is_err()); - - let vec = vec![42; 3]; - let fixed: Result, _> = FixedVector::new(vec); - assert!(fixed.is_err()); - - let vec = vec![42; 4]; - let fixed: Result, _> = FixedVector::new(vec); - assert!(fixed.is_ok()); - } - - #[test] - fn indexing() { - let vec = vec![1, 2]; - - let mut fixed: FixedVector = vec.clone().into(); - - assert_eq!(fixed[0], 1); - assert_eq!(&fixed[0..1], &vec[0..1]); - assert_eq!((fixed[..]).len(), 8192); - - fixed[1] = 3; - assert_eq!(fixed[1], 3); - } - - #[test] - fn length() { - let vec = vec![42; 5]; - let fixed: FixedVector = FixedVector::from(vec.clone()); - assert_eq!(&fixed[..], &vec[0..4]); - - let vec = vec![42; 3]; - let fixed: FixedVector = FixedVector::from(vec.clone()); - assert_eq!(&fixed[0..3], &vec[..]); - assert_eq!(&fixed[..], &vec![42, 42, 42, 0][..]); - - let vec = vec![]; - let fixed: FixedVector = FixedVector::from(vec); - assert_eq!(&fixed[..], &vec![0, 0, 0, 0][..]); - } - - #[test] - fn deref() { - let vec = vec![0, 2, 4, 6]; - let fixed: FixedVector = FixedVector::from(vec); - - assert_eq!(fixed.first(), Some(&0)); - assert_eq!(fixed.get(3), Some(&6)); - assert_eq!(fixed.get(4), None); - } - - #[test] - fn ssz_encode() { - let vec: FixedVector = vec![0; 2].into(); - assert_eq!(vec.as_ssz_bytes(), vec![0, 0, 0, 0]); - assert_eq!( as Encode>::ssz_fixed_len(), 4); - } - - fn ssz_round_trip(item: T) { - let encoded = &item.as_ssz_bytes(); - assert_eq!(item.ssz_bytes_len(), encoded.len()); - assert_eq!(T::from_ssz_bytes(encoded), Ok(item)); - } - - #[test] - fn ssz_round_trip_u16_len_8() { - ssz_round_trip::>(vec![42; 8].into()); - ssz_round_trip::>(vec![0; 8].into()); - } - - #[test] - fn tree_hash_u8() { - let fixed: FixedVector = FixedVector::from(vec![]); - assert_eq!(fixed.tree_hash_root(), merkle_root(&[0; 8], 0)); - - let fixed: FixedVector = FixedVector::from(vec![0; 1]); - assert_eq!(fixed.tree_hash_root(), merkle_root(&[0; 8], 0)); - - let fixed: FixedVector = FixedVector::from(vec![0; 8]); - assert_eq!(fixed.tree_hash_root(), merkle_root(&[0; 8], 0)); - - let fixed: FixedVector = FixedVector::from(vec![42; 16]); - assert_eq!(fixed.tree_hash_root(), merkle_root(&[42; 16], 0)); - - let source: Vec = (0..16).collect(); - let fixed: FixedVector = FixedVector::from(source.clone()); - assert_eq!(fixed.tree_hash_root(), merkle_root(&source, 0)); - } - - #[derive(Clone, Copy, TreeHash, Default)] - struct A { - a: u32, - b: u32, - } - - fn repeat(input: &[u8], n: usize) -> Vec { - let mut output = vec![]; - - for _ in 0..n { - output.append(&mut input.to_vec()); - } - - output - } - - #[test] - fn tree_hash_composite() { - let a = A { a: 0, b: 1 }; - - let fixed: FixedVector = FixedVector::from(vec![]); - assert_eq!(fixed.tree_hash_root(), merkle_root(&[0; 32], 0)); - - let fixed: FixedVector = FixedVector::from(vec![a]); - assert_eq!( - fixed.tree_hash_root(), - merkle_root(a.tree_hash_root().as_bytes(), 0) - ); - - let fixed: FixedVector = FixedVector::from(vec![a; 8]); - assert_eq!( - fixed.tree_hash_root(), - merkle_root(&repeat(a.tree_hash_root().as_bytes(), 8), 0) - ); - - let fixed: FixedVector = FixedVector::from(vec![a; 13]); - assert_eq!( - fixed.tree_hash_root(), - merkle_root(&repeat(a.tree_hash_root().as_bytes(), 13), 0) - ); - - let fixed: FixedVector = FixedVector::from(vec![a; 16]); - assert_eq!( - fixed.tree_hash_root(), - merkle_root(&repeat(a.tree_hash_root().as_bytes(), 16), 0) - ); - } -} diff --git a/consensus/ssz_types/src/lib.rs b/consensus/ssz_types/src/lib.rs deleted file mode 100644 index 3e181da8cb..0000000000 --- a/consensus/ssz_types/src/lib.rs +++ /dev/null @@ -1,72 +0,0 @@ -//! Provides types with unique properties required for SSZ serialization and Merklization: -//! -//! - `FixedVector`: A heap-allocated list with a size that is fixed at compile time. -//! - `VariableList`: A heap-allocated list that cannot grow past a type-level maximum length. -//! - `BitList`: A heap-allocated bitfield that with a type-level _maximum_ length. -//! - `BitVector`: A heap-allocated bitfield that with a type-level _fixed__ length. -//! -//! These structs are required as SSZ serialization and Merklization rely upon type-level lengths -//! for padding and verification. -//! -//! Adheres to the Ethereum 2.0 [SSZ -//! specification](https://github.com/ethereum/eth2.0-specs/blob/v0.12.1/ssz/simple-serialize.md) -//! at v0.12.1. -//! -//! ## Example -//! ``` -//! use ssz_types::*; -//! -//! pub struct Example { -//! bit_vector: BitVector, -//! bit_list: BitList, -//! variable_list: VariableList, -//! fixed_vector: FixedVector, -//! } -//! -//! let mut example = Example { -//! bit_vector: Bitfield::new(), -//! bit_list: Bitfield::with_capacity(4).unwrap(), -//! variable_list: <_>::from(vec![0, 1]), -//! fixed_vector: <_>::from(vec![2, 3]), -//! }; -//! -//! assert_eq!(example.bit_vector.len(), 8); -//! assert_eq!(example.bit_list.len(), 4); -//! assert_eq!(&example.variable_list[..], &[0, 1]); -//! assert_eq!(&example.fixed_vector[..], &[2, 3, 0, 0, 0, 0, 0, 0]); -//! -//! ``` - -#[macro_use] -mod bitfield; -mod fixed_vector; -pub mod serde_utils; -mod tree_hash; -mod variable_list; - -pub use bitfield::{BitList, BitVector, Bitfield}; -pub use fixed_vector::FixedVector; -pub use typenum; -pub use variable_list::VariableList; - -pub mod length { - pub use crate::bitfield::{Fixed, Variable}; -} - -/// Returned when an item encounters an error. -#[derive(PartialEq, Debug, Clone)] -pub enum Error { - OutOfBounds { - i: usize, - len: usize, - }, - /// A `BitList` does not have a set bit, therefore it's length is unknowable. - MissingLengthInformation, - /// A `BitList` has excess bits set to true. - ExcessBits, - /// A `BitList` has an invalid number of bytes for a given bit length. - InvalidByteCount { - given: usize, - expected: usize, - }, -} diff --git a/consensus/ssz_types/src/serde_utils/hex_fixed_vec.rs b/consensus/ssz_types/src/serde_utils/hex_fixed_vec.rs deleted file mode 100644 index 86077891bc..0000000000 --- a/consensus/ssz_types/src/serde_utils/hex_fixed_vec.rs +++ /dev/null @@ -1,22 +0,0 @@ -use crate::FixedVector; -use eth2_serde_utils::hex::{self, PrefixedHexVisitor}; -use serde::{Deserializer, Serializer}; -use typenum::Unsigned; - -pub fn serialize(bytes: &FixedVector, serializer: S) -> Result -where - S: Serializer, - U: Unsigned, -{ - serializer.serialize_str(&hex::encode(&bytes[..])) -} - -pub fn deserialize<'de, D, U>(deserializer: D) -> Result, D::Error> -where - D: Deserializer<'de>, - U: Unsigned, -{ - let vec = deserializer.deserialize_string(PrefixedHexVisitor)?; - FixedVector::new(vec) - .map_err(|e| serde::de::Error::custom(format!("invalid fixed vector: {:?}", e))) -} diff --git a/consensus/ssz_types/src/serde_utils/hex_var_list.rs b/consensus/ssz_types/src/serde_utils/hex_var_list.rs deleted file mode 100644 index e3a3a14e06..0000000000 --- a/consensus/ssz_types/src/serde_utils/hex_var_list.rs +++ /dev/null @@ -1,23 +0,0 @@ -//! Serialize `VariableList` as 0x-prefixed hex string. -use crate::VariableList; -use eth2_serde_utils::hex::{self, PrefixedHexVisitor}; -use serde::{Deserializer, Serializer}; -use typenum::Unsigned; - -pub fn serialize(bytes: &VariableList, serializer: S) -> Result -where - S: Serializer, - N: Unsigned, -{ - serializer.serialize_str(&hex::encode(&**bytes)) -} - -pub fn deserialize<'de, D, N>(deserializer: D) -> Result, D::Error> -where - D: Deserializer<'de>, - N: Unsigned, -{ - let bytes = deserializer.deserialize_str(PrefixedHexVisitor)?; - VariableList::new(bytes) - .map_err(|e| serde::de::Error::custom(format!("invalid variable list: {:?}", e))) -} diff --git a/consensus/ssz_types/src/serde_utils/list_of_hex_var_list.rs b/consensus/ssz_types/src/serde_utils/list_of_hex_var_list.rs deleted file mode 100644 index e2fd8ddf32..0000000000 --- a/consensus/ssz_types/src/serde_utils/list_of_hex_var_list.rs +++ /dev/null @@ -1,77 +0,0 @@ -//! Serialize `VaraibleList, N>` as list of 0x-prefixed hex string. -use crate::VariableList; -use serde::{ser::SerializeSeq, Deserialize, Deserializer, Serialize, Serializer}; -use std::marker::PhantomData; -use typenum::Unsigned; - -#[derive(Deserialize)] -#[serde(transparent)] -pub struct WrappedListOwned( - #[serde(with = "crate::serde_utils::hex_var_list")] VariableList, -); - -#[derive(Serialize)] -#[serde(transparent)] -pub struct WrappedListRef<'a, N: Unsigned>( - #[serde(with = "crate::serde_utils::hex_var_list")] &'a VariableList, -); - -pub fn serialize( - list: &VariableList, N>, - serializer: S, -) -> Result -where - S: Serializer, - M: Unsigned, - N: Unsigned, -{ - let mut seq = serializer.serialize_seq(Some(list.len()))?; - for bytes in list { - seq.serialize_element(&WrappedListRef(bytes))?; - } - seq.end() -} - -#[derive(Default)] -pub struct Visitor { - _phantom_m: PhantomData, - _phantom_n: PhantomData, -} - -impl<'a, M, N> serde::de::Visitor<'a> for Visitor -where - M: Unsigned, - N: Unsigned, -{ - type Value = VariableList, N>; - - fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result { - write!(formatter, "a list of 0x-prefixed hex bytes") - } - - fn visit_seq(self, mut seq: A) -> Result - where - A: serde::de::SeqAccess<'a>, - { - let mut list: VariableList, N> = <_>::default(); - - while let Some(val) = seq.next_element::>()? { - list.push(val.0).map_err(|e| { - serde::de::Error::custom(format!("failed to push value to list: {:?}.", e)) - })?; - } - - Ok(list) - } -} - -pub fn deserialize<'de, D, M, N>( - deserializer: D, -) -> Result, N>, D::Error> -where - D: Deserializer<'de>, - M: Unsigned, - N: Unsigned, -{ - deserializer.deserialize_seq(Visitor::default()) -} diff --git a/consensus/ssz_types/src/serde_utils/mod.rs b/consensus/ssz_types/src/serde_utils/mod.rs deleted file mode 100644 index cd6d49cc85..0000000000 --- a/consensus/ssz_types/src/serde_utils/mod.rs +++ /dev/null @@ -1,5 +0,0 @@ -pub mod hex_fixed_vec; -pub mod hex_var_list; -pub mod list_of_hex_var_list; -pub mod quoted_u64_fixed_vec; -pub mod quoted_u64_var_list; diff --git a/consensus/ssz_types/src/serde_utils/quoted_u64_fixed_vec.rs b/consensus/ssz_types/src/serde_utils/quoted_u64_fixed_vec.rs deleted file mode 100644 index 0eb265adc3..0000000000 --- a/consensus/ssz_types/src/serde_utils/quoted_u64_fixed_vec.rs +++ /dev/null @@ -1,113 +0,0 @@ -//! Formats `FixedVector` using quotes. -//! -//! E.g., `FixedVector::from(vec![0, 1, 2])` serializes as `["0", "1", "2"]`. -//! -//! Quotes can be optional during decoding. If `N` does not equal the length deserialization will fail. - -use crate::serde_utils::quoted_u64_var_list::deserialize_max; -use crate::FixedVector; -use eth2_serde_utils::quoted_u64_vec::QuotedIntWrapper; -use serde::ser::SerializeSeq; -use serde::{Deserializer, Serializer}; -use std::marker::PhantomData; -use typenum::Unsigned; - -pub struct QuotedIntFixedVecVisitor { - _phantom: PhantomData, -} - -impl<'a, N> serde::de::Visitor<'a> for QuotedIntFixedVecVisitor -where - N: Unsigned, -{ - type Value = FixedVector; - - fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result { - write!(formatter, "a list of quoted or unquoted integers") - } - - fn visit_seq(self, seq: A) -> Result - where - A: serde::de::SeqAccess<'a>, - { - let vec = deserialize_max(seq, N::to_usize())?; - let fix: FixedVector = FixedVector::new(vec) - .map_err(|e| serde::de::Error::custom(format!("FixedVector: {:?}", e)))?; - Ok(fix) - } -} - -pub fn serialize(value: &[u64], serializer: S) -> Result -where - S: Serializer, -{ - let mut seq = serializer.serialize_seq(Some(value.len()))?; - for &int in value { - seq.serialize_element(&QuotedIntWrapper { int })?; - } - seq.end() -} - -pub fn deserialize<'de, D, N>(deserializer: D) -> Result, D::Error> -where - D: Deserializer<'de>, - N: Unsigned, -{ - deserializer.deserialize_any(QuotedIntFixedVecVisitor { - _phantom: PhantomData, - }) -} - -#[cfg(test)] -mod test { - use super::*; - use serde_derive::{Deserialize, Serialize}; - use typenum::U4; - - #[derive(Debug, Serialize, Deserialize)] - struct Obj { - #[serde(with = "crate::serde_utils::quoted_u64_fixed_vec")] - values: FixedVector, - } - - #[test] - fn quoted_list_success() { - let obj: Obj = serde_json::from_str(r#"{ "values": ["1", "2", "3", "4"] }"#).unwrap(); - let expected: FixedVector = FixedVector::from(vec![1, 2, 3, 4]); - assert_eq!(obj.values, expected); - } - - #[test] - fn unquoted_list_success() { - let obj: Obj = serde_json::from_str(r#"{ "values": [1, 2, 3, 4] }"#).unwrap(); - let expected: FixedVector = FixedVector::from(vec![1, 2, 3, 4]); - assert_eq!(obj.values, expected); - } - - #[test] - fn mixed_list_success() { - let obj: Obj = serde_json::from_str(r#"{ "values": ["1", 2, "3", "4"] }"#).unwrap(); - let expected: FixedVector = FixedVector::from(vec![1, 2, 3, 4]); - assert_eq!(obj.values, expected); - } - - #[test] - fn empty_list_err() { - serde_json::from_str::(r#"{ "values": [] }"#).unwrap_err(); - } - - #[test] - fn short_list_err() { - serde_json::from_str::(r#"{ "values": [1, 2] }"#).unwrap_err(); - } - - #[test] - fn long_list_err() { - serde_json::from_str::(r#"{ "values": [1, 2, 3, 4, 5] }"#).unwrap_err(); - } - - #[test] - fn whole_list_quoted_err() { - serde_json::from_str::(r#"{ "values": "[1, 2, 3, 4]" }"#).unwrap_err(); - } -} diff --git a/consensus/ssz_types/src/serde_utils/quoted_u64_var_list.rs b/consensus/ssz_types/src/serde_utils/quoted_u64_var_list.rs deleted file mode 100644 index 9e176b6359..0000000000 --- a/consensus/ssz_types/src/serde_utils/quoted_u64_var_list.rs +++ /dev/null @@ -1,139 +0,0 @@ -//! Formats `VariableList` using quotes. -//! -//! E.g., `VariableList::from(vec![0, 1, 2])` serializes as `["0", "1", "2"]`. -//! -//! Quotes can be optional during decoding. If the length of the `Vec` is greater than `N`, deserialization fails. - -use crate::VariableList; -use eth2_serde_utils::quoted_u64_vec::QuotedIntWrapper; -use serde::ser::SerializeSeq; -use serde::{Deserializer, Serializer}; -use std::marker::PhantomData; -use typenum::Unsigned; - -pub struct QuotedIntVarListVisitor { - _phantom: PhantomData, -} - -impl<'a, N> serde::de::Visitor<'a> for QuotedIntVarListVisitor -where - N: Unsigned, -{ - type Value = VariableList; - - fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result { - write!(formatter, "a list of quoted or unquoted integers") - } - - fn visit_seq(self, seq: A) -> Result - where - A: serde::de::SeqAccess<'a>, - { - let vec = deserialize_max(seq, N::to_usize())?; - let list: VariableList = VariableList::new(vec) - .map_err(|e| serde::de::Error::custom(format!("VariableList: {:?}", e)))?; - Ok(list) - } -} - -pub fn serialize(value: &[u64], serializer: S) -> Result -where - S: Serializer, -{ - let mut seq = serializer.serialize_seq(Some(value.len()))?; - for &int in value { - seq.serialize_element(&QuotedIntWrapper { int })?; - } - seq.end() -} - -pub fn deserialize<'de, D, N>(deserializer: D) -> Result, D::Error> -where - D: Deserializer<'de>, - N: Unsigned, -{ - deserializer.deserialize_any(QuotedIntVarListVisitor { - _phantom: PhantomData, - }) -} - -/// Returns a `Vec` of no more than `max_items` length. -pub(crate) fn deserialize_max<'a, A>(mut seq: A, max_items: usize) -> Result, A::Error> -where - A: serde::de::SeqAccess<'a>, -{ - let mut vec = vec![]; - let mut counter = 0; - - while let Some(val) = seq.next_element()? { - let val: QuotedIntWrapper = val; - counter += 1; - if counter > max_items { - return Err(serde::de::Error::custom(format!( - "Deserialization failed. Length cannot be greater than {}.", - max_items - ))); - } - - vec.push(val.int); - } - - Ok(vec) -} - -#[cfg(test)] -mod test { - use super::*; - use serde_derive::{Deserialize, Serialize}; - use typenum::U4; - - #[derive(Debug, Serialize, Deserialize)] - struct Obj { - #[serde(with = "crate::serde_utils::quoted_u64_var_list")] - values: VariableList, - } - - #[test] - fn quoted_list_success() { - let obj: Obj = serde_json::from_str(r#"{ "values": ["1", "2", "3", "4"] }"#).unwrap(); - let expected: VariableList = VariableList::from(vec![1, 2, 3, 4]); - assert_eq!(obj.values, expected); - } - - #[test] - fn unquoted_list_success() { - let obj: Obj = serde_json::from_str(r#"{ "values": [1, 2, 3, 4] }"#).unwrap(); - let expected: VariableList = VariableList::from(vec![1, 2, 3, 4]); - assert_eq!(obj.values, expected); - } - - #[test] - fn mixed_list_success() { - let obj: Obj = serde_json::from_str(r#"{ "values": ["1", 2, "3", "4"] }"#).unwrap(); - let expected: VariableList = VariableList::from(vec![1, 2, 3, 4]); - assert_eq!(obj.values, expected); - } - - #[test] - fn empty_list_success() { - let obj: Obj = serde_json::from_str(r#"{ "values": [] }"#).unwrap(); - assert!(obj.values.is_empty()); - } - - #[test] - fn short_list_success() { - let obj: Obj = serde_json::from_str(r#"{ "values": [1, 2] }"#).unwrap(); - let expected: VariableList = VariableList::from(vec![1, 2]); - assert_eq!(obj.values, expected); - } - - #[test] - fn long_list_err() { - serde_json::from_str::(r#"{ "values": [1, 2, 3, 4, 5] }"#).unwrap_err(); - } - - #[test] - fn whole_list_quoted_err() { - serde_json::from_str::(r#"{ "values": "[1, 2, 3, 4]" }"#).unwrap_err(); - } -} diff --git a/consensus/ssz_types/src/tree_hash.rs b/consensus/ssz_types/src/tree_hash.rs deleted file mode 100644 index e08c1d62fb..0000000000 --- a/consensus/ssz_types/src/tree_hash.rs +++ /dev/null @@ -1,58 +0,0 @@ -use tree_hash::{Hash256, MerkleHasher, TreeHash, TreeHashType, BYTES_PER_CHUNK}; -use typenum::Unsigned; - -/// A helper function providing common functionality between the `TreeHash` implementations for -/// `FixedVector` and `VariableList`. -pub fn vec_tree_hash_root(vec: &[T]) -> Hash256 -where - T: TreeHash, - N: Unsigned, -{ - match T::tree_hash_type() { - TreeHashType::Basic => { - let mut hasher = MerkleHasher::with_leaves( - (N::to_usize() + T::tree_hash_packing_factor() - 1) / T::tree_hash_packing_factor(), - ); - - for item in vec { - hasher - .write(&item.tree_hash_packed_encoding()) - .expect("ssz_types variable vec should not contain more elements than max"); - } - - hasher - .finish() - .expect("ssz_types variable vec should not have a remaining buffer") - } - TreeHashType::Container | TreeHashType::List | TreeHashType::Vector => { - let mut hasher = MerkleHasher::with_leaves(N::to_usize()); - - for item in vec { - hasher - .write(item.tree_hash_root().as_bytes()) - .expect("ssz_types vec should not contain more elements than max"); - } - - hasher - .finish() - .expect("ssz_types vec should not have a remaining buffer") - } - } -} - -/// A helper function providing common functionality for finding the Merkle root of some bytes that -/// represent a bitfield. -pub fn bitfield_bytes_tree_hash_root(bytes: &[u8]) -> Hash256 { - let byte_size = (N::to_usize() + 7) / 8; - let leaf_count = (byte_size + BYTES_PER_CHUNK - 1) / BYTES_PER_CHUNK; - - let mut hasher = MerkleHasher::with_leaves(leaf_count); - - hasher - .write(bytes) - .expect("bitfield should not exceed tree hash leaf limit"); - - hasher - .finish() - .expect("bitfield tree hash buffer should not exceed leaf limit") -} diff --git a/consensus/ssz_types/src/variable_list.rs b/consensus/ssz_types/src/variable_list.rs deleted file mode 100644 index 3361f75090..0000000000 --- a/consensus/ssz_types/src/variable_list.rs +++ /dev/null @@ -1,477 +0,0 @@ -use crate::tree_hash::vec_tree_hash_root; -use crate::Error; -use derivative::Derivative; -use serde_derive::{Deserialize, Serialize}; -use std::marker::PhantomData; -use std::ops::{Deref, DerefMut, Index, IndexMut}; -use std::slice::SliceIndex; -use tree_hash::Hash256; -use typenum::Unsigned; - -pub use typenum; - -/// Emulates a SSZ `List`. -/// -/// An ordered, heap-allocated, variable-length, homogeneous collection of `T`, with no more than -/// `N` values. -/// -/// This struct is backed by a Rust `Vec` but constrained such that it must be instantiated with a -/// fixed number of elements and you may not add or remove elements, only modify. -/// -/// The length of this struct is fixed at the type-level using -/// [typenum](https://crates.io/crates/typenum). -/// -/// ## Example -/// -/// ``` -/// use ssz_types::{VariableList, typenum}; -/// -/// let base: Vec = vec![1, 2, 3, 4]; -/// -/// // Create a `VariableList` from a `Vec` that has the expected length. -/// let exact: VariableList<_, typenum::U4> = VariableList::from(base.clone()); -/// assert_eq!(&exact[..], &[1, 2, 3, 4]); -/// -/// // Create a `VariableList` from a `Vec` that is too long and the `Vec` is truncated. -/// let short: VariableList<_, typenum::U3> = VariableList::from(base.clone()); -/// assert_eq!(&short[..], &[1, 2, 3]); -/// -/// // Create a `VariableList` from a `Vec` that is shorter than the maximum. -/// let mut long: VariableList<_, typenum::U5> = VariableList::from(base); -/// assert_eq!(&long[..], &[1, 2, 3, 4]); -/// -/// // Push a value to if it does not exceed the maximum -/// long.push(5).unwrap(); -/// assert_eq!(&long[..], &[1, 2, 3, 4, 5]); -/// -/// // Push a value to if it _does_ exceed the maximum. -/// assert!(long.push(6).is_err()); -/// ``` -#[derive(Debug, Clone, Serialize, Deserialize, Derivative)] -#[derivative(PartialEq, Eq, Hash(bound = "T: std::hash::Hash"))] -#[serde(transparent)] -pub struct VariableList { - vec: Vec, - _phantom: PhantomData, -} - -impl VariableList { - /// Returns `Some` if the given `vec` equals the fixed length of `Self`. Otherwise returns - /// `None`. - pub fn new(vec: Vec) -> Result { - if vec.len() <= N::to_usize() { - Ok(Self { - vec, - _phantom: PhantomData, - }) - } else { - Err(Error::OutOfBounds { - i: vec.len(), - len: Self::max_len(), - }) - } - } - - /// Create an empty list. - pub fn empty() -> Self { - Self { - vec: vec![], - _phantom: PhantomData, - } - } - - /// Returns the number of values presently in `self`. - pub fn len(&self) -> usize { - self.vec.len() - } - - /// True if `self` does not contain any values. - pub fn is_empty(&self) -> bool { - self.len() == 0 - } - - /// Returns the type-level maximum length. - pub fn max_len() -> usize { - N::to_usize() - } - - /// Appends `value` to the back of `self`. - /// - /// Returns `Err(())` when appending `value` would exceed the maximum length. - pub fn push(&mut self, value: T) -> Result<(), Error> { - if self.vec.len() < Self::max_len() { - self.vec.push(value); - Ok(()) - } else { - Err(Error::OutOfBounds { - i: self.vec.len() + 1, - len: Self::max_len(), - }) - } - } -} - -impl From> for VariableList { - fn from(mut vec: Vec) -> Self { - vec.truncate(N::to_usize()); - - Self { - vec, - _phantom: PhantomData, - } - } -} - -impl From> for Vec { - fn from(list: VariableList) -> Vec { - list.vec - } -} - -impl Default for VariableList { - fn default() -> Self { - Self { - vec: Vec::default(), - _phantom: PhantomData, - } - } -} - -impl> Index for VariableList { - type Output = I::Output; - - #[inline] - fn index(&self, index: I) -> &Self::Output { - Index::index(&self.vec, index) - } -} - -impl> IndexMut for VariableList { - #[inline] - fn index_mut(&mut self, index: I) -> &mut Self::Output { - IndexMut::index_mut(&mut self.vec, index) - } -} - -impl Deref for VariableList { - type Target = [T]; - - fn deref(&self) -> &[T] { - &self.vec[..] - } -} - -impl DerefMut for VariableList { - fn deref_mut(&mut self) -> &mut [T] { - &mut self.vec[..] - } -} - -impl<'a, T, N: Unsigned> IntoIterator for &'a VariableList { - type Item = &'a T; - type IntoIter = std::slice::Iter<'a, T>; - - fn into_iter(self) -> Self::IntoIter { - self.iter() - } -} - -impl IntoIterator for VariableList { - type Item = T; - type IntoIter = std::vec::IntoIter; - - fn into_iter(self) -> Self::IntoIter { - self.vec.into_iter() - } -} - -impl tree_hash::TreeHash for VariableList -where - T: tree_hash::TreeHash, -{ - fn tree_hash_type() -> tree_hash::TreeHashType { - tree_hash::TreeHashType::List - } - - fn tree_hash_packed_encoding(&self) -> tree_hash::PackedEncoding { - unreachable!("List should never be packed.") - } - - fn tree_hash_packing_factor() -> usize { - unreachable!("List should never be packed.") - } - - fn tree_hash_root(&self) -> Hash256 { - let root = vec_tree_hash_root::(&self.vec); - - tree_hash::mix_in_length(&root, self.len()) - } -} - -impl ssz::Encode for VariableList -where - T: ssz::Encode, -{ - fn is_ssz_fixed_len() -> bool { - >::is_ssz_fixed_len() - } - - fn ssz_fixed_len() -> usize { - >::ssz_fixed_len() - } - - fn ssz_bytes_len(&self) -> usize { - self.vec.ssz_bytes_len() - } - - fn ssz_append(&self, buf: &mut Vec) { - self.vec.ssz_append(buf) - } -} - -impl ssz::Decode for VariableList -where - T: ssz::Decode, - N: Unsigned, -{ - fn is_ssz_fixed_len() -> bool { - false - } - - fn from_ssz_bytes(bytes: &[u8]) -> Result { - let max_len = N::to_usize(); - - if bytes.is_empty() { - Ok(vec![].into()) - } else if T::is_ssz_fixed_len() { - let num_items = bytes - .len() - .checked_div(T::ssz_fixed_len()) - .ok_or(ssz::DecodeError::ZeroLengthItem)?; - - if num_items > max_len { - return Err(ssz::DecodeError::BytesInvalid(format!( - "VariableList of {} items exceeds maximum of {}", - num_items, max_len - ))); - } - - bytes - .chunks(T::ssz_fixed_len()) - .try_fold(Vec::with_capacity(num_items), |mut vec, chunk| { - vec.push(T::from_ssz_bytes(chunk)?); - Ok(vec) - }) - .map(Into::into) - } else { - ssz::decode_list_of_variable_length_items(bytes, Some(max_len)) - .map(|vec: Vec<_>| vec.into()) - } - } -} - -#[cfg(feature = "arbitrary")] -impl<'a, T: arbitrary::Arbitrary<'a>, N: 'static + Unsigned> arbitrary::Arbitrary<'a> - for VariableList -{ - fn arbitrary(u: &mut arbitrary::Unstructured<'a>) -> arbitrary::Result { - let max_size = N::to_usize(); - let rand = usize::arbitrary(u)?; - let size = std::cmp::min(rand, max_size); - let mut vec: Vec = Vec::with_capacity(size); - for _ in 0..size { - vec.push(::arbitrary(u)?); - } - Self::new(vec).map_err(|_| arbitrary::Error::IncorrectFormat) - } -} - -#[cfg(test)] -mod test { - use super::*; - use ssz::*; - use tree_hash::{merkle_root, TreeHash}; - use tree_hash_derive::TreeHash; - use typenum::*; - - #[test] - fn new() { - let vec = vec![42; 5]; - let fixed: Result, _> = VariableList::new(vec); - assert!(fixed.is_err()); - - let vec = vec![42; 3]; - let fixed: Result, _> = VariableList::new(vec); - assert!(fixed.is_ok()); - - let vec = vec![42; 4]; - let fixed: Result, _> = VariableList::new(vec); - assert!(fixed.is_ok()); - } - - #[test] - fn indexing() { - let vec = vec![1, 2]; - - let mut fixed: VariableList = vec.clone().into(); - - assert_eq!(fixed[0], 1); - assert_eq!(&fixed[0..1], &vec[0..1]); - assert_eq!((fixed[..]).len(), 2); - - fixed[1] = 3; - assert_eq!(fixed[1], 3); - } - - #[test] - fn length() { - let vec = vec![42; 5]; - let fixed: VariableList = VariableList::from(vec.clone()); - assert_eq!(&fixed[..], &vec[0..4]); - - let vec = vec![42; 3]; - let fixed: VariableList = VariableList::from(vec.clone()); - assert_eq!(&fixed[0..3], &vec[..]); - assert_eq!(&fixed[..], &vec![42, 42, 42][..]); - - let vec = vec![]; - let fixed: VariableList = VariableList::from(vec); - assert_eq!(&fixed[..], &[] as &[u64]); - } - - #[test] - fn deref() { - let vec = vec![0, 2, 4, 6]; - let fixed: VariableList = VariableList::from(vec); - - assert_eq!(fixed.first(), Some(&0)); - assert_eq!(fixed.get(3), Some(&6)); - assert_eq!(fixed.get(4), None); - } - - #[test] - fn encode() { - let vec: VariableList = vec![0; 2].into(); - assert_eq!(vec.as_ssz_bytes(), vec![0, 0, 0, 0]); - assert_eq!( as Encode>::ssz_fixed_len(), 4); - } - - fn round_trip(item: T) { - let encoded = &item.as_ssz_bytes(); - assert_eq!(item.ssz_bytes_len(), encoded.len()); - assert_eq!(T::from_ssz_bytes(encoded), Ok(item)); - } - - #[test] - fn u16_len_8() { - round_trip::>(vec![42; 8].into()); - round_trip::>(vec![0; 8].into()); - } - - fn root_with_length(bytes: &[u8], len: usize) -> Hash256 { - let root = merkle_root(bytes, 0); - tree_hash::mix_in_length(&root, len) - } - - #[test] - fn tree_hash_u8() { - let fixed: VariableList = VariableList::from(vec![]); - assert_eq!(fixed.tree_hash_root(), root_with_length(&[0; 8], 0)); - - for i in 0..=1 { - let fixed: VariableList = VariableList::from(vec![0; i]); - assert_eq!(fixed.tree_hash_root(), root_with_length(&vec![0; i], i)); - } - - for i in 0..=8 { - let fixed: VariableList = VariableList::from(vec![0; i]); - assert_eq!(fixed.tree_hash_root(), root_with_length(&vec![0; i], i)); - } - - for i in 0..=13 { - let fixed: VariableList = VariableList::from(vec![0; i]); - assert_eq!(fixed.tree_hash_root(), root_with_length(&vec![0; i], i)); - } - - for i in 0..=16 { - let fixed: VariableList = VariableList::from(vec![0; i]); - assert_eq!(fixed.tree_hash_root(), root_with_length(&vec![0; i], i)); - } - - let source: Vec = (0..16).collect(); - let fixed: VariableList = VariableList::from(source.clone()); - assert_eq!(fixed.tree_hash_root(), root_with_length(&source, 16)); - } - - #[derive(Clone, Copy, TreeHash, Default)] - struct A { - a: u32, - b: u32, - } - - fn repeat(input: &[u8], n: usize) -> Vec { - let mut output = vec![]; - - for _ in 0..n { - output.append(&mut input.to_vec()); - } - - output - } - - fn padded_root_with_length(bytes: &[u8], len: usize, min_nodes: usize) -> Hash256 { - let root = merkle_root(bytes, min_nodes); - tree_hash::mix_in_length(&root, len) - } - - #[test] - fn tree_hash_composite() { - let a = A { a: 0, b: 1 }; - - let fixed: VariableList = VariableList::from(vec![]); - assert_eq!( - fixed.tree_hash_root(), - padded_root_with_length(&[0; 32], 0, 0), - ); - - for i in 0..=1 { - let fixed: VariableList = VariableList::from(vec![a; i]); - assert_eq!( - fixed.tree_hash_root(), - padded_root_with_length(&repeat(a.tree_hash_root().as_bytes(), i), i, 1), - "U1 {}", - i - ); - } - - for i in 0..=8 { - let fixed: VariableList = VariableList::from(vec![a; i]); - assert_eq!( - fixed.tree_hash_root(), - padded_root_with_length(&repeat(a.tree_hash_root().as_bytes(), i), i, 8), - "U8 {}", - i - ); - } - - for i in 0..=13 { - let fixed: VariableList = VariableList::from(vec![a; i]); - assert_eq!( - fixed.tree_hash_root(), - padded_root_with_length(&repeat(a.tree_hash_root().as_bytes(), i), i, 13), - "U13 {}", - i - ); - } - - for i in 0..=16 { - let fixed: VariableList = VariableList::from(vec![a; i]); - assert_eq!( - fixed.tree_hash_root(), - padded_root_with_length(&repeat(a.tree_hash_root().as_bytes(), i), i, 16), - "U16 {}", - i - ); - } - } -} diff --git a/consensus/state_processing/Cargo.toml b/consensus/state_processing/Cargo.toml index ccb41830be..c16742782c 100644 --- a/consensus/state_processing/Cargo.toml +++ b/consensus/state_processing/Cargo.toml @@ -13,15 +13,15 @@ tokio = { version = "1.14.0", features = ["rt-multi-thread"] } bls = { path = "../../crypto/bls" } integer-sqrt = "0.1.5" itertools = "0.10.0" -eth2_ssz = "0.4.1" -eth2_ssz_derive = "0.3.1" -eth2_ssz_types = "0.2.2" +ethereum_ssz = "0.5.0" +ethereum_ssz_derive = "0.5.0" +ssz_types = "0.5.0" merkle_proof = { path = "../merkle_proof" } safe_arith = { path = "../safe_arith" } -tree_hash = "0.4.1" +tree_hash = "0.5.0" types = { path = "../types", default-features = false } rayon = "1.4.1" -eth2_hashing = "0.3.0" +ethereum_hashing = "1.0.0-beta.2" int_to_bytes = { path = "../int_to_bytes" } smallvec = "1.6.1" arbitrary = { version = "1.0", features = ["derive"], optional = true } @@ -39,7 +39,7 @@ arbitrary-fuzz = [ "types/arbitrary-fuzz", "bls/arbitrary", "merkle_proof/arbitrary", - "eth2_ssz/arbitrary", - "eth2_ssz_types/arbitrary", + "ethereum_ssz/arbitrary", + "ssz_types/arbitrary", "tree_hash/arbitrary", ] diff --git a/consensus/state_processing/src/common/deposit_data_tree.rs b/consensus/state_processing/src/common/deposit_data_tree.rs index aaad96fbd5..2e86556b0f 100644 --- a/consensus/state_processing/src/common/deposit_data_tree.rs +++ b/consensus/state_processing/src/common/deposit_data_tree.rs @@ -1,4 +1,4 @@ -use eth2_hashing::hash; +use ethereum_hashing::hash; use int_to_bytes::int_to_bytes32; use merkle_proof::{MerkleTree, MerkleTreeError}; use safe_arith::SafeArith; diff --git a/consensus/state_processing/src/per_block_processing/verify_bls_to_execution_change.rs b/consensus/state_processing/src/per_block_processing/verify_bls_to_execution_change.rs index bb26799250..731a82aa95 100644 --- a/consensus/state_processing/src/per_block_processing/verify_bls_to_execution_change.rs +++ b/consensus/state_processing/src/per_block_processing/verify_bls_to_execution_change.rs @@ -1,7 +1,7 @@ use super::errors::{BlockOperationError, BlsExecutionChangeInvalid as Invalid}; use crate::per_block_processing::signature_sets::bls_execution_change_signature_set; use crate::VerifySignatures; -use eth2_hashing::hash; +use ethereum_hashing::hash; use types::*; type Result = std::result::Result>; diff --git a/consensus/swap_or_not_shuffle/Cargo.toml b/consensus/swap_or_not_shuffle/Cargo.toml index 9a7d58b77d..303e5cfba1 100644 --- a/consensus/swap_or_not_shuffle/Cargo.toml +++ b/consensus/swap_or_not_shuffle/Cargo.toml @@ -12,7 +12,7 @@ harness = false criterion = "0.3.3" [dependencies] -eth2_hashing = "0.3.0" +ethereum_hashing = "1.0.0-beta.2" ethereum-types = "0.14.1" [features] diff --git a/consensus/swap_or_not_shuffle/src/compute_shuffled_index.rs b/consensus/swap_or_not_shuffle/src/compute_shuffled_index.rs index f43edfe864..e71f3ca18e 100644 --- a/consensus/swap_or_not_shuffle/src/compute_shuffled_index.rs +++ b/consensus/swap_or_not_shuffle/src/compute_shuffled_index.rs @@ -1,5 +1,5 @@ use crate::Hash256; -use eth2_hashing::{Context, Sha256Context}; +use ethereum_hashing::{Context, Sha256Context}; use std::cmp::max; /// Return `p(index)` in a pseudorandom permutation `p` of `0...list_size-1` with ``seed`` as entropy. diff --git a/consensus/swap_or_not_shuffle/src/shuffle_list.rs b/consensus/swap_or_not_shuffle/src/shuffle_list.rs index edc6dd6377..2b9a256554 100644 --- a/consensus/swap_or_not_shuffle/src/shuffle_list.rs +++ b/consensus/swap_or_not_shuffle/src/shuffle_list.rs @@ -1,5 +1,5 @@ use crate::Hash256; -use eth2_hashing::hash_fixed; +use ethereum_hashing::hash_fixed; use std::mem; const SEED_SIZE: usize = 32; diff --git a/consensus/tree_hash/Cargo.toml b/consensus/tree_hash/Cargo.toml deleted file mode 100644 index b2630d4bf6..0000000000 --- a/consensus/tree_hash/Cargo.toml +++ /dev/null @@ -1,23 +0,0 @@ -[package] -name = "tree_hash" -version = "0.4.1" -authors = ["Paul Hauner "] -edition = "2021" -license = "Apache-2.0" -description = "Efficient Merkle-hashing as used in Ethereum 2.0" - -[dev-dependencies] -rand = "0.8.5" -tree_hash_derive = "0.4.0" -types = { path = "../types" } -beacon_chain = { path = "../../beacon_node/beacon_chain" } -eth2_ssz = "0.4.1" -eth2_ssz_derive = "0.3.1" - -[dependencies] -ethereum-types = "0.14.1" -eth2_hashing = "0.3.0" -smallvec = "1.6.1" - -[features] -arbitrary = ["ethereum-types/arbitrary"] diff --git a/consensus/tree_hash/examples/flamegraph_beacon_state.rs b/consensus/tree_hash/examples/flamegraph_beacon_state.rs deleted file mode 100644 index e5b505bb91..0000000000 --- a/consensus/tree_hash/examples/flamegraph_beacon_state.rs +++ /dev/null @@ -1,50 +0,0 @@ -use beacon_chain::test_utils::{BeaconChainHarness, EphemeralHarnessType}; -use types::{BeaconState, EthSpec, MainnetEthSpec}; - -const TREE_HASH_LOOPS: usize = 1_000; -const VALIDATOR_COUNT: usize = 1_000; - -fn get_harness() -> BeaconChainHarness> { - let harness = BeaconChainHarness::builder(T::default()) - .default_spec() - .deterministic_keypairs(VALIDATOR_COUNT) - .fresh_ephemeral_store() - .build(); - - harness.advance_slot(); - - harness -} - -fn build_state() -> BeaconState { - let state = get_harness::().chain.head_beacon_state_cloned(); - - assert_eq!(state.as_base().unwrap().validators.len(), VALIDATOR_COUNT); - assert_eq!(state.as_base().unwrap().balances.len(), VALIDATOR_COUNT); - assert!(state - .as_base() - .unwrap() - .previous_epoch_attestations - .is_empty()); - assert!(state - .as_base() - .unwrap() - .current_epoch_attestations - .is_empty()); - assert!(state.as_base().unwrap().eth1_data_votes.is_empty()); - assert!(state.as_base().unwrap().historical_roots.is_empty()); - - state -} - -fn main() { - let state = build_state::(); - - // This vec is an attempt to ensure the compiler doesn't optimize-out the hashing. - let mut vec = Vec::with_capacity(TREE_HASH_LOOPS); - - for _ in 0..TREE_HASH_LOOPS { - let root = state.canonical_root(); - vec.push(root[0]); - } -} diff --git a/consensus/tree_hash/src/impls.rs b/consensus/tree_hash/src/impls.rs deleted file mode 100644 index 899356f833..0000000000 --- a/consensus/tree_hash/src/impls.rs +++ /dev/null @@ -1,222 +0,0 @@ -use super::*; -use ethereum_types::{H160, H256, U128, U256}; - -fn int_to_hash256(int: u64) -> Hash256 { - let mut bytes = [0; HASHSIZE]; - bytes[0..8].copy_from_slice(&int.to_le_bytes()); - Hash256::from_slice(&bytes) -} - -macro_rules! impl_for_bitsize { - ($type: ident, $bit_size: expr) => { - impl TreeHash for $type { - fn tree_hash_type() -> TreeHashType { - TreeHashType::Basic - } - - fn tree_hash_packed_encoding(&self) -> PackedEncoding { - PackedEncoding::from_slice(&self.to_le_bytes()) - } - - fn tree_hash_packing_factor() -> usize { - HASHSIZE / ($bit_size / 8) - } - - #[allow(clippy::cast_lossless)] // Lint does not apply to all uses of this macro. - fn tree_hash_root(&self) -> Hash256 { - int_to_hash256(*self as u64) - } - } - }; -} - -impl_for_bitsize!(u8, 8); -impl_for_bitsize!(u16, 16); -impl_for_bitsize!(u32, 32); -impl_for_bitsize!(u64, 64); -impl_for_bitsize!(usize, 64); - -impl TreeHash for bool { - fn tree_hash_type() -> TreeHashType { - TreeHashType::Basic - } - - fn tree_hash_packed_encoding(&self) -> PackedEncoding { - (*self as u8).tree_hash_packed_encoding() - } - - fn tree_hash_packing_factor() -> usize { - u8::tree_hash_packing_factor() - } - - fn tree_hash_root(&self) -> Hash256 { - int_to_hash256(*self as u64) - } -} - -/// Only valid for byte types less than 32 bytes. -macro_rules! impl_for_lt_32byte_u8_array { - ($len: expr) => { - impl TreeHash for [u8; $len] { - fn tree_hash_type() -> TreeHashType { - TreeHashType::Vector - } - - fn tree_hash_packed_encoding(&self) -> PackedEncoding { - unreachable!("bytesN should never be packed.") - } - - fn tree_hash_packing_factor() -> usize { - unreachable!("bytesN should never be packed.") - } - - fn tree_hash_root(&self) -> Hash256 { - let mut result = [0; 32]; - result[0..$len].copy_from_slice(&self[..]); - Hash256::from_slice(&result) - } - } - }; -} - -impl_for_lt_32byte_u8_array!(4); -impl_for_lt_32byte_u8_array!(32); - -impl TreeHash for [u8; 48] { - fn tree_hash_type() -> TreeHashType { - TreeHashType::Vector - } - - fn tree_hash_packed_encoding(&self) -> PackedEncoding { - unreachable!("Vector should never be packed.") - } - - fn tree_hash_packing_factor() -> usize { - unreachable!("Vector should never be packed.") - } - - fn tree_hash_root(&self) -> Hash256 { - let values_per_chunk = BYTES_PER_CHUNK; - let minimum_chunk_count = (48 + values_per_chunk - 1) / values_per_chunk; - merkle_root(self, minimum_chunk_count) - } -} - -impl TreeHash for U128 { - fn tree_hash_type() -> TreeHashType { - TreeHashType::Basic - } - - fn tree_hash_packed_encoding(&self) -> PackedEncoding { - let mut result = [0; 16]; - self.to_little_endian(&mut result); - PackedEncoding::from_slice(&result) - } - - fn tree_hash_packing_factor() -> usize { - 2 - } - - fn tree_hash_root(&self) -> Hash256 { - let mut result = [0; HASHSIZE]; - self.to_little_endian(&mut result[0..16]); - Hash256::from_slice(&result) - } -} - -impl TreeHash for U256 { - fn tree_hash_type() -> TreeHashType { - TreeHashType::Basic - } - - fn tree_hash_packed_encoding(&self) -> PackedEncoding { - let mut result = [0; 32]; - self.to_little_endian(&mut result); - PackedEncoding::from_slice(&result) - } - - fn tree_hash_packing_factor() -> usize { - 1 - } - - fn tree_hash_root(&self) -> Hash256 { - let mut result = [0; 32]; - self.to_little_endian(&mut result[..]); - Hash256::from_slice(&result) - } -} - -impl TreeHash for H160 { - fn tree_hash_type() -> TreeHashType { - TreeHashType::Vector - } - - fn tree_hash_packed_encoding(&self) -> PackedEncoding { - let mut result = [0; 32]; - result[0..20].copy_from_slice(self.as_bytes()); - PackedEncoding::from_slice(&result) - } - - fn tree_hash_packing_factor() -> usize { - 1 - } - - fn tree_hash_root(&self) -> Hash256 { - let mut result = [0; 32]; - result[0..20].copy_from_slice(self.as_bytes()); - Hash256::from_slice(&result) - } -} - -impl TreeHash for H256 { - fn tree_hash_type() -> TreeHashType { - TreeHashType::Vector - } - - fn tree_hash_packed_encoding(&self) -> PackedEncoding { - PackedEncoding::from_slice(self.as_bytes()) - } - - fn tree_hash_packing_factor() -> usize { - 1 - } - - fn tree_hash_root(&self) -> Hash256 { - *self - } -} - -#[cfg(test)] -mod test { - use super::*; - - #[test] - fn bool() { - let mut true_bytes: Vec = vec![1]; - true_bytes.append(&mut vec![0; 31]); - - let false_bytes: Vec = vec![0; 32]; - - assert_eq!(true.tree_hash_root().as_bytes(), true_bytes.as_slice()); - assert_eq!(false.tree_hash_root().as_bytes(), false_bytes.as_slice()); - } - - #[test] - fn int_to_bytes() { - assert_eq!(int_to_hash256(0).as_bytes(), &[0; 32]); - assert_eq!( - int_to_hash256(1).as_bytes(), - &[ - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0 - ] - ); - assert_eq!( - int_to_hash256(u64::max_value()).as_bytes(), - &[ - 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 - ] - ); - } -} diff --git a/consensus/tree_hash/src/lib.rs b/consensus/tree_hash/src/lib.rs deleted file mode 100644 index ec40de9160..0000000000 --- a/consensus/tree_hash/src/lib.rs +++ /dev/null @@ -1,208 +0,0 @@ -pub mod impls; -mod merkle_hasher; -mod merkleize_padded; -mod merkleize_standard; - -pub use merkle_hasher::{Error, MerkleHasher}; -pub use merkleize_padded::merkleize_padded; -pub use merkleize_standard::merkleize_standard; - -use eth2_hashing::{hash_fixed, ZERO_HASHES, ZERO_HASHES_MAX_INDEX}; -use smallvec::SmallVec; - -pub const BYTES_PER_CHUNK: usize = 32; -pub const HASHSIZE: usize = 32; -pub const MERKLE_HASH_CHUNK: usize = 2 * BYTES_PER_CHUNK; -pub const MAX_UNION_SELECTOR: u8 = 127; -pub const SMALLVEC_SIZE: usize = 32; - -pub type Hash256 = ethereum_types::H256; -pub type PackedEncoding = SmallVec<[u8; SMALLVEC_SIZE]>; - -/// Convenience method for `MerkleHasher` which also provides some fast-paths for small trees. -/// -/// `minimum_leaf_count` will only be used if it is greater than or equal to the minimum number of leaves that can be created from `bytes`. -pub fn merkle_root(bytes: &[u8], minimum_leaf_count: usize) -> Hash256 { - let leaves = std::cmp::max( - (bytes.len() + (HASHSIZE - 1)) / HASHSIZE, - minimum_leaf_count, - ); - - if leaves == 0 { - // If there are no bytes then the hash is always zero. - Hash256::zero() - } else if leaves == 1 { - // If there is only one leaf, the hash is always those leaf bytes padded out to 32-bytes. - let mut hash = [0; HASHSIZE]; - hash[0..bytes.len()].copy_from_slice(bytes); - Hash256::from_slice(&hash) - } else if leaves == 2 { - // If there are only two leaves (this is common with BLS pubkeys), we can avoid some - // overhead with `MerkleHasher` and just do a simple 3-node tree here. - let mut leaves = [0; HASHSIZE * 2]; - leaves[0..bytes.len()].copy_from_slice(bytes); - - Hash256::from_slice(&hash_fixed(&leaves)) - } else { - // If there are 3 or more leaves, use `MerkleHasher`. - let mut hasher = MerkleHasher::with_leaves(leaves); - hasher - .write(bytes) - .expect("the number of leaves is adequate for the number of bytes"); - hasher - .finish() - .expect("the number of leaves is adequate for the number of bytes") - } -} - -/// Returns the node created by hashing `root` and `length`. -/// -/// Used in `TreeHash` for inserting the length of a list above it's root. -pub fn mix_in_length(root: &Hash256, length: usize) -> Hash256 { - let usize_len = std::mem::size_of::(); - - let mut length_bytes = [0; BYTES_PER_CHUNK]; - length_bytes[0..usize_len].copy_from_slice(&length.to_le_bytes()); - - Hash256::from_slice(ð2_hashing::hash32_concat(root.as_bytes(), &length_bytes)[..]) -} - -/// Returns `Some(root)` created by hashing `root` and `selector`, if `selector <= -/// MAX_UNION_SELECTOR`. Otherwise, returns `None`. -/// -/// Used in `TreeHash` for the "union" type. -/// -/// ## Specification -/// -/// ```ignore,text -/// mix_in_selector: Given a Merkle root root and a type selector selector ("uint256" little-endian -/// serialization) return hash(root + selector). -/// ``` -/// -/// https://github.com/ethereum/consensus-specs/blob/v1.1.0-beta.3/ssz/simple-serialize.md#union -pub fn mix_in_selector(root: &Hash256, selector: u8) -> Option { - if selector > MAX_UNION_SELECTOR { - return None; - } - - let mut chunk = [0; BYTES_PER_CHUNK]; - chunk[0] = selector; - - let root = eth2_hashing::hash32_concat(root.as_bytes(), &chunk); - Some(Hash256::from_slice(&root)) -} - -/// Returns a cached padding node for a given height. -fn get_zero_hash(height: usize) -> &'static [u8] { - if height <= ZERO_HASHES_MAX_INDEX { - &ZERO_HASHES[height] - } else { - panic!("Tree exceeds MAX_TREE_DEPTH of {}", ZERO_HASHES_MAX_INDEX) - } -} - -#[derive(Debug, PartialEq, Clone)] -pub enum TreeHashType { - Basic, - Vector, - List, - Container, -} - -pub trait TreeHash { - fn tree_hash_type() -> TreeHashType; - - fn tree_hash_packed_encoding(&self) -> PackedEncoding; - - fn tree_hash_packing_factor() -> usize; - - fn tree_hash_root(&self) -> Hash256; -} - -/// Punch through references. -impl<'a, T> TreeHash for &'a T -where - T: TreeHash, -{ - fn tree_hash_type() -> TreeHashType { - T::tree_hash_type() - } - - fn tree_hash_packed_encoding(&self) -> PackedEncoding { - T::tree_hash_packed_encoding(*self) - } - - fn tree_hash_packing_factor() -> usize { - T::tree_hash_packing_factor() - } - - fn tree_hash_root(&self) -> Hash256 { - T::tree_hash_root(*self) - } -} - -#[macro_export] -macro_rules! tree_hash_ssz_encoding_as_vector { - ($type: ident) => { - impl tree_hash::TreeHash for $type { - fn tree_hash_type() -> tree_hash::TreeHashType { - tree_hash::TreeHashType::Vector - } - - fn tree_hash_packed_encoding(&self) -> PackedEncoding { - unreachable!("Vector should never be packed.") - } - - fn tree_hash_packing_factor() -> usize { - unreachable!("Vector should never be packed.") - } - - fn tree_hash_root(&self) -> Vec { - tree_hash::merkle_root(&ssz::ssz_encode(self)) - } - } - }; -} - -#[macro_export] -macro_rules! tree_hash_ssz_encoding_as_list { - ($type: ident) => { - impl tree_hash::TreeHash for $type { - fn tree_hash_type() -> tree_hash::TreeHashType { - tree_hash::TreeHashType::List - } - - fn tree_hash_packed_encoding(&self) -> PackedEncoding { - unreachable!("List should never be packed.") - } - - fn tree_hash_packing_factor() -> usize { - unreachable!("List should never be packed.") - } - - fn tree_hash_root(&self) -> Vec { - ssz::ssz_encode(self).tree_hash_root() - } - } - }; -} - -#[cfg(test)] -mod test { - use super::*; - - #[test] - fn mix_length() { - let hash = { - let mut preimage = vec![42; BYTES_PER_CHUNK]; - preimage.append(&mut vec![42]); - preimage.append(&mut vec![0; BYTES_PER_CHUNK - 1]); - eth2_hashing::hash(&preimage) - }; - - assert_eq!( - mix_in_length(&Hash256::from_slice(&[42; BYTES_PER_CHUNK]), 42).as_bytes(), - &hash[..] - ); - } -} diff --git a/consensus/tree_hash/src/merkle_hasher.rs b/consensus/tree_hash/src/merkle_hasher.rs deleted file mode 100644 index 2acaf1c3b8..0000000000 --- a/consensus/tree_hash/src/merkle_hasher.rs +++ /dev/null @@ -1,573 +0,0 @@ -use crate::{get_zero_hash, Hash256, HASHSIZE}; -use eth2_hashing::{Context, Sha256Context, HASH_LEN}; -use smallvec::{smallvec, SmallVec}; -use std::mem; - -type SmallVec8 = SmallVec<[T; 8]>; - -#[derive(Clone, Debug, PartialEq)] -pub enum Error { - /// The maximum number of leaves defined by the initialization `depth` has been exceed. - MaximumLeavesExceeded { max_leaves: usize }, -} - -/// Helper struct to store either a hash digest or a slice. -/// -/// Should be used as a left or right value for some node. -enum Preimage<'a> { - Digest([u8; HASH_LEN]), - Slice(&'a [u8]), -} - -impl<'a> Preimage<'a> { - /// Returns a 32-byte slice. - fn as_bytes(&self) -> &[u8] { - match self { - Preimage::Digest(digest) => digest.as_ref(), - Preimage::Slice(slice) => slice, - } - } -} - -/// A node that has had a left child supplied, but not a right child. -struct HalfNode { - /// The hasher context. - context: Context, - /// The tree id of the node. The root node has in id of `1` and ids increase moving down the - /// tree from left to right. - id: usize, -} - -impl HalfNode { - /// Create a new half-node from the given `left` value. - fn new(id: usize, left: Preimage) -> Self { - let mut context = Context::new(); - context.update(left.as_bytes()); - - Self { context, id } - } - - /// Complete the half-node by providing a `right` value. Returns a digest of the left and right - /// nodes. - fn finish(mut self, right: Preimage) -> [u8; HASH_LEN] { - self.context.update(right.as_bytes()); - self.context.finalize() - } -} - -/// Provides a Merkle-root hasher that allows for streaming bytes (i.e., providing any-length byte -/// slices without need to separate into leaves). Efficiently handles cases where not all leaves -/// have been provided by assuming all non-provided leaves are `[0; 32]` and pre-computing the -/// zero-value hashes at all depths of the tree. -/// -/// This algorithm aims to allocate as little memory as possible and it does this by "folding" up -/// the tree as each leaf is provided. Consider this step-by-step functional diagram of hashing a -/// tree with depth three: -/// -/// ## Functional Diagram -/// -/// Nodes that are `-` have not been defined and do not occupy memory. Nodes that are `L` are -/// leaves that are provided but are not stored. Nodes that have integers (`1`, `2`) are stored in -/// our struct. Finally, nodes that are `X` were stored, but are now removed. -/// -/// ### Start -/// -/// ```ignore -/// - -/// / \ -/// - - -/// / \ / \ -/// - - - - -/// ``` -/// -/// ### Provide first leaf -/// -/// ```ignore -/// - -/// / \ -/// 2 - -/// / \ / \ -/// L - - - -/// ``` -/// -/// ### Provide second leaf -/// -/// ```ignore -/// 1 -/// / \ -/// X - -/// / \ / \ -/// L L - - -/// ``` -/// -/// ### Provide third leaf -/// -/// ```ignore -/// 1 -/// / \ -/// X 3 -/// / \ / \ -/// L L L - -/// ``` -/// -/// ### Provide fourth and final leaf -/// -/// ```ignore -/// 1 -/// / \ -/// X X -/// / \ / \ -/// L L L L -/// ``` -/// -pub struct MerkleHasher { - /// Stores the nodes that are half-complete and awaiting a right node. - /// - /// A smallvec of size 8 means we can hash a tree with 256 leaves without allocating on the - /// heap. Each half-node is 232 bytes, so this smallvec may store 1856 bytes on the stack. - half_nodes: SmallVec8, - /// The depth of the tree that will be produced. - /// - /// Depth is counted top-down (i.e., the root node is at depth 0). A tree with 1 leaf has a - /// depth of 1, a tree with 4 leaves has a depth of 3. - depth: usize, - /// The next leaf that we are expecting to process. - next_leaf: usize, - /// A buffer of bytes that are waiting to be written to a leaf. - buffer: SmallVec<[u8; 32]>, - /// Set to Some(root) when the root of the tree is known. - root: Option, -} - -/// Returns the parent of node with id `i`. -fn get_parent(i: usize) -> usize { - i / 2 -} - -/// Gets the depth of a node with an id of `i`. -/// -/// It is a logic error to provide `i == 0`. -/// -/// E.g., if `i` is 1, depth is 0. If `i` is is 1, depth is 1. -fn get_depth(i: usize) -> usize { - let total_bits = mem::size_of::() * 8; - total_bits - i.leading_zeros() as usize - 1 -} - -impl MerkleHasher { - /// Instantiate a hasher for a tree with a given number of leaves. - /// - /// `num_leaves` will be rounded to the next power of two. E.g., if `num_leaves == 6`, then the - /// tree will _actually_ be able to accomodate 8 leaves and the resulting hasher is exactly the - /// same as one that was instantiated with `Self::with_leaves(8)`. - /// - /// ## Notes - /// - /// If `num_leaves == 0`, a tree of depth 1 will be created. If no leaves are provided it will - /// return a root of `[0; 32]`. - pub fn with_leaves(num_leaves: usize) -> Self { - let depth = get_depth(num_leaves.next_power_of_two()) + 1; - Self::with_depth(depth) - } - - /// Instantiates a new, empty hasher for a tree with `depth` layers which will have capacity - /// for `1 << (depth - 1)` leaf nodes. - /// - /// It is not possible to grow the depth of the tree after instantiation. - /// - /// ## Panics - /// - /// Panics if `depth == 0`. - fn with_depth(depth: usize) -> Self { - assert!(depth > 0, "merkle tree cannot have a depth of zero"); - - Self { - half_nodes: SmallVec::with_capacity(depth - 1), - depth, - next_leaf: 1 << (depth - 1), - buffer: SmallVec::with_capacity(32), - root: None, - } - } - - /// Write some bytes to the hasher. - /// - /// ## Errors - /// - /// Returns an error if the given bytes would create a leaf that would exceed the maximum - /// permissible number of leaves defined by the initialization `depth`. E.g., a tree of `depth - /// == 2` can only accept 2 leaves. A tree of `depth == 14` can only accept 8,192 leaves. - pub fn write(&mut self, bytes: &[u8]) -> Result<(), Error> { - let mut ptr = 0; - while ptr <= bytes.len() { - let slice = &bytes[ptr..std::cmp::min(bytes.len(), ptr + HASHSIZE)]; - - if self.buffer.is_empty() && slice.len() == HASHSIZE { - self.process_leaf(slice)?; - ptr += HASHSIZE - } else if self.buffer.len() + slice.len() < HASHSIZE { - self.buffer.extend_from_slice(slice); - ptr += HASHSIZE - } else { - let buf_len = self.buffer.len(); - let required = HASHSIZE - buf_len; - - let mut leaf = [0; HASHSIZE]; - leaf[..buf_len].copy_from_slice(&self.buffer); - leaf[buf_len..].copy_from_slice(&slice[0..required]); - - self.process_leaf(&leaf)?; - self.buffer = smallvec![]; - - ptr += required - } - } - - Ok(()) - } - - /// Process the next leaf in the tree. - /// - /// ## Errors - /// - /// Returns an error if the given leaf would exceed the maximum permissible number of leaves - /// defined by the initialization `depth`. E.g., a tree of `depth == 2` can only accept 2 - /// leaves. A tree of `depth == 14` can only accept 8,192 leaves. - fn process_leaf(&mut self, leaf: &[u8]) -> Result<(), Error> { - assert_eq!(leaf.len(), HASHSIZE, "a leaf must be 32 bytes"); - - let max_leaves = 1 << (self.depth + 1); - - if self.next_leaf > max_leaves { - return Err(Error::MaximumLeavesExceeded { max_leaves }); - } else if self.next_leaf == 1 { - // A tree of depth one has a root that is equal to the first given leaf. - self.root = Some(Hash256::from_slice(leaf)) - } else if self.next_leaf % 2 == 0 { - self.process_left_node(self.next_leaf, Preimage::Slice(leaf)) - } else { - self.process_right_node(self.next_leaf, Preimage::Slice(leaf)) - } - - self.next_leaf += 1; - - Ok(()) - } - - /// Returns the root of the Merkle tree. - /// - /// If not all leaves have been provided, the tree will be efficiently completed under the - /// assumption that all not-yet-provided leaves are equal to `[0; 32]`. - /// - /// ## Errors - /// - /// Returns an error if the bytes remaining in the buffer would create a leaf that would exceed - /// the maximum permissible number of leaves defined by the initialization `depth`. - pub fn finish(mut self) -> Result { - if !self.buffer.is_empty() { - let mut leaf = [0; HASHSIZE]; - leaf[..self.buffer.len()].copy_from_slice(&self.buffer); - self.process_leaf(&leaf)? - } - - // If the tree is incomplete, we must complete it by providing zero-hashes. - loop { - if let Some(root) = self.root { - break Ok(root); - } else if let Some(node) = self.half_nodes.last() { - let right_child = node.id * 2 + 1; - self.process_right_node(right_child, self.zero_hash(right_child)); - } else if self.next_leaf == 1 { - // The next_leaf can only be 1 if the tree has a depth of one. If have been no - // leaves supplied, assume a root of zero. - break Ok(Hash256::zero()); - } else { - // The only scenario where there are (a) no half nodes and (b) a tree of depth - // two or more is where no leaves have been supplied at all. - // - // Once we supply this first zero-hash leaf then all future operations will be - // triggered via the `process_right_node` branch. - self.process_left_node(self.next_leaf, self.zero_hash(self.next_leaf)) - } - } - } - - /// Process a node that will become the left-hand node of some parent. The supplied `id` is - /// that of the node (not the parent). The `preimage` is the value of the node (i.e., if this - /// is a leaf node it will be the value of that leaf). - /// - /// In this scenario, the only option is to push a new half-node. - fn process_left_node(&mut self, id: usize, preimage: Preimage) { - self.half_nodes - .push(HalfNode::new(get_parent(id), preimage)) - } - - /// Process a node that will become the right-hand node of some parent. The supplied `id` is - /// that of the node (not the parent). The `preimage` is the value of the node (i.e., if this - /// is a leaf node it will be the value of that leaf). - /// - /// This operation will always complete one node, then it will attempt to crawl up the tree and - /// collapse all other completed nodes. For example, consider a tree of depth 3 (see diagram - /// below). When providing the node with id `7`, the node with id `3` will be completed which - /// will also provide the right-node for the `1` node. This function will complete both of - /// those nodes and ultimately find the root of the tree. - /// - /// ```ignore - /// 1 <-- completed - /// / \ - /// 2 3 <-- completed - /// / \ / \ - /// 4 5 6 7 <-- supplied right node - /// ``` - fn process_right_node(&mut self, id: usize, mut preimage: Preimage) { - let mut parent = get_parent(id); - - loop { - match self.half_nodes.last() { - Some(node) if node.id == parent => { - preimage = Preimage::Digest( - self.half_nodes - .pop() - .expect("if .last() is Some then .pop() must succeed") - .finish(preimage), - ); - if parent == 1 { - self.root = Some(Hash256::from_slice(preimage.as_bytes())); - break; - } else { - parent = get_parent(parent); - } - } - _ => { - self.half_nodes.push(HalfNode::new(parent, preimage)); - break; - } - } - } - } - - /// Returns a "zero hash" from a pre-computed set for the given node. - /// - /// Note: this node is not always zero, instead it is the result of hashing up a tree where the - /// leaves are all zeros. E.g., in a tree of depth 2, the `zero_hash` of a node at depth 1 - /// will be `[0; 32]`. However, the `zero_hash` for a node at depth 0 will be - /// `hash(concat([0; 32], [0; 32])))`. - fn zero_hash(&self, id: usize) -> Preimage<'static> { - Preimage::Slice(get_zero_hash(self.depth - (get_depth(id) + 1))) - } -} - -#[cfg(test)] -mod test { - use super::*; - use crate::merkleize_padded; - - /// This test is just to ensure that the stack size of the `Context` remains the same. We choose - /// our smallvec size based upon this, so it's good to know if it suddenly changes in size. - #[test] - fn context_size() { - assert_eq!( - mem::size_of::(), - 224, - "Halfnode size should be as expected" - ); - } - - fn compare_with_reference(leaves: &[Hash256], depth: usize) { - let reference_bytes = leaves - .iter() - .flat_map(|hash| hash.as_bytes()) - .copied() - .collect::>(); - - let reference_root = merkleize_padded(&reference_bytes, 1 << (depth - 1)); - - let merklizer_root_32_bytes = { - let mut m = MerkleHasher::with_depth(depth); - for leaf in leaves.iter() { - m.write(leaf.as_bytes()).expect("should process leaf"); - } - m.finish().expect("should finish") - }; - - assert_eq!( - reference_root, merklizer_root_32_bytes, - "32 bytes should match reference root" - ); - - let merklizer_root_individual_3_bytes = { - let mut m = MerkleHasher::with_depth(depth); - for bytes in reference_bytes.chunks(3) { - m.write(bytes).expect("should process byte"); - } - m.finish().expect("should finish") - }; - - assert_eq!( - reference_root, merklizer_root_individual_3_bytes, - "3 bytes should match reference root" - ); - - let merklizer_root_individual_single_bytes = { - let mut m = MerkleHasher::with_depth(depth); - for byte in reference_bytes.iter() { - m.write(&[*byte]).expect("should process byte"); - } - m.finish().expect("should finish") - }; - - assert_eq!( - reference_root, merklizer_root_individual_single_bytes, - "single bytes should match reference root" - ); - } - - /// A simple wrapper to compare MerkleHasher to the reference function by just giving a number - /// of leaves and a depth. - fn compare_reference_with_len(leaves: u64, depth: usize) { - let leaves = (0..leaves) - .map(Hash256::from_low_u64_be) - .collect::>(); - compare_with_reference(&leaves, depth) - } - - /// Compares the `MerkleHasher::with_depth` and `MerkleHasher::with_leaves` generate consistent - /// results. - fn compare_new_with_leaf_count(num_leaves: u64, depth: usize) { - let leaves = (0..num_leaves) - .map(Hash256::from_low_u64_be) - .collect::>(); - - let from_depth = { - let mut m = MerkleHasher::with_depth(depth); - for leaf in leaves.iter() { - m.write(leaf.as_bytes()).expect("should process leaf"); - } - m.finish() - }; - - let from_num_leaves = { - let mut m = MerkleHasher::with_leaves(num_leaves as usize); - for leaf in leaves.iter() { - m.process_leaf(leaf.as_bytes()) - .expect("should process leaf"); - } - m.finish() - }; - - assert_eq!( - from_depth, from_num_leaves, - "hash generated by depth should match that from num leaves" - ); - } - - #[test] - fn with_leaves() { - compare_new_with_leaf_count(1, 1); - compare_new_with_leaf_count(2, 2); - compare_new_with_leaf_count(3, 3); - compare_new_with_leaf_count(4, 3); - compare_new_with_leaf_count(5, 4); - compare_new_with_leaf_count(6, 4); - compare_new_with_leaf_count(7, 4); - compare_new_with_leaf_count(8, 4); - compare_new_with_leaf_count(9, 5); - compare_new_with_leaf_count(10, 5); - compare_new_with_leaf_count(11, 5); - compare_new_with_leaf_count(12, 5); - compare_new_with_leaf_count(13, 5); - compare_new_with_leaf_count(14, 5); - compare_new_with_leaf_count(15, 5); - } - - #[test] - fn depth() { - assert_eq!(get_depth(1), 0); - assert_eq!(get_depth(2), 1); - assert_eq!(get_depth(3), 1); - assert_eq!(get_depth(4), 2); - assert_eq!(get_depth(5), 2); - assert_eq!(get_depth(6), 2); - assert_eq!(get_depth(7), 2); - assert_eq!(get_depth(8), 3); - } - - #[test] - fn with_0_leaves() { - let hasher = MerkleHasher::with_leaves(0); - assert_eq!(hasher.finish().unwrap(), Hash256::zero()); - } - - #[test] - #[should_panic] - fn too_many_leaves() { - compare_reference_with_len(2, 1); - } - - #[test] - fn full_trees() { - compare_reference_with_len(1, 1); - compare_reference_with_len(2, 2); - compare_reference_with_len(4, 3); - compare_reference_with_len(8, 4); - compare_reference_with_len(16, 5); - compare_reference_with_len(32, 6); - compare_reference_with_len(64, 7); - compare_reference_with_len(128, 8); - compare_reference_with_len(256, 9); - compare_reference_with_len(256, 9); - compare_reference_with_len(8192, 14); - } - - #[test] - fn incomplete_trees() { - compare_reference_with_len(0, 1); - - compare_reference_with_len(0, 2); - compare_reference_with_len(1, 2); - - for i in 0..=4 { - compare_reference_with_len(i, 3); - } - - for i in 0..=7 { - compare_reference_with_len(i, 4); - } - - for i in 0..=15 { - compare_reference_with_len(i, 5); - } - - for i in 0..=32 { - compare_reference_with_len(i, 6); - } - - for i in 0..=64 { - compare_reference_with_len(i, 7); - } - - compare_reference_with_len(0, 14); - compare_reference_with_len(13, 14); - compare_reference_with_len(8191, 14); - } - - #[test] - fn remaining_buffer() { - let a = { - let mut m = MerkleHasher::with_leaves(2); - m.write(&[1]).expect("should write"); - m.finish().expect("should finish") - }; - - let b = { - let mut m = MerkleHasher::with_leaves(2); - let mut leaf = vec![1]; - leaf.extend_from_slice(&[0; 31]); - m.write(&leaf).expect("should write"); - m.write(&[0; 32]).expect("should write"); - m.finish().expect("should finish") - }; - - assert_eq!(a, b, "should complete buffer"); - } -} diff --git a/consensus/tree_hash/src/merkleize_padded.rs b/consensus/tree_hash/src/merkleize_padded.rs deleted file mode 100644 index f7dce39949..0000000000 --- a/consensus/tree_hash/src/merkleize_padded.rs +++ /dev/null @@ -1,330 +0,0 @@ -use super::{get_zero_hash, Hash256, BYTES_PER_CHUNK}; -use eth2_hashing::{hash32_concat, hash_fixed}; - -/// Merkleize `bytes` and return the root, optionally padding the tree out to `min_leaves` number of -/// leaves. -/// -/// **Note**: This function is generally worse than using the `crate::merkle_root` which uses -/// `MerkleHasher`. We only keep this function around for reference testing. -/// -/// First all nodes are extracted from `bytes` and then a padding node is added until the number of -/// leaf chunks is greater than or equal to `min_leaves`. Callers may set `min_leaves` to `0` if no -/// adding additional chunks should be added to the given `bytes`. -/// -/// If `bytes.len() <= BYTES_PER_CHUNK`, no hashing is done and `bytes` is returned, potentially -/// padded out to `BYTES_PER_CHUNK` length with `0`. -/// -/// ## CPU Performance -/// -/// A cache of `MAX_TREE_DEPTH` hashes are stored to avoid re-computing the hashes of padding nodes -/// (or their parents). Therefore, adding padding nodes only incurs one more hash per additional -/// height of the tree. -/// -/// ## Memory Performance -/// -/// This algorithm has two interesting memory usage properties: -/// -/// 1. The maximum memory footprint is roughly `O(V / 2)` memory, where `V` is the number of leaf -/// chunks with values (i.e., leaves that are not padding). The means adding padding nodes to -/// the tree does not increase the memory footprint. -/// 2. At each height of the tree half of the memory is freed until only a single chunk is stored. -/// 3. The input `bytes` are not copied into another list before processing. -/// -/// _Note: there are some minor memory overheads, including a handful of usizes and a list of -/// `MAX_TREE_DEPTH` hashes as `lazy_static` constants._ -pub fn merkleize_padded(bytes: &[u8], min_leaves: usize) -> Hash256 { - // If the bytes are just one chunk or less, pad to one chunk and return without hashing. - if bytes.len() <= BYTES_PER_CHUNK && min_leaves <= 1 { - let mut o = bytes.to_vec(); - o.resize(BYTES_PER_CHUNK, 0); - return Hash256::from_slice(&o); - } - - assert!( - bytes.len() > BYTES_PER_CHUNK || min_leaves > 1, - "Merkle hashing only needs to happen if there is more than one chunk" - ); - - // The number of leaves that can be made directly from `bytes`. - let leaves_with_values = (bytes.len() + (BYTES_PER_CHUNK - 1)) / BYTES_PER_CHUNK; - - // The number of parents that have at least one non-padding leaf. - // - // Since there is more than one node in this tree (see prior assertion), there should always be - // one or more initial parent nodes. - let initial_parents_with_values = std::cmp::max(1, next_even_number(leaves_with_values) / 2); - - // The number of leaves in the full tree (including padding nodes). - let num_leaves = std::cmp::max(leaves_with_values, min_leaves).next_power_of_two(); - - // The number of levels in the tree. - // - // A tree with a single node has `height == 1`. - let height = num_leaves.trailing_zeros() as usize + 1; - - assert!(height >= 2, "The tree should have two or more heights"); - - // A buffer/scratch-space used for storing each round of hashes at each height. - // - // This buffer is kept as small as possible; it will shrink so it never stores a padding node. - let mut chunks = ChunkStore::with_capacity(initial_parents_with_values); - - // Create a parent in the `chunks` buffer for every two chunks in `bytes`. - // - // I.e., do the first round of hashing, hashing from the `bytes` slice and filling the `chunks` - // struct. - for i in 0..initial_parents_with_values { - let start = i * BYTES_PER_CHUNK * 2; - - // Hash two chunks, creating a parent chunk. - let hash = match bytes.get(start..start + BYTES_PER_CHUNK * 2) { - // All bytes are available, hash as usual. - Some(slice) => hash_fixed(slice), - // Unable to get all the bytes, get a small slice and pad it out. - None => { - let mut preimage = bytes - .get(start..) - .expect("`i` can only be larger than zero if there are bytes to read") - .to_vec(); - preimage.resize(BYTES_PER_CHUNK * 2, 0); - hash_fixed(&preimage) - } - }; - - assert_eq!( - hash.len(), - BYTES_PER_CHUNK, - "Hashes should be exactly one chunk" - ); - - // Store the parent node. - chunks - .set(i, &hash) - .expect("Buffer should always have capacity for parent nodes") - } - - // Iterate through all heights above the leaf nodes and either (a) hash two children or, (b) - // hash a left child and a right padding node. - // - // Skip the 0'th height because the leaves have already been processed. Skip the highest-height - // in the tree as it is the root does not require hashing. - // - // The padding nodes for each height are cached via `lazy static` to simulate non-adjacent - // padding nodes (i.e., avoid doing unnecessary hashing). - for height in 1..height - 1 { - let child_nodes = chunks.len(); - let parent_nodes = next_even_number(child_nodes) / 2; - - // For each pair of nodes stored in `chunks`: - // - // - If two nodes are available, hash them to form a parent. - // - If one node is available, hash it and a cached padding node to form a parent. - for i in 0..parent_nodes { - let (left, right) = match (chunks.get(i * 2), chunks.get(i * 2 + 1)) { - (Ok(left), Ok(right)) => (left, right), - (Ok(left), Err(_)) => (left, get_zero_hash(height)), - // Deriving `parent_nodes` from `chunks.len()` has ensured that we never encounter the - // scenario where we expect two nodes but there are none. - (Err(_), Err(_)) => unreachable!("Parent must have one child"), - // `chunks` is a contiguous array so it is impossible for an index to be missing - // when a higher index is present. - (Err(_), Ok(_)) => unreachable!("Parent must have a left child"), - }; - - assert!( - left.len() == right.len() && right.len() == BYTES_PER_CHUNK, - "Both children should be `BYTES_PER_CHUNK` bytes." - ); - - let hash = hash32_concat(left, right); - - // Store a parent node. - chunks - .set(i, &hash) - .expect("Buf is adequate size for parent"); - } - - // Shrink the buffer so it neatly fits the number of new nodes created in this round. - // - // The number of `parent_nodes` is either decreasing or stable. It never increases. - chunks.truncate(parent_nodes); - } - - // There should be a single chunk left in the buffer and it is the Merkle root. - let root = chunks.into_vec(); - - assert_eq!(root.len(), BYTES_PER_CHUNK, "Only one chunk should remain"); - - Hash256::from_slice(&root) -} - -/// A helper struct for storing words of `BYTES_PER_CHUNK` size in a flat byte array. -#[derive(Debug)] -struct ChunkStore(Vec); - -impl ChunkStore { - /// Creates a new instance with `chunks` padding nodes. - fn with_capacity(chunks: usize) -> Self { - Self(vec![0; chunks * BYTES_PER_CHUNK]) - } - - /// Set the `i`th chunk to `value`. - /// - /// Returns `Err` if `value.len() != BYTES_PER_CHUNK` or `i` is out-of-bounds. - fn set(&mut self, i: usize, value: &[u8]) -> Result<(), ()> { - if i < self.len() && value.len() == BYTES_PER_CHUNK { - let slice = &mut self.0[i * BYTES_PER_CHUNK..i * BYTES_PER_CHUNK + BYTES_PER_CHUNK]; - slice.copy_from_slice(value); - Ok(()) - } else { - Err(()) - } - } - - /// Gets the `i`th chunk. - /// - /// Returns `Err` if `i` is out-of-bounds. - fn get(&self, i: usize) -> Result<&[u8], ()> { - if i < self.len() { - Ok(&self.0[i * BYTES_PER_CHUNK..i * BYTES_PER_CHUNK + BYTES_PER_CHUNK]) - } else { - Err(()) - } - } - - /// Returns the number of chunks presently stored in `self`. - fn len(&self) -> usize { - self.0.len() / BYTES_PER_CHUNK - } - - /// Truncates 'self' to `num_chunks` chunks. - /// - /// Functionally identical to `Vec::truncate`. - fn truncate(&mut self, num_chunks: usize) { - self.0.truncate(num_chunks * BYTES_PER_CHUNK) - } - - /// Consumes `self`, returning the underlying byte array. - fn into_vec(self) -> Vec { - self.0 - } -} - -/// Returns the next even number following `n`. If `n` is even, `n` is returned. -fn next_even_number(n: usize) -> usize { - n + n % 2 -} - -#[cfg(test)] -mod test { - use super::*; - use crate::ZERO_HASHES_MAX_INDEX; - - pub fn reference_root(bytes: &[u8]) -> Hash256 { - crate::merkleize_standard(bytes) - } - - macro_rules! common_tests { - ($get_bytes: ident) => { - #[test] - fn zero_value_0_nodes() { - test_against_reference(&$get_bytes(0 * BYTES_PER_CHUNK), 0); - } - - #[test] - fn zero_value_1_nodes() { - test_against_reference(&$get_bytes(1 * BYTES_PER_CHUNK), 0); - } - - #[test] - fn zero_value_2_nodes() { - test_against_reference(&$get_bytes(2 * BYTES_PER_CHUNK), 0); - } - - #[test] - fn zero_value_3_nodes() { - test_against_reference(&$get_bytes(3 * BYTES_PER_CHUNK), 0); - } - - #[test] - fn zero_value_4_nodes() { - test_against_reference(&$get_bytes(4 * BYTES_PER_CHUNK), 0); - } - - #[test] - fn zero_value_8_nodes() { - test_against_reference(&$get_bytes(8 * BYTES_PER_CHUNK), 0); - } - - #[test] - fn zero_value_9_nodes() { - test_against_reference(&$get_bytes(9 * BYTES_PER_CHUNK), 0); - } - - #[test] - fn zero_value_8_nodes_varying_min_length() { - for i in 0..64 { - test_against_reference(&$get_bytes(8 * BYTES_PER_CHUNK), i); - } - } - - #[test] - fn zero_value_range_of_nodes() { - for i in 0..32 * BYTES_PER_CHUNK { - test_against_reference(&$get_bytes(i), 0); - } - } - - #[test] - fn max_tree_depth_min_nodes() { - let input = vec![0; 10 * BYTES_PER_CHUNK]; - let min_nodes = 2usize.pow(ZERO_HASHES_MAX_INDEX as u32); - assert_eq!( - merkleize_padded(&input, min_nodes).as_bytes(), - get_zero_hash(ZERO_HASHES_MAX_INDEX) - ); - } - }; - } - - mod zero_value { - use super::*; - - fn zero_bytes(bytes: usize) -> Vec { - vec![0; bytes] - } - - common_tests!(zero_bytes); - } - - mod random_value { - use super::*; - use rand::RngCore; - - fn random_bytes(bytes: usize) -> Vec { - let mut bytes = Vec::with_capacity(bytes); - rand::thread_rng().fill_bytes(&mut bytes); - bytes - } - - common_tests!(random_bytes); - } - - fn test_against_reference(input: &[u8], min_nodes: usize) { - let mut reference_input = input.to_vec(); - reference_input.resize( - std::cmp::max( - reference_input.len(), - min_nodes.next_power_of_two() * BYTES_PER_CHUNK, - ), - 0, - ); - - assert_eq!( - reference_root(&reference_input), - merkleize_padded(input, min_nodes), - "input.len(): {:?}", - input.len() - ); - } -} diff --git a/consensus/tree_hash/src/merkleize_standard.rs b/consensus/tree_hash/src/merkleize_standard.rs deleted file mode 100644 index 6dd046991e..0000000000 --- a/consensus/tree_hash/src/merkleize_standard.rs +++ /dev/null @@ -1,81 +0,0 @@ -use super::*; -use eth2_hashing::hash; - -/// Merkleizes bytes and returns the root, using a simple algorithm that does not optimize to avoid -/// processing or storing padding bytes. -/// -/// **Note**: This function is generally worse than using the `crate::merkle_root` which uses -/// `MerkleHasher`. We only keep this function around for reference testing. -/// -/// The input `bytes` will be padded to ensure that the number of leaves is a power-of-two. -/// -/// ## CPU Performance -/// -/// Will hash all nodes in the tree, even if they are padding and pre-determined. -/// -/// ## Memory Performance -/// -/// - Duplicates the input `bytes`. -/// - Stores all internal nodes, even if they are padding. -/// - Does not free up unused memory during operation. -pub fn merkleize_standard(bytes: &[u8]) -> Hash256 { - // If the bytes are just one chunk (or less than one chunk) just return them. - if bytes.len() <= HASHSIZE { - let mut o = bytes.to_vec(); - o.resize(HASHSIZE, 0); - return Hash256::from_slice(&o[0..HASHSIZE]); - } - - let leaves = num_sanitized_leaves(bytes.len()); - let nodes = num_nodes(leaves); - let internal_nodes = nodes - leaves; - - let num_bytes = std::cmp::max(internal_nodes, 1) * HASHSIZE + bytes.len(); - - let mut o: Vec = vec![0; internal_nodes * HASHSIZE]; - - o.append(&mut bytes.to_vec()); - - assert_eq!(o.len(), num_bytes); - - let empty_chunk_hash = hash(&[0; MERKLE_HASH_CHUNK]); - - let mut i = nodes * HASHSIZE; - let mut j = internal_nodes * HASHSIZE; - - while i >= MERKLE_HASH_CHUNK { - i -= MERKLE_HASH_CHUNK; - - j -= HASHSIZE; - let hash = match o.get(i..i + MERKLE_HASH_CHUNK) { - // All bytes are available, hash as usual. - Some(slice) => hash(slice), - // Unable to get all the bytes. - None => { - match o.get(i..) { - // Able to get some of the bytes, pad them out. - Some(slice) => { - let mut bytes = slice.to_vec(); - bytes.resize(MERKLE_HASH_CHUNK, 0); - hash(&bytes) - } - // Unable to get any bytes, use the empty-chunk hash. - None => empty_chunk_hash.clone(), - } - } - }; - - o[j..j + HASHSIZE].copy_from_slice(&hash); - } - - Hash256::from_slice(&o[0..HASHSIZE]) -} - -fn num_sanitized_leaves(num_bytes: usize) -> usize { - let leaves = (num_bytes + HASHSIZE - 1) / HASHSIZE; - leaves.next_power_of_two() -} - -fn num_nodes(num_leaves: usize) -> usize { - 2 * num_leaves - 1 -} diff --git a/consensus/tree_hash/tests/tests.rs b/consensus/tree_hash/tests/tests.rs deleted file mode 100644 index 8b2a4b21be..0000000000 --- a/consensus/tree_hash/tests/tests.rs +++ /dev/null @@ -1,128 +0,0 @@ -use ssz_derive::Encode; -use tree_hash::{Hash256, MerkleHasher, PackedEncoding, TreeHash, BYTES_PER_CHUNK}; -use tree_hash_derive::TreeHash; - -#[derive(Encode)] -struct HashVec { - vec: Vec, -} - -impl From> for HashVec { - fn from(vec: Vec) -> Self { - Self { vec } - } -} - -impl tree_hash::TreeHash for HashVec { - fn tree_hash_type() -> tree_hash::TreeHashType { - tree_hash::TreeHashType::List - } - - fn tree_hash_packed_encoding(&self) -> PackedEncoding { - unreachable!("List should never be packed.") - } - - fn tree_hash_packing_factor() -> usize { - unreachable!("List should never be packed.") - } - - fn tree_hash_root(&self) -> Hash256 { - let mut hasher = - MerkleHasher::with_leaves((self.vec.len() + BYTES_PER_CHUNK - 1) / BYTES_PER_CHUNK); - - for item in &self.vec { - hasher.write(&item.tree_hash_packed_encoding()).unwrap() - } - - let root = hasher.finish().unwrap(); - - tree_hash::mix_in_length(&root, self.vec.len()) - } -} - -fn mix_in_selector(a: Hash256, selector: u8) -> Hash256 { - let mut b = [0; 32]; - b[0] = selector; - - Hash256::from_slice(ð2_hashing::hash32_concat(a.as_bytes(), &b)) -} - -fn u8_hash_concat(v1: u8, v2: u8) -> Hash256 { - let mut a = [0; 32]; - let mut b = [0; 32]; - - a[0] = v1; - b[0] = v2; - - Hash256::from_slice(ð2_hashing::hash32_concat(&a, &b)) -} - -fn u8_hash(x: u8) -> Hash256 { - let mut a = [0; 32]; - a[0] = x; - Hash256::from_slice(&a) -} - -#[derive(TreeHash)] -#[tree_hash(enum_behaviour = "transparent")] -enum FixedTrans { - A(u8), - B(u8), -} - -#[test] -fn fixed_trans() { - assert_eq!(FixedTrans::A(2).tree_hash_root(), u8_hash(2)); - assert_eq!(FixedTrans::B(2).tree_hash_root(), u8_hash(2)); -} - -#[derive(TreeHash)] -#[tree_hash(enum_behaviour = "union")] -enum FixedUnion { - A(u8), - B(u8), -} - -#[test] -fn fixed_union() { - assert_eq!(FixedUnion::A(2).tree_hash_root(), u8_hash_concat(2, 0)); - assert_eq!(FixedUnion::B(2).tree_hash_root(), u8_hash_concat(2, 1)); -} - -#[derive(TreeHash)] -#[tree_hash(enum_behaviour = "transparent")] -enum VariableTrans { - A(HashVec), - B(HashVec), -} - -#[test] -fn variable_trans() { - assert_eq!( - VariableTrans::A(HashVec::from(vec![2])).tree_hash_root(), - u8_hash_concat(2, 1) - ); - assert_eq!( - VariableTrans::B(HashVec::from(vec![2])).tree_hash_root(), - u8_hash_concat(2, 1) - ); -} - -#[derive(TreeHash)] -#[tree_hash(enum_behaviour = "union")] -enum VariableUnion { - A(HashVec), - B(HashVec), -} - -#[test] -fn variable_union() { - assert_eq!( - VariableUnion::A(HashVec::from(vec![2])).tree_hash_root(), - mix_in_selector(u8_hash_concat(2, 1), 0) - ); - assert_eq!( - VariableUnion::B(HashVec::from(vec![2])).tree_hash_root(), - mix_in_selector(u8_hash_concat(2, 1), 1) - ); -} diff --git a/consensus/tree_hash_derive/Cargo.toml b/consensus/tree_hash_derive/Cargo.toml deleted file mode 100644 index 5f3396eb16..0000000000 --- a/consensus/tree_hash_derive/Cargo.toml +++ /dev/null @@ -1,15 +0,0 @@ -[package] -name = "tree_hash_derive" -version = "0.4.0" -authors = ["Paul Hauner "] -edition = "2021" -description = "Procedural derive macros to accompany the tree_hash crate." -license = "Apache-2.0" - -[lib] -proc-macro = true - -[dependencies] -syn = "1.0.42" -quote = "1.0.7" -darling = "0.13.0" diff --git a/consensus/tree_hash_derive/src/lib.rs b/consensus/tree_hash_derive/src/lib.rs deleted file mode 100644 index 85ece80fb5..0000000000 --- a/consensus/tree_hash_derive/src/lib.rs +++ /dev/null @@ -1,336 +0,0 @@ -use darling::FromDeriveInput; -use proc_macro::TokenStream; -use quote::quote; -use std::convert::TryInto; -use syn::{parse_macro_input, Attribute, DataEnum, DataStruct, DeriveInput, Meta}; - -/// The highest possible union selector value (higher values are reserved for backwards compatible -/// extensions). -const MAX_UNION_SELECTOR: u8 = 127; - -#[derive(Debug, FromDeriveInput)] -#[darling(attributes(tree_hash))] -struct StructOpts { - #[darling(default)] - enum_behaviour: Option, -} - -const ENUM_TRANSPARENT: &str = "transparent"; -const ENUM_UNION: &str = "union"; -const ENUM_VARIANTS: &[&str] = &[ENUM_TRANSPARENT, ENUM_UNION]; -const NO_ENUM_BEHAVIOUR_ERROR: &str = "enums require an \"enum_behaviour\" attribute, \ - e.g., #[tree_hash(enum_behaviour = \"transparent\")]"; - -enum EnumBehaviour { - Transparent, - Union, -} - -impl EnumBehaviour { - pub fn new(s: Option) -> Option { - s.map(|s| match s.as_ref() { - ENUM_TRANSPARENT => EnumBehaviour::Transparent, - ENUM_UNION => EnumBehaviour::Union, - other => panic!( - "{} is an invalid enum_behaviour, use either {:?}", - other, ENUM_VARIANTS - ), - }) - } -} - -/// Return a Vec of `syn::Ident` for each named field in the struct, whilst filtering out fields -/// that should not be hashed. -/// -/// # Panics -/// Any unnamed struct field (like in a tuple struct) will raise a panic at compile time. -fn get_hashable_fields(struct_data: &syn::DataStruct) -> Vec<&syn::Ident> { - get_hashable_fields_and_their_caches(struct_data) - .into_iter() - .map(|(ident, _, _)| ident) - .collect() -} - -/// Return a Vec of the hashable fields of a struct, and each field's type and optional cache field. -fn get_hashable_fields_and_their_caches( - struct_data: &syn::DataStruct, -) -> Vec<(&syn::Ident, syn::Type, Option)> { - struct_data - .fields - .iter() - .filter_map(|f| { - if should_skip_hashing(f) { - None - } else { - let ident = f - .ident - .as_ref() - .expect("tree_hash_derive only supports named struct fields"); - let opt_cache_field = get_cache_field_for(f); - Some((ident, f.ty.clone(), opt_cache_field)) - } - }) - .collect() -} - -/// Parse the cached_tree_hash attribute for a field. -/// -/// Extract the cache field name from `#[cached_tree_hash(cache_field_name)]` -/// -/// Return `Some(cache_field_name)` if the field has a cached tree hash attribute, -/// or `None` otherwise. -fn get_cache_field_for(field: &syn::Field) -> Option { - use syn::{MetaList, NestedMeta}; - - let parsed_attrs = cached_tree_hash_attr_metas(&field.attrs); - if let [Meta::List(MetaList { nested, .. })] = &parsed_attrs[..] { - nested.iter().find_map(|x| match x { - NestedMeta::Meta(Meta::Path(path)) => path.get_ident().cloned(), - _ => None, - }) - } else { - None - } -} - -/// Process the `cached_tree_hash` attributes from a list of attributes into structured `Meta`s. -fn cached_tree_hash_attr_metas(attrs: &[Attribute]) -> Vec { - attrs - .iter() - .filter(|attr| attr.path.is_ident("cached_tree_hash")) - .flat_map(|attr| attr.parse_meta()) - .collect() -} - -/// Returns true if some field has an attribute declaring it should not be hashed. -/// -/// The field attribute is: `#[tree_hash(skip_hashing)]` -fn should_skip_hashing(field: &syn::Field) -> bool { - field.attrs.iter().any(|attr| { - attr.path.is_ident("tree_hash") - && attr.tokens.to_string().replace(' ', "") == "(skip_hashing)" - }) -} - -/// Implements `tree_hash::TreeHash` for some `struct`. -/// -/// Fields are hashed in the order they are defined. -#[proc_macro_derive(TreeHash, attributes(tree_hash))] -pub fn tree_hash_derive(input: TokenStream) -> TokenStream { - let item = parse_macro_input!(input as DeriveInput); - let opts = StructOpts::from_derive_input(&item).unwrap(); - let enum_opt = EnumBehaviour::new(opts.enum_behaviour); - - match &item.data { - syn::Data::Struct(s) => { - if enum_opt.is_some() { - panic!("enum_behaviour is invalid for structs"); - } - tree_hash_derive_struct(&item, s) - } - syn::Data::Enum(s) => match enum_opt.expect(NO_ENUM_BEHAVIOUR_ERROR) { - EnumBehaviour::Transparent => tree_hash_derive_enum_transparent(&item, s), - EnumBehaviour::Union => tree_hash_derive_enum_union(&item, s), - }, - _ => panic!("tree_hash_derive only supports structs and enums."), - } -} - -fn tree_hash_derive_struct(item: &DeriveInput, struct_data: &DataStruct) -> TokenStream { - let name = &item.ident; - let (impl_generics, ty_generics, where_clause) = &item.generics.split_for_impl(); - - let idents = get_hashable_fields(struct_data); - let num_leaves = idents.len(); - - let output = quote! { - impl #impl_generics tree_hash::TreeHash for #name #ty_generics #where_clause { - fn tree_hash_type() -> tree_hash::TreeHashType { - tree_hash::TreeHashType::Container - } - - fn tree_hash_packed_encoding(&self) -> tree_hash::PackedEncoding { - unreachable!("Struct should never be packed.") - } - - fn tree_hash_packing_factor() -> usize { - unreachable!("Struct should never be packed.") - } - - fn tree_hash_root(&self) -> tree_hash::Hash256 { - let mut hasher = tree_hash::MerkleHasher::with_leaves(#num_leaves); - - #( - hasher.write(self.#idents.tree_hash_root().as_bytes()) - .expect("tree hash derive should not apply too many leaves"); - )* - - hasher.finish().expect("tree hash derive should not have a remaining buffer") - } - } - }; - output.into() -} - -/// Derive `TreeHash` for an enum in the "transparent" method. -/// -/// The "transparent" method is distinct from the "union" method specified in the SSZ specification. -/// When using "transparent", the enum will be ignored and the contained field will be hashed as if -/// the enum does not exist. -/// -///## Limitations -/// -/// Only supports: -/// - Enums with a single field per variant, where -/// - All fields are "container" types. -/// -/// ## Panics -/// -/// Will panic at compile-time if the single field requirement isn't met, but will panic *at run -/// time* if the container type requirement isn't met. -fn tree_hash_derive_enum_transparent( - derive_input: &DeriveInput, - enum_data: &DataEnum, -) -> TokenStream { - let name = &derive_input.ident; - let (impl_generics, ty_generics, where_clause) = &derive_input.generics.split_for_impl(); - - let (patterns, type_exprs): (Vec<_>, Vec<_>) = enum_data - .variants - .iter() - .map(|variant| { - let variant_name = &variant.ident; - - if variant.fields.len() != 1 { - panic!("TreeHash can only be derived for enums with 1 field per variant"); - } - - let pattern = quote! { - #name::#variant_name(ref inner) - }; - - let ty = &(&variant.fields).into_iter().next().unwrap().ty; - let type_expr = quote! { - <#ty as tree_hash::TreeHash>::tree_hash_type() - }; - (pattern, type_expr) - }) - .unzip(); - - let output = quote! { - impl #impl_generics tree_hash::TreeHash for #name #ty_generics #where_clause { - fn tree_hash_type() -> tree_hash::TreeHashType { - #( - assert_eq!( - #type_exprs, - tree_hash::TreeHashType::Container, - "all variants must be of container type" - ); - )* - tree_hash::TreeHashType::Container - } - - fn tree_hash_packed_encoding(&self) -> tree_hash::PackedEncoding { - unreachable!("Enum should never be packed") - } - - fn tree_hash_packing_factor() -> usize { - unreachable!("Enum should never be packed") - } - - fn tree_hash_root(&self) -> tree_hash::Hash256 { - match self { - #( - #patterns => inner.tree_hash_root(), - )* - } - } - } - }; - output.into() -} - -/// Derive `TreeHash` for an `enum` following the "union" SSZ spec. -/// -/// The union selector will be determined based upon the order in which the enum variants are -/// defined. E.g., the top-most variant in the enum will have a selector of `0`, the variant -/// beneath it will have a selector of `1` and so on. -/// -/// # Limitations -/// -/// Only supports enums where each variant has a single field. -fn tree_hash_derive_enum_union(derive_input: &DeriveInput, enum_data: &DataEnum) -> TokenStream { - let name = &derive_input.ident; - let (impl_generics, ty_generics, where_clause) = &derive_input.generics.split_for_impl(); - - let patterns: Vec<_> = enum_data - .variants - .iter() - .map(|variant| { - let variant_name = &variant.ident; - - if variant.fields.len() != 1 { - panic!("TreeHash can only be derived for enums with 1 field per variant"); - } - - quote! { - #name::#variant_name(ref inner) - } - }) - .collect(); - - let union_selectors = compute_union_selectors(patterns.len()); - - let output = quote! { - impl #impl_generics tree_hash::TreeHash for #name #ty_generics #where_clause { - fn tree_hash_type() -> tree_hash::TreeHashType { - tree_hash::TreeHashType::Container - } - - fn tree_hash_packed_encoding(&self) -> tree_hash::PackedEncoding { - unreachable!("Enum should never be packed") - } - - fn tree_hash_packing_factor() -> usize { - unreachable!("Enum should never be packed") - } - - fn tree_hash_root(&self) -> tree_hash::Hash256 { - match self { - #( - #patterns => { - let root = inner.tree_hash_root(); - let selector = #union_selectors; - tree_hash::mix_in_selector(&root, selector) - .expect("derive macro should prevent out-of-bounds selectors") - }, - )* - } - } - } - }; - output.into() -} - -fn compute_union_selectors(num_variants: usize) -> Vec { - let union_selectors = (0..num_variants) - .map(|i| { - i.try_into() - .expect("union selector exceeds u8::max_value, union has too many variants") - }) - .collect::>(); - - let highest_selector = union_selectors - .last() - .copied() - .expect("0-variant union is not permitted"); - - assert!( - highest_selector <= MAX_UNION_SELECTOR, - "union selector {} exceeds limit of {}, enum has too many variants", - highest_selector, - MAX_UNION_SELECTOR - ); - - union_selectors -} diff --git a/consensus/types/Cargo.toml b/consensus/types/Cargo.toml index 46b88af66f..91ad3089f1 100644 --- a/consensus/types/Cargo.toml +++ b/consensus/types/Cargo.toml @@ -15,7 +15,7 @@ compare_fields = { path = "../../common/compare_fields" } compare_fields_derive = { path = "../../common/compare_fields_derive" } eth2_interop_keypairs = { path = "../../common/eth2_interop_keypairs" } ethereum-types = { version = "0.14.1", features = ["arbitrary"] } -eth2_hashing = "0.3.0" +ethereum_hashing = "1.0.0-beta.2" hex = "0.4.2" int_to_bytes = { path = "../int_to_bytes" } log = "0.4.11" @@ -25,13 +25,13 @@ safe_arith = { path = "../safe_arith" } serde = {version = "1.0.116" , features = ["rc"] } serde_derive = "1.0.116" slog = "2.5.2" -eth2_ssz = { version = "0.4.1", features = ["arbitrary"] } -eth2_ssz_derive = "0.3.1" -eth2_ssz_types = { version = "0.2.2", features = ["arbitrary"] } +ethereum_ssz = { version = "0.5.0", features = ["arbitrary"] } +ethereum_ssz_derive = "0.5.0" +ssz_types = { version = "0.5.0", features = ["arbitrary"] } swap_or_not_shuffle = { path = "../swap_or_not_shuffle", features = ["arbitrary"] } test_random_derive = { path = "../../common/test_random_derive" } -tree_hash = { version = "0.4.1", features = ["arbitrary"] } -tree_hash_derive = "0.4.0" +tree_hash = { version = "0.5.0", features = ["arbitrary"] } +tree_hash_derive = "0.5.0" rand_xorshift = "0.3.0" cached_tree_hash = { path = "../cached_tree_hash" } serde_yaml = "0.8.13" @@ -41,7 +41,7 @@ rusqlite = { version = "0.28.0", features = ["bundled"], optional = true } # The arbitrary dependency is enabled by default since Capella to avoid complexity introduced by # `AbstractExecPayload` arbitrary = { version = "1.0", features = ["derive"] } -eth2_serde_utils = "0.1.1" +ethereum_serde_utils = "0.5.0" regex = "1.5.5" lazy_static = "1.4.0" parking_lot = "0.12.0" diff --git a/consensus/types/src/aggregate_and_proof.rs b/consensus/types/src/aggregate_and_proof.rs index 39a0a28c0c..20d66cd447 100644 --- a/consensus/types/src/aggregate_and_proof.rs +++ b/consensus/types/src/aggregate_and_proof.rs @@ -27,7 +27,7 @@ use tree_hash_derive::TreeHash; #[arbitrary(bound = "T: EthSpec")] pub struct AggregateAndProof { /// The index of the validator that created the attestation. - #[serde(with = "eth2_serde_utils::quoted_u64")] + #[serde(with = "serde_utils::quoted_u64")] pub aggregator_index: u64, /// The aggregate attestation. pub aggregate: Attestation, diff --git a/consensus/types/src/attestation_data.rs b/consensus/types/src/attestation_data.rs index c6a661c85d..286502b449 100644 --- a/consensus/types/src/attestation_data.rs +++ b/consensus/types/src/attestation_data.rs @@ -27,7 +27,7 @@ use tree_hash_derive::TreeHash; )] pub struct AttestationData { pub slot: Slot, - #[serde(with = "eth2_serde_utils::quoted_u64")] + #[serde(with = "serde_utils::quoted_u64")] pub index: u64, // LMD GHOST vote diff --git a/consensus/types/src/attestation_duty.rs b/consensus/types/src/attestation_duty.rs index 87a9c932a4..93a4c147b6 100644 --- a/consensus/types/src/attestation_duty.rs +++ b/consensus/types/src/attestation_duty.rs @@ -12,6 +12,6 @@ pub struct AttestationDuty { /// The total number of attesters in the committee. pub committee_len: usize, /// The committee count at `attestation_slot`. - #[serde(with = "eth2_serde_utils::quoted_u64")] + #[serde(with = "serde_utils::quoted_u64")] pub committees_at_slot: u64, } diff --git a/consensus/types/src/beacon_block.rs b/consensus/types/src/beacon_block.rs index 4bf9e641c0..1b40fe76d4 100644 --- a/consensus/types/src/beacon_block.rs +++ b/consensus/types/src/beacon_block.rs @@ -58,7 +58,7 @@ pub struct BeaconBlock = FullPayload #[superstruct(getter(copy))] pub slot: Slot, #[superstruct(getter(copy))] - #[serde(with = "eth2_serde_utils::quoted_u64")] + #[serde(with = "serde_utils::quoted_u64")] pub proposer_index: u64, #[superstruct(getter(copy))] pub parent_root: Hash256, diff --git a/consensus/types/src/beacon_block_header.rs b/consensus/types/src/beacon_block_header.rs index c6d6678f31..f2ef0a3dcc 100644 --- a/consensus/types/src/beacon_block_header.rs +++ b/consensus/types/src/beacon_block_header.rs @@ -26,7 +26,7 @@ use tree_hash_derive::TreeHash; )] pub struct BeaconBlockHeader { pub slot: Slot, - #[serde(with = "eth2_serde_utils::quoted_u64")] + #[serde(with = "serde_utils::quoted_u64")] pub proposer_index: u64, pub parent_root: Hash256, pub state_root: Hash256, diff --git a/consensus/types/src/beacon_state.rs b/consensus/types/src/beacon_state.rs index 921dafbbc6..4a9da36404 100644 --- a/consensus/types/src/beacon_state.rs +++ b/consensus/types/src/beacon_state.rs @@ -5,7 +5,7 @@ use crate::*; use compare_fields::CompareFields; use compare_fields_derive::CompareFields; use derivative::Derivative; -use eth2_hashing::hash; +use ethereum_hashing::hash; use int_to_bytes::{int_to_bytes4, int_to_bytes8}; use pubkey_cache::PubkeyCache; use safe_arith::{ArithError, SafeArith}; @@ -210,7 +210,7 @@ where { // Versioning #[superstruct(getter(copy))] - #[serde(with = "eth2_serde_utils::quoted_u64")] + #[serde(with = "serde_utils::quoted_u64")] pub genesis_time: u64, #[superstruct(getter(copy))] pub genesis_validators_root: Hash256, @@ -232,7 +232,7 @@ where pub eth1_data: Eth1Data, pub eth1_data_votes: VariableList, #[superstruct(getter(copy))] - #[serde(with = "eth2_serde_utils::quoted_u64")] + #[serde(with = "serde_utils::quoted_u64")] pub eth1_deposit_index: u64, // Registry @@ -296,10 +296,10 @@ where // Capella #[superstruct(only(Capella), partial_getter(copy))] - #[serde(with = "eth2_serde_utils::quoted_u64")] + #[serde(with = "serde_utils::quoted_u64")] pub next_withdrawal_index: u64, #[superstruct(only(Capella), partial_getter(copy))] - #[serde(with = "eth2_serde_utils::quoted_u64")] + #[serde(with = "serde_utils::quoted_u64")] pub next_withdrawal_validator_index: u64, // Deep history valid from Capella onwards. #[superstruct(only(Capella))] diff --git a/consensus/types/src/bls_to_execution_change.rs b/consensus/types/src/bls_to_execution_change.rs index b279515bd1..3ed9ee9255 100644 --- a/consensus/types/src/bls_to_execution_change.rs +++ b/consensus/types/src/bls_to_execution_change.rs @@ -21,7 +21,7 @@ use tree_hash_derive::TreeHash; TestRandom, )] pub struct BlsToExecutionChange { - #[serde(with = "eth2_serde_utils::quoted_u64")] + #[serde(with = "serde_utils::quoted_u64")] pub validator_index: u64, pub from_bls_pubkey: PublicKeyBytes, pub to_execution_address: Address, diff --git a/consensus/types/src/builder_bid.rs b/consensus/types/src/builder_bid.rs index e922e81c70..8723c2afed 100644 --- a/consensus/types/src/builder_bid.rs +++ b/consensus/types/src/builder_bid.rs @@ -16,7 +16,7 @@ use tree_hash_derive::TreeHash; pub struct BuilderBid> { #[serde_as(as = "BlindedPayloadAsHeader")] pub header: Payload, - #[serde(with = "eth2_serde_utils::quoted_u256")] + #[serde(with = "serde_utils::quoted_u256")] pub value: Uint256, pub pubkey: PublicKeyBytes, #[serde(skip)] @@ -50,7 +50,7 @@ impl> ForkVersionDeserialize #[derive(Deserialize)] struct Helper { header: serde_json::Value, - #[serde(with = "eth2_serde_utils::quoted_u256")] + #[serde(with = "serde_utils::quoted_u256")] value: Uint256, pubkey: PublicKeyBytes, } diff --git a/consensus/types/src/chain_spec.rs b/consensus/types/src/chain_spec.rs index dc89ab902f..163b07dcd1 100644 --- a/consensus/types/src/chain_spec.rs +++ b/consensus/types/src/chain_spec.rs @@ -1,9 +1,9 @@ use crate::application_domain::{ApplicationDomain, APPLICATION_DOMAIN_BUILDER}; use crate::*; -use eth2_serde_utils::quoted_u64::MaybeQuoted; use int_to_bytes::int_to_bytes4; use serde::{Deserializer, Serialize, Serializer}; use serde_derive::Deserialize; +use serde_utils::quoted_u64::MaybeQuoted; use std::fs::File; use std::path::Path; use tree_hash::TreeHash; @@ -895,33 +895,33 @@ pub struct Config { pub preset_base: String, #[serde(default = "default_terminal_total_difficulty")] - #[serde(with = "eth2_serde_utils::quoted_u256")] + #[serde(with = "serde_utils::quoted_u256")] pub terminal_total_difficulty: Uint256, #[serde(default = "default_terminal_block_hash")] pub terminal_block_hash: ExecutionBlockHash, #[serde(default = "default_terminal_block_hash_activation_epoch")] pub terminal_block_hash_activation_epoch: Epoch, #[serde(default = "default_safe_slots_to_import_optimistically")] - #[serde(with = "eth2_serde_utils::quoted_u64")] + #[serde(with = "serde_utils::quoted_u64")] pub safe_slots_to_import_optimistically: u64, - #[serde(with = "eth2_serde_utils::quoted_u64")] + #[serde(with = "serde_utils::quoted_u64")] min_genesis_active_validator_count: u64, - #[serde(with = "eth2_serde_utils::quoted_u64")] + #[serde(with = "serde_utils::quoted_u64")] min_genesis_time: u64, - #[serde(with = "eth2_serde_utils::bytes_4_hex")] + #[serde(with = "serde_utils::bytes_4_hex")] genesis_fork_version: [u8; 4], - #[serde(with = "eth2_serde_utils::quoted_u64")] + #[serde(with = "serde_utils::quoted_u64")] genesis_delay: u64, - #[serde(with = "eth2_serde_utils::bytes_4_hex")] + #[serde(with = "serde_utils::bytes_4_hex")] altair_fork_version: [u8; 4], #[serde(serialize_with = "serialize_fork_epoch")] #[serde(deserialize_with = "deserialize_fork_epoch")] pub altair_fork_epoch: Option>, #[serde(default = "default_bellatrix_fork_version")] - #[serde(with = "eth2_serde_utils::bytes_4_hex")] + #[serde(with = "serde_utils::bytes_4_hex")] bellatrix_fork_version: [u8; 4], #[serde(default)] #[serde(serialize_with = "serialize_fork_epoch")] @@ -929,41 +929,41 @@ pub struct Config { pub bellatrix_fork_epoch: Option>, #[serde(default = "default_capella_fork_version")] - #[serde(with = "eth2_serde_utils::bytes_4_hex")] + #[serde(with = "serde_utils::bytes_4_hex")] capella_fork_version: [u8; 4], #[serde(default)] #[serde(serialize_with = "serialize_fork_epoch")] #[serde(deserialize_with = "deserialize_fork_epoch")] pub capella_fork_epoch: Option>, - #[serde(with = "eth2_serde_utils::quoted_u64")] + #[serde(with = "serde_utils::quoted_u64")] seconds_per_slot: u64, - #[serde(with = "eth2_serde_utils::quoted_u64")] + #[serde(with = "serde_utils::quoted_u64")] seconds_per_eth1_block: u64, - #[serde(with = "eth2_serde_utils::quoted_u64")] + #[serde(with = "serde_utils::quoted_u64")] min_validator_withdrawability_delay: Epoch, - #[serde(with = "eth2_serde_utils::quoted_u64")] + #[serde(with = "serde_utils::quoted_u64")] shard_committee_period: u64, - #[serde(with = "eth2_serde_utils::quoted_u64")] + #[serde(with = "serde_utils::quoted_u64")] eth1_follow_distance: u64, - #[serde(with = "eth2_serde_utils::quoted_u64")] + #[serde(with = "serde_utils::quoted_u64")] inactivity_score_bias: u64, - #[serde(with = "eth2_serde_utils::quoted_u64")] + #[serde(with = "serde_utils::quoted_u64")] inactivity_score_recovery_rate: u64, - #[serde(with = "eth2_serde_utils::quoted_u64")] + #[serde(with = "serde_utils::quoted_u64")] ejection_balance: u64, - #[serde(with = "eth2_serde_utils::quoted_u64")] + #[serde(with = "serde_utils::quoted_u64")] min_per_epoch_churn_limit: u64, - #[serde(with = "eth2_serde_utils::quoted_u64")] + #[serde(with = "serde_utils::quoted_u64")] churn_limit_quotient: u64, #[serde(skip_serializing_if = "Option::is_none")] proposer_score_boost: Option>, - #[serde(with = "eth2_serde_utils::quoted_u64")] + #[serde(with = "serde_utils::quoted_u64")] deposit_chain_id: u64, - #[serde(with = "eth2_serde_utils::quoted_u64")] + #[serde(with = "serde_utils::quoted_u64")] deposit_network_id: u64, deposit_contract_address: Address, } diff --git a/consensus/types/src/contribution_and_proof.rs b/consensus/types/src/contribution_and_proof.rs index 167b0857c5..7e757f89b1 100644 --- a/consensus/types/src/contribution_and_proof.rs +++ b/consensus/types/src/contribution_and_proof.rs @@ -25,7 +25,7 @@ use tree_hash_derive::TreeHash; #[arbitrary(bound = "T: EthSpec")] pub struct ContributionAndProof { /// The index of the validator that created the sync contribution. - #[serde(with = "eth2_serde_utils::quoted_u64")] + #[serde(with = "serde_utils::quoted_u64")] pub aggregator_index: u64, /// The aggregate contribution. pub contribution: SyncCommitteeContribution, diff --git a/consensus/types/src/deposit_data.rs b/consensus/types/src/deposit_data.rs index 1969311671..d75643f659 100644 --- a/consensus/types/src/deposit_data.rs +++ b/consensus/types/src/deposit_data.rs @@ -26,7 +26,7 @@ use tree_hash_derive::TreeHash; pub struct DepositData { pub pubkey: PublicKeyBytes, pub withdrawal_credentials: Hash256, - #[serde(with = "eth2_serde_utils::quoted_u64")] + #[serde(with = "serde_utils::quoted_u64")] pub amount: u64, pub signature: SignatureBytes, } diff --git a/consensus/types/src/deposit_message.rs b/consensus/types/src/deposit_message.rs index 63073401c2..1096cfaa28 100644 --- a/consensus/types/src/deposit_message.rs +++ b/consensus/types/src/deposit_message.rs @@ -25,7 +25,7 @@ use tree_hash_derive::TreeHash; pub struct DepositMessage { pub pubkey: PublicKeyBytes, pub withdrawal_credentials: Hash256, - #[serde(with = "eth2_serde_utils::quoted_u64")] + #[serde(with = "serde_utils::quoted_u64")] pub amount: u64, } diff --git a/consensus/types/src/deposit_tree_snapshot.rs b/consensus/types/src/deposit_tree_snapshot.rs index 21bbab81ff..aea4677f26 100644 --- a/consensus/types/src/deposit_tree_snapshot.rs +++ b/consensus/types/src/deposit_tree_snapshot.rs @@ -1,5 +1,5 @@ use crate::*; -use eth2_hashing::{hash32_concat, ZERO_HASHES}; +use ethereum_hashing::{hash32_concat, ZERO_HASHES}; use int_to_bytes::int_to_bytes32; use serde_derive::{Deserialize, Serialize}; use ssz_derive::{Decode, Encode}; diff --git a/consensus/types/src/enr_fork_id.rs b/consensus/types/src/enr_fork_id.rs index 3556e31a9f..409383c904 100644 --- a/consensus/types/src/enr_fork_id.rs +++ b/consensus/types/src/enr_fork_id.rs @@ -24,9 +24,9 @@ use tree_hash_derive::TreeHash; TestRandom, )] pub struct EnrForkId { - #[serde(with = "eth2_serde_utils::bytes_4_hex")] + #[serde(with = "serde_utils::bytes_4_hex")] pub fork_digest: [u8; 4], - #[serde(with = "eth2_serde_utils::bytes_4_hex")] + #[serde(with = "serde_utils::bytes_4_hex")] pub next_fork_version: [u8; 4], pub next_fork_epoch: Epoch, } diff --git a/consensus/types/src/eth1_data.rs b/consensus/types/src/eth1_data.rs index 6b2396e112..d8f476b99b 100644 --- a/consensus/types/src/eth1_data.rs +++ b/consensus/types/src/eth1_data.rs @@ -26,7 +26,7 @@ use tree_hash_derive::TreeHash; )] pub struct Eth1Data { pub deposit_root: Hash256, - #[serde(with = "eth2_serde_utils::quoted_u64")] + #[serde(with = "serde_utils::quoted_u64")] pub deposit_count: u64, pub block_hash: Hash256, } diff --git a/consensus/types/src/execution_payload.rs b/consensus/types/src/execution_payload.rs index 18da0d161f..77ef6407e8 100644 --- a/consensus/types/src/execution_payload.rs +++ b/consensus/types/src/execution_payload.rs @@ -60,21 +60,21 @@ pub struct ExecutionPayload { pub logs_bloom: FixedVector, #[superstruct(getter(copy))] pub prev_randao: Hash256, - #[serde(with = "eth2_serde_utils::quoted_u64")] + #[serde(with = "serde_utils::quoted_u64")] #[superstruct(getter(copy))] pub block_number: u64, - #[serde(with = "eth2_serde_utils::quoted_u64")] + #[serde(with = "serde_utils::quoted_u64")] #[superstruct(getter(copy))] pub gas_limit: u64, - #[serde(with = "eth2_serde_utils::quoted_u64")] + #[serde(with = "serde_utils::quoted_u64")] #[superstruct(getter(copy))] pub gas_used: u64, - #[serde(with = "eth2_serde_utils::quoted_u64")] + #[serde(with = "serde_utils::quoted_u64")] #[superstruct(getter(copy))] pub timestamp: u64, #[serde(with = "ssz_types::serde_utils::hex_var_list")] pub extra_data: VariableList, - #[serde(with = "eth2_serde_utils::quoted_u256")] + #[serde(with = "serde_utils::quoted_u256")] #[superstruct(getter(copy))] pub base_fee_per_gas: Uint256, #[superstruct(getter(copy))] diff --git a/consensus/types/src/execution_payload_header.rs b/consensus/types/src/execution_payload_header.rs index d193a6cd8e..1fb29db9d3 100644 --- a/consensus/types/src/execution_payload_header.rs +++ b/consensus/types/src/execution_payload_header.rs @@ -53,21 +53,21 @@ pub struct ExecutionPayloadHeader { pub logs_bloom: FixedVector, #[superstruct(getter(copy))] pub prev_randao: Hash256, - #[serde(with = "eth2_serde_utils::quoted_u64")] + #[serde(with = "serde_utils::quoted_u64")] #[superstruct(getter(copy))] pub block_number: u64, - #[serde(with = "eth2_serde_utils::quoted_u64")] + #[serde(with = "serde_utils::quoted_u64")] #[superstruct(getter(copy))] pub gas_limit: u64, - #[serde(with = "eth2_serde_utils::quoted_u64")] + #[serde(with = "serde_utils::quoted_u64")] #[superstruct(getter(copy))] pub gas_used: u64, - #[serde(with = "eth2_serde_utils::quoted_u64")] + #[serde(with = "serde_utils::quoted_u64")] #[superstruct(getter(copy))] pub timestamp: u64, #[serde(with = "ssz_types::serde_utils::hex_var_list")] pub extra_data: VariableList, - #[serde(with = "eth2_serde_utils::quoted_u256")] + #[serde(with = "serde_utils::quoted_u256")] #[superstruct(getter(copy))] pub base_fee_per_gas: Uint256, #[superstruct(getter(copy))] diff --git a/consensus/types/src/fork.rs b/consensus/types/src/fork.rs index de332f0cad..4650881f72 100644 --- a/consensus/types/src/fork.rs +++ b/consensus/types/src/fork.rs @@ -24,9 +24,9 @@ use tree_hash_derive::TreeHash; TestRandom, )] pub struct Fork { - #[serde(with = "eth2_serde_utils::bytes_4_hex")] + #[serde(with = "serde_utils::bytes_4_hex")] pub previous_version: [u8; 4], - #[serde(with = "eth2_serde_utils::bytes_4_hex")] + #[serde(with = "serde_utils::bytes_4_hex")] pub current_version: [u8; 4], pub epoch: Epoch, } diff --git a/consensus/types/src/fork_data.rs b/consensus/types/src/fork_data.rs index cc79039315..bf9c48cd7e 100644 --- a/consensus/types/src/fork_data.rs +++ b/consensus/types/src/fork_data.rs @@ -23,7 +23,7 @@ use tree_hash_derive::TreeHash; TestRandom, )] pub struct ForkData { - #[serde(with = "eth2_serde_utils::bytes_4_hex")] + #[serde(with = "serde_utils::bytes_4_hex")] pub current_version: [u8; 4], pub genesis_validators_root: Hash256, } diff --git a/consensus/types/src/graffiti.rs b/consensus/types/src/graffiti.rs index 6288cdbe80..bd4abe37d8 100644 --- a/consensus/types/src/graffiti.rs +++ b/consensus/types/src/graffiti.rs @@ -27,7 +27,7 @@ impl Graffiti { impl fmt::Display for Graffiti { fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { - write!(f, "{}", eth2_serde_utils::hex::encode(self.0)) + write!(f, "{}", serde_utils::hex::encode(self.0)) } } @@ -96,7 +96,7 @@ pub mod serde_graffiti { where S: Serializer, { - serializer.serialize_str(ð2_serde_utils::hex::encode(bytes)) + serializer.serialize_str(&serde_utils::hex::encode(bytes)) } pub fn deserialize<'de, D>(deserializer: D) -> Result<[u8; GRAFFITI_BYTES_LEN], D::Error> @@ -105,7 +105,7 @@ pub mod serde_graffiti { { let s: String = Deserialize::deserialize(deserializer)?; - let bytes = eth2_serde_utils::hex::decode(&s).map_err(D::Error::custom)?; + let bytes = serde_utils::hex::decode(&s).map_err(D::Error::custom)?; if bytes.len() != GRAFFITI_BYTES_LEN { return Err(D::Error::custom(format!( diff --git a/consensus/types/src/indexed_attestation.rs b/consensus/types/src/indexed_attestation.rs index 16ffb1ad8f..c59cbef307 100644 --- a/consensus/types/src/indexed_attestation.rs +++ b/consensus/types/src/indexed_attestation.rs @@ -72,9 +72,9 @@ impl Hash for IndexedAttestation { mod quoted_variable_list_u64 { use super::*; use crate::Unsigned; - use eth2_serde_utils::quoted_u64_vec::{QuotedIntVecVisitor, QuotedIntWrapper}; use serde::ser::SerializeSeq; use serde::{Deserializer, Serializer}; + use serde_utils::quoted_u64_vec::{QuotedIntVecVisitor, QuotedIntWrapper}; pub fn serialize(value: &VariableList, serializer: S) -> Result where diff --git a/consensus/types/src/participation_flags.rs b/consensus/types/src/participation_flags.rs index bd98f8da07..4f170a60be 100644 --- a/consensus/types/src/participation_flags.rs +++ b/consensus/types/src/participation_flags.rs @@ -9,7 +9,7 @@ use tree_hash::{PackedEncoding, TreeHash, TreeHashType}; #[serde(transparent)] #[derive(arbitrary::Arbitrary)] pub struct ParticipationFlags { - #[serde(with = "eth2_serde_utils::quoted_u8")] + #[serde(with = "serde_utils::quoted_u8")] bits: u8, } diff --git a/consensus/types/src/pending_attestation.rs b/consensus/types/src/pending_attestation.rs index 1b9903ebbe..88db0ec4d3 100644 --- a/consensus/types/src/pending_attestation.rs +++ b/consensus/types/src/pending_attestation.rs @@ -25,9 +25,9 @@ use tree_hash_derive::TreeHash; pub struct PendingAttestation { pub aggregation_bits: BitList, pub data: AttestationData, - #[serde(with = "eth2_serde_utils::quoted_u64")] + #[serde(with = "serde_utils::quoted_u64")] pub inclusion_delay: u64, - #[serde(with = "eth2_serde_utils::quoted_u64")] + #[serde(with = "serde_utils::quoted_u64")] pub proposer_index: u64, } diff --git a/consensus/types/src/preset.rs b/consensus/types/src/preset.rs index 20c78f0515..e65dd8f60d 100644 --- a/consensus/types/src/preset.rs +++ b/consensus/types/src/preset.rs @@ -12,71 +12,71 @@ use serde_derive::{Deserialize, Serialize}; #[derive(Debug, PartialEq, Clone, Serialize, Deserialize)] #[serde(rename_all = "UPPERCASE")] pub struct BasePreset { - #[serde(with = "eth2_serde_utils::quoted_u64")] + #[serde(with = "serde_utils::quoted_u64")] pub max_committees_per_slot: u64, - #[serde(with = "eth2_serde_utils::quoted_u64")] + #[serde(with = "serde_utils::quoted_u64")] pub target_committee_size: u64, - #[serde(with = "eth2_serde_utils::quoted_u64")] + #[serde(with = "serde_utils::quoted_u64")] pub max_validators_per_committee: u64, - #[serde(with = "eth2_serde_utils::quoted_u8")] + #[serde(with = "serde_utils::quoted_u8")] pub shuffle_round_count: u8, - #[serde(with = "eth2_serde_utils::quoted_u64")] + #[serde(with = "serde_utils::quoted_u64")] pub hysteresis_quotient: u64, - #[serde(with = "eth2_serde_utils::quoted_u64")] + #[serde(with = "serde_utils::quoted_u64")] pub hysteresis_downward_multiplier: u64, - #[serde(with = "eth2_serde_utils::quoted_u64")] + #[serde(with = "serde_utils::quoted_u64")] pub hysteresis_upward_multiplier: u64, - #[serde(with = "eth2_serde_utils::quoted_u64")] + #[serde(with = "serde_utils::quoted_u64")] pub safe_slots_to_update_justified: u64, - #[serde(with = "eth2_serde_utils::quoted_u64")] + #[serde(with = "serde_utils::quoted_u64")] pub min_deposit_amount: u64, - #[serde(with = "eth2_serde_utils::quoted_u64")] + #[serde(with = "serde_utils::quoted_u64")] pub max_effective_balance: u64, - #[serde(with = "eth2_serde_utils::quoted_u64")] + #[serde(with = "serde_utils::quoted_u64")] pub effective_balance_increment: u64, - #[serde(with = "eth2_serde_utils::quoted_u64")] + #[serde(with = "serde_utils::quoted_u64")] pub min_attestation_inclusion_delay: u64, - #[serde(with = "eth2_serde_utils::quoted_u64")] + #[serde(with = "serde_utils::quoted_u64")] pub slots_per_epoch: u64, - #[serde(with = "eth2_serde_utils::quoted_u64")] + #[serde(with = "serde_utils::quoted_u64")] pub min_seed_lookahead: Epoch, - #[serde(with = "eth2_serde_utils::quoted_u64")] + #[serde(with = "serde_utils::quoted_u64")] pub max_seed_lookahead: Epoch, - #[serde(with = "eth2_serde_utils::quoted_u64")] + #[serde(with = "serde_utils::quoted_u64")] pub epochs_per_eth1_voting_period: u64, - #[serde(with = "eth2_serde_utils::quoted_u64")] + #[serde(with = "serde_utils::quoted_u64")] pub slots_per_historical_root: u64, - #[serde(with = "eth2_serde_utils::quoted_u64")] + #[serde(with = "serde_utils::quoted_u64")] pub min_epochs_to_inactivity_penalty: u64, - #[serde(with = "eth2_serde_utils::quoted_u64")] + #[serde(with = "serde_utils::quoted_u64")] pub epochs_per_historical_vector: u64, - #[serde(with = "eth2_serde_utils::quoted_u64")] + #[serde(with = "serde_utils::quoted_u64")] pub epochs_per_slashings_vector: u64, - #[serde(with = "eth2_serde_utils::quoted_u64")] + #[serde(with = "serde_utils::quoted_u64")] pub historical_roots_limit: u64, - #[serde(with = "eth2_serde_utils::quoted_u64")] + #[serde(with = "serde_utils::quoted_u64")] pub validator_registry_limit: u64, - #[serde(with = "eth2_serde_utils::quoted_u64")] + #[serde(with = "serde_utils::quoted_u64")] pub base_reward_factor: u64, - #[serde(with = "eth2_serde_utils::quoted_u64")] + #[serde(with = "serde_utils::quoted_u64")] pub whistleblower_reward_quotient: u64, - #[serde(with = "eth2_serde_utils::quoted_u64")] + #[serde(with = "serde_utils::quoted_u64")] pub proposer_reward_quotient: u64, - #[serde(with = "eth2_serde_utils::quoted_u64")] + #[serde(with = "serde_utils::quoted_u64")] pub inactivity_penalty_quotient: u64, - #[serde(with = "eth2_serde_utils::quoted_u64")] + #[serde(with = "serde_utils::quoted_u64")] pub min_slashing_penalty_quotient: u64, - #[serde(with = "eth2_serde_utils::quoted_u64")] + #[serde(with = "serde_utils::quoted_u64")] pub proportional_slashing_multiplier: u64, - #[serde(with = "eth2_serde_utils::quoted_u64")] + #[serde(with = "serde_utils::quoted_u64")] pub max_proposer_slashings: u64, - #[serde(with = "eth2_serde_utils::quoted_u64")] + #[serde(with = "serde_utils::quoted_u64")] pub max_attester_slashings: u64, - #[serde(with = "eth2_serde_utils::quoted_u64")] + #[serde(with = "serde_utils::quoted_u64")] pub max_attestations: u64, - #[serde(with = "eth2_serde_utils::quoted_u64")] + #[serde(with = "serde_utils::quoted_u64")] pub max_deposits: u64, - #[serde(with = "eth2_serde_utils::quoted_u64")] + #[serde(with = "serde_utils::quoted_u64")] pub max_voluntary_exits: u64, } @@ -123,17 +123,17 @@ impl BasePreset { #[derive(Debug, PartialEq, Clone, Serialize, Deserialize)] #[serde(rename_all = "UPPERCASE")] pub struct AltairPreset { - #[serde(with = "eth2_serde_utils::quoted_u64")] + #[serde(with = "serde_utils::quoted_u64")] pub inactivity_penalty_quotient_altair: u64, - #[serde(with = "eth2_serde_utils::quoted_u64")] + #[serde(with = "serde_utils::quoted_u64")] pub min_slashing_penalty_quotient_altair: u64, - #[serde(with = "eth2_serde_utils::quoted_u64")] + #[serde(with = "serde_utils::quoted_u64")] pub proportional_slashing_multiplier_altair: u64, - #[serde(with = "eth2_serde_utils::quoted_u64")] + #[serde(with = "serde_utils::quoted_u64")] pub sync_committee_size: u64, - #[serde(with = "eth2_serde_utils::quoted_u64")] + #[serde(with = "serde_utils::quoted_u64")] pub epochs_per_sync_committee_period: Epoch, - #[serde(with = "eth2_serde_utils::quoted_u64")] + #[serde(with = "serde_utils::quoted_u64")] pub min_sync_committee_participants: u64, } @@ -153,19 +153,19 @@ impl AltairPreset { #[derive(Debug, PartialEq, Clone, Serialize, Deserialize)] #[serde(rename_all = "UPPERCASE")] pub struct BellatrixPreset { - #[serde(with = "eth2_serde_utils::quoted_u64")] + #[serde(with = "serde_utils::quoted_u64")] pub inactivity_penalty_quotient_bellatrix: u64, - #[serde(with = "eth2_serde_utils::quoted_u64")] + #[serde(with = "serde_utils::quoted_u64")] pub min_slashing_penalty_quotient_bellatrix: u64, - #[serde(with = "eth2_serde_utils::quoted_u64")] + #[serde(with = "serde_utils::quoted_u64")] pub proportional_slashing_multiplier_bellatrix: u64, - #[serde(with = "eth2_serde_utils::quoted_u64")] + #[serde(with = "serde_utils::quoted_u64")] pub max_bytes_per_transaction: u64, - #[serde(with = "eth2_serde_utils::quoted_u64")] + #[serde(with = "serde_utils::quoted_u64")] pub max_transactions_per_payload: u64, - #[serde(with = "eth2_serde_utils::quoted_u64")] + #[serde(with = "serde_utils::quoted_u64")] pub bytes_per_logs_bloom: u64, - #[serde(with = "eth2_serde_utils::quoted_u64")] + #[serde(with = "serde_utils::quoted_u64")] pub max_extra_data_bytes: u64, } @@ -187,11 +187,11 @@ impl BellatrixPreset { #[derive(Debug, PartialEq, Clone, Serialize, Deserialize)] #[serde(rename_all = "UPPERCASE")] pub struct CapellaPreset { - #[serde(with = "eth2_serde_utils::quoted_u64")] + #[serde(with = "serde_utils::quoted_u64")] pub max_bls_to_execution_changes: u64, - #[serde(with = "eth2_serde_utils::quoted_u64")] + #[serde(with = "serde_utils::quoted_u64")] pub max_withdrawals_per_payload: u64, - #[serde(with = "eth2_serde_utils::quoted_u64")] + #[serde(with = "serde_utils::quoted_u64")] pub max_validators_per_withdrawals_sweep: u64, } diff --git a/consensus/types/src/proposer_preparation_data.rs b/consensus/types/src/proposer_preparation_data.rs index 6179828a95..2828b0d4d5 100644 --- a/consensus/types/src/proposer_preparation_data.rs +++ b/consensus/types/src/proposer_preparation_data.rs @@ -6,7 +6,7 @@ use serde::{Deserialize, Serialize}; #[derive(PartialEq, Debug, Serialize, Deserialize, Clone)] pub struct ProposerPreparationData { /// The validators index. - #[serde(with = "eth2_serde_utils::quoted_u64")] + #[serde(with = "serde_utils::quoted_u64")] pub validator_index: u64, /// The fee-recipient address. pub fee_recipient: Address, diff --git a/consensus/types/src/selection_proof.rs b/consensus/types/src/selection_proof.rs index f8bc8ba69f..2a404b3b96 100644 --- a/consensus/types/src/selection_proof.rs +++ b/consensus/types/src/selection_proof.rs @@ -1,7 +1,7 @@ use crate::{ ChainSpec, Domain, EthSpec, Fork, Hash256, PublicKey, SecretKey, Signature, SignedRoot, Slot, }; -use eth2_hashing::hash; +use ethereum_hashing::hash; use safe_arith::{ArithError, SafeArith}; use ssz::Encode; use std::cmp; diff --git a/consensus/types/src/slot_epoch.rs b/consensus/types/src/slot_epoch.rs index 2716367c7e..e9f1e192b4 100644 --- a/consensus/types/src/slot_epoch.rs +++ b/consensus/types/src/slot_epoch.rs @@ -38,7 +38,7 @@ use std::ops::{Add, AddAssign, Div, DivAssign, Mul, MulAssign, Rem, Sub, SubAssi Deserialize, )] #[serde(transparent)] -pub struct Slot(#[serde(with = "eth2_serde_utils::quoted_u64")] u64); +pub struct Slot(#[serde(with = "serde_utils::quoted_u64")] u64); #[derive( arbitrary::Arbitrary, @@ -54,7 +54,7 @@ pub struct Slot(#[serde(with = "eth2_serde_utils::quoted_u64")] u64); Deserialize, )] #[serde(transparent)] -pub struct Epoch(#[serde(with = "eth2_serde_utils::quoted_u64")] u64); +pub struct Epoch(#[serde(with = "serde_utils::quoted_u64")] u64); impl_common!(Slot); impl_common!(Epoch); diff --git a/consensus/types/src/subnet_id.rs b/consensus/types/src/subnet_id.rs index fd06eb78a1..b885f89f7d 100644 --- a/consensus/types/src/subnet_id.rs +++ b/consensus/types/src/subnet_id.rs @@ -20,7 +20,7 @@ lazy_static! { #[derive(arbitrary::Arbitrary, Clone, Copy, Debug, PartialEq, Eq, Hash, Serialize, Deserialize)] #[serde(transparent)] -pub struct SubnetId(#[serde(with = "eth2_serde_utils::quoted_u64")] u64); +pub struct SubnetId(#[serde(with = "serde_utils::quoted_u64")] u64); pub fn subnet_id_to_string(i: u64) -> &'static str { if i < MAX_SUBNET_ID as u64 { @@ -85,7 +85,7 @@ impl SubnetId { let subscription_event_idx = epoch.as_u64() / spec.epochs_per_subnet_subscription; let permutation_seed = - eth2_hashing::hash(&int_to_bytes::int_to_bytes8(subscription_event_idx)); + ethereum_hashing::hash(&int_to_bytes::int_to_bytes8(subscription_event_idx)); let num_subnets = 1 << spec.attestation_subnet_prefix_bits(); diff --git a/consensus/types/src/sync_aggregator_selection_data.rs b/consensus/types/src/sync_aggregator_selection_data.rs index 9e72438be2..b101068123 100644 --- a/consensus/types/src/sync_aggregator_selection_data.rs +++ b/consensus/types/src/sync_aggregator_selection_data.rs @@ -21,7 +21,7 @@ use tree_hash_derive::TreeHash; )] pub struct SyncAggregatorSelectionData { pub slot: Slot, - #[serde(with = "eth2_serde_utils::quoted_u64")] + #[serde(with = "serde_utils::quoted_u64")] pub subcommittee_index: u64, } diff --git a/consensus/types/src/sync_committee_contribution.rs b/consensus/types/src/sync_committee_contribution.rs index ef8b52becf..425f8f116d 100644 --- a/consensus/types/src/sync_committee_contribution.rs +++ b/consensus/types/src/sync_committee_contribution.rs @@ -32,7 +32,7 @@ pub enum Error { pub struct SyncCommitteeContribution { pub slot: Slot, pub beacon_block_root: Hash256, - #[serde(with = "eth2_serde_utils::quoted_u64")] + #[serde(with = "serde_utils::quoted_u64")] pub subcommittee_index: u64, pub aggregation_bits: BitVector, pub signature: AggregateSignature, diff --git a/consensus/types/src/sync_committee_message.rs b/consensus/types/src/sync_committee_message.rs index 5c2fb08374..d0301cdf63 100644 --- a/consensus/types/src/sync_committee_message.rs +++ b/consensus/types/src/sync_committee_message.rs @@ -23,7 +23,7 @@ use tree_hash_derive::TreeHash; pub struct SyncCommitteeMessage { pub slot: Slot, pub beacon_block_root: Hash256, - #[serde(with = "eth2_serde_utils::quoted_u64")] + #[serde(with = "serde_utils::quoted_u64")] pub validator_index: u64, // Signature by the validator over `beacon_block_root`. pub signature: Signature, diff --git a/consensus/types/src/sync_committee_subscription.rs b/consensus/types/src/sync_committee_subscription.rs index 7f5ed063f6..8e040279d7 100644 --- a/consensus/types/src/sync_committee_subscription.rs +++ b/consensus/types/src/sync_committee_subscription.rs @@ -7,10 +7,10 @@ use ssz_derive::{Decode, Encode}; #[derive(PartialEq, Debug, Serialize, Deserialize, Clone, Encode, Decode)] pub struct SyncCommitteeSubscription { /// The validators index. - #[serde(with = "eth2_serde_utils::quoted_u64")] + #[serde(with = "serde_utils::quoted_u64")] pub validator_index: u64, /// The sync committee indices. - #[serde(with = "eth2_serde_utils::quoted_u64_vec")] + #[serde(with = "serde_utils::quoted_u64_vec")] pub sync_committee_indices: Vec, /// Epoch until which this subscription is required. pub until_epoch: Epoch, diff --git a/consensus/types/src/sync_duty.rs b/consensus/types/src/sync_duty.rs index bdb0784596..e3ffe62bfd 100644 --- a/consensus/types/src/sync_duty.rs +++ b/consensus/types/src/sync_duty.rs @@ -7,9 +7,9 @@ use std::collections::HashSet; #[derive(Debug, Clone, PartialEq, Serialize, Deserialize)] pub struct SyncDuty { pub pubkey: PublicKeyBytes, - #[serde(with = "eth2_serde_utils::quoted_u64")] + #[serde(with = "serde_utils::quoted_u64")] pub validator_index: u64, - #[serde(with = "eth2_serde_utils::quoted_u64_vec")] + #[serde(with = "serde_utils::quoted_u64_vec")] pub validator_sync_committee_indices: Vec, } diff --git a/consensus/types/src/sync_selection_proof.rs b/consensus/types/src/sync_selection_proof.rs index 570abace1e..7cae3946c6 100644 --- a/consensus/types/src/sync_selection_proof.rs +++ b/consensus/types/src/sync_selection_proof.rs @@ -5,7 +5,7 @@ use crate::{ ChainSpec, Domain, EthSpec, Fork, Hash256, PublicKey, SecretKey, Signature, SignedRoot, Slot, SyncAggregatorSelectionData, }; -use eth2_hashing::hash; +use ethereum_hashing::hash; use safe_arith::{ArithError, SafeArith}; use ssz::Encode; use ssz_types::typenum::Unsigned; diff --git a/consensus/types/src/sync_subnet_id.rs b/consensus/types/src/sync_subnet_id.rs index 11bcf26894..5af756ae01 100644 --- a/consensus/types/src/sync_subnet_id.rs +++ b/consensus/types/src/sync_subnet_id.rs @@ -21,7 +21,7 @@ lazy_static! { #[derive(arbitrary::Arbitrary, Clone, Copy, Debug, PartialEq, Eq, Hash, Serialize, Deserialize)] #[serde(transparent)] -pub struct SyncSubnetId(#[serde(with = "eth2_serde_utils::quoted_u64")] u64); +pub struct SyncSubnetId(#[serde(with = "serde_utils::quoted_u64")] u64); pub fn sync_subnet_id_to_string(i: u64) -> &'static str { if i < SYNC_COMMITTEE_SUBNET_COUNT { diff --git a/consensus/types/src/validator.rs b/consensus/types/src/validator.rs index 43b892cdf3..6860397fb5 100644 --- a/consensus/types/src/validator.rs +++ b/consensus/types/src/validator.rs @@ -25,7 +25,7 @@ use tree_hash_derive::TreeHash; pub struct Validator { pub pubkey: PublicKeyBytes, pub withdrawal_credentials: Hash256, - #[serde(with = "eth2_serde_utils::quoted_u64")] + #[serde(with = "serde_utils::quoted_u64")] pub effective_balance: u64, pub slashed: bool, pub activation_eligibility_epoch: Epoch, diff --git a/consensus/types/src/validator_registration_data.rs b/consensus/types/src/validator_registration_data.rs index 5a3450df08..de7f26cc63 100644 --- a/consensus/types/src/validator_registration_data.rs +++ b/consensus/types/src/validator_registration_data.rs @@ -13,9 +13,9 @@ pub struct SignedValidatorRegistrationData { #[derive(PartialEq, Debug, Serialize, Deserialize, Clone, Encode, Decode, TreeHash)] pub struct ValidatorRegistrationData { pub fee_recipient: Address, - #[serde(with = "eth2_serde_utils::quoted_u64")] + #[serde(with = "serde_utils::quoted_u64")] pub gas_limit: u64, - #[serde(with = "eth2_serde_utils::quoted_u64")] + #[serde(with = "serde_utils::quoted_u64")] pub timestamp: u64, pub pubkey: PublicKeyBytes, } diff --git a/consensus/types/src/voluntary_exit.rs b/consensus/types/src/voluntary_exit.rs index 20c84986c2..02686fef9a 100644 --- a/consensus/types/src/voluntary_exit.rs +++ b/consensus/types/src/voluntary_exit.rs @@ -27,7 +27,7 @@ use tree_hash_derive::TreeHash; pub struct VoluntaryExit { /// Earliest epoch when voluntary exit can be processed. pub epoch: Epoch, - #[serde(with = "eth2_serde_utils::quoted_u64")] + #[serde(with = "serde_utils::quoted_u64")] pub validator_index: u64, } diff --git a/consensus/types/src/withdrawal.rs b/consensus/types/src/withdrawal.rs index 5221ff63f0..eed7c7e277 100644 --- a/consensus/types/src/withdrawal.rs +++ b/consensus/types/src/withdrawal.rs @@ -20,12 +20,12 @@ use tree_hash_derive::TreeHash; TestRandom, )] pub struct Withdrawal { - #[serde(with = "eth2_serde_utils::quoted_u64")] + #[serde(with = "serde_utils::quoted_u64")] pub index: u64, - #[serde(with = "eth2_serde_utils::quoted_u64")] + #[serde(with = "serde_utils::quoted_u64")] pub validator_index: u64, pub address: Address, - #[serde(with = "eth2_serde_utils::quoted_u64")] + #[serde(with = "serde_utils::quoted_u64")] pub amount: u64, } diff --git a/crypto/bls/Cargo.toml b/crypto/bls/Cargo.toml index c3331824d9..a610f257cd 100644 --- a/crypto/bls/Cargo.toml +++ b/crypto/bls/Cargo.toml @@ -5,15 +5,15 @@ authors = ["Paul Hauner "] edition = "2021" [dependencies] -eth2_ssz = "0.4.1" -tree_hash = "0.4.1" +ethereum_ssz = "0.5.0" +tree_hash = "0.5.0" milagro_bls = { git = "https://github.com/sigp/milagro_bls", tag = "v1.4.2", optional = true } rand = "0.7.3" serde = "1.0.116" serde_derive = "1.0.116" -eth2_serde_utils = "0.1.1" +ethereum_serde_utils = "0.5.0" hex = "0.4.2" -eth2_hashing = "0.3.0" +ethereum_hashing = "1.0.0-beta.2" ethereum-types = "0.14.1" arbitrary = { version = "1.0", features = ["derive"], optional = true } zeroize = { version = "1.4.2", features = ["zeroize_derive"] } diff --git a/crypto/bls/src/generic_aggregate_signature.rs b/crypto/bls/src/generic_aggregate_signature.rs index a61529af25..e6e53253f6 100644 --- a/crypto/bls/src/generic_aggregate_signature.rs +++ b/crypto/bls/src/generic_aggregate_signature.rs @@ -4,9 +4,9 @@ use crate::{ generic_signature::{GenericSignature, TSignature}, Error, Hash256, INFINITY_SIGNATURE, SIGNATURE_BYTES_LEN, }; -use eth2_serde_utils::hex::encode as hex_encode; use serde::de::{Deserialize, Deserializer}; use serde::ser::{Serialize, Serializer}; +use serde_utils::hex::encode as hex_encode; use ssz::{Decode, Encode}; use std::fmt; use std::hash::{Hash, Hasher}; diff --git a/crypto/bls/src/generic_public_key.rs b/crypto/bls/src/generic_public_key.rs index 847d039c62..462e4cb2cb 100644 --- a/crypto/bls/src/generic_public_key.rs +++ b/crypto/bls/src/generic_public_key.rs @@ -1,8 +1,8 @@ use crate::generic_public_key_bytes::GenericPublicKeyBytes; use crate::Error; -use eth2_serde_utils::hex::encode as hex_encode; use serde::de::{Deserialize, Deserializer}; use serde::ser::{Serialize, Serializer}; +use serde_utils::hex::encode as hex_encode; use ssz::{Decode, Encode}; use std::fmt; use std::hash::{Hash, Hasher}; diff --git a/crypto/bls/src/generic_public_key_bytes.rs b/crypto/bls/src/generic_public_key_bytes.rs index c2f318ab65..59b0ffc43f 100644 --- a/crypto/bls/src/generic_public_key_bytes.rs +++ b/crypto/bls/src/generic_public_key_bytes.rs @@ -2,9 +2,9 @@ use crate::{ generic_public_key::{GenericPublicKey, TPublicKey}, Error, PUBLIC_KEY_BYTES_LEN, }; -use eth2_serde_utils::hex::encode as hex_encode; use serde::de::{Deserialize, Deserializer}; use serde::ser::{Serialize, Serializer}; +use serde_utils::hex::encode as hex_encode; use ssz::{Decode, Encode}; use std::convert::TryInto; use std::fmt; diff --git a/crypto/bls/src/generic_signature.rs b/crypto/bls/src/generic_signature.rs index 01e5ed1d48..05e0a222bd 100644 --- a/crypto/bls/src/generic_signature.rs +++ b/crypto/bls/src/generic_signature.rs @@ -2,9 +2,9 @@ use crate::{ generic_public_key::{GenericPublicKey, TPublicKey}, Error, Hash256, }; -use eth2_serde_utils::hex::encode as hex_encode; use serde::de::{Deserialize, Deserializer}; use serde::ser::{Serialize, Serializer}; +use serde_utils::hex::encode as hex_encode; use ssz::{Decode, Encode}; use std::fmt; use std::hash::{Hash, Hasher}; diff --git a/crypto/bls/src/generic_signature_bytes.rs b/crypto/bls/src/generic_signature_bytes.rs index aa33c90d0c..8f9f2a4d88 100644 --- a/crypto/bls/src/generic_signature_bytes.rs +++ b/crypto/bls/src/generic_signature_bytes.rs @@ -3,9 +3,9 @@ use crate::{ generic_signature::{GenericSignature, TSignature}, Error, INFINITY_SIGNATURE, SIGNATURE_BYTES_LEN, }; -use eth2_serde_utils::hex::encode as hex_encode; use serde::de::{Deserialize, Deserializer}; use serde::ser::{Serialize, Serializer}; +use serde_utils::hex::encode as hex_encode; use ssz::{Decode, Encode}; use std::convert::TryInto; use std::fmt; diff --git a/crypto/bls/src/get_withdrawal_credentials.rs b/crypto/bls/src/get_withdrawal_credentials.rs index 98106434f1..d5e6470504 100644 --- a/crypto/bls/src/get_withdrawal_credentials.rs +++ b/crypto/bls/src/get_withdrawal_credentials.rs @@ -1,5 +1,5 @@ use crate::PublicKey; -use eth2_hashing::hash; +use ethereum_hashing::hash; use ssz::Encode; /// Returns the withdrawal credentials for a given public key. diff --git a/crypto/eth2_hashing/.cargo/config b/crypto/eth2_hashing/.cargo/config deleted file mode 100644 index 4ec2f3b862..0000000000 --- a/crypto/eth2_hashing/.cargo/config +++ /dev/null @@ -1,2 +0,0 @@ -[target.wasm32-unknown-unknown] -runner = 'wasm-bindgen-test-runner' diff --git a/crypto/eth2_hashing/Cargo.toml b/crypto/eth2_hashing/Cargo.toml deleted file mode 100644 index db296c70fe..0000000000 --- a/crypto/eth2_hashing/Cargo.toml +++ /dev/null @@ -1,24 +0,0 @@ -[package] -name = "eth2_hashing" -version = "0.3.0" -authors = ["Paul Hauner "] -edition = "2021" -license = "Apache-2.0" -description = "Hashing primitives used in Ethereum 2.0" - -[dependencies] -lazy_static = { version = "1.4.0", optional = true } -cpufeatures = { version = "0.2.5", optional = true } -ring = "0.16.19" -sha2 = "0.10" - -[dev-dependencies] -rustc-hex = "2.1.0" - -[target.'cfg(target_arch = "wasm32")'.dev-dependencies] -wasm-bindgen-test = "0.3.18" - -[features] -default = ["zero_hash_cache", "detect-cpufeatures"] -zero_hash_cache = ["lazy_static"] -detect-cpufeatures = ["cpufeatures"] diff --git a/crypto/eth2_hashing/src/lib.rs b/crypto/eth2_hashing/src/lib.rs deleted file mode 100644 index 36a3d14139..0000000000 --- a/crypto/eth2_hashing/src/lib.rs +++ /dev/null @@ -1,251 +0,0 @@ -//! Optimized SHA256 for use in Ethereum 2.0. -//! -//! The initial purpose of this crate was to provide an abstraction over the hash function used in -//! Ethereum 2.0. The hash function changed during the specification process, so defining it once in -//! this crate made it easy to replace. -//! -//! Now this crate serves primarily as a wrapper over two SHA256 crates: `sha2` and `ring` – -//! which it switches between at runtime based on the availability of SHA intrinsics. - -pub use self::DynamicContext as Context; -use sha2::Digest; - -#[cfg(feature = "zero_hash_cache")] -use lazy_static::lazy_static; - -/// Length of a SHA256 hash in bytes. -pub const HASH_LEN: usize = 32; - -/// Returns the digest of `input` using the best available implementation. -pub fn hash(input: &[u8]) -> Vec { - DynamicImpl::best().hash(input) -} - -/// Hash function returning a fixed-size array (to save on allocations). -/// -/// Uses the best available implementation based on CPU features. -pub fn hash_fixed(input: &[u8]) -> [u8; HASH_LEN] { - DynamicImpl::best().hash_fixed(input) -} - -/// Compute the hash of two slices concatenated. -pub fn hash32_concat(h1: &[u8], h2: &[u8]) -> [u8; 32] { - let mut ctxt = DynamicContext::new(); - ctxt.update(h1); - ctxt.update(h2); - ctxt.finalize() -} - -/// Context trait for abstracting over implementation contexts. -pub trait Sha256Context { - fn new() -> Self; - - fn update(&mut self, bytes: &[u8]); - - fn finalize(self) -> [u8; HASH_LEN]; -} - -/// Top-level trait implemented by both `sha2` and `ring` implementations. -pub trait Sha256 { - type Context: Sha256Context; - - fn hash(&self, input: &[u8]) -> Vec; - - fn hash_fixed(&self, input: &[u8]) -> [u8; HASH_LEN]; -} - -/// Implementation of SHA256 using the `sha2` crate (fastest on CPUs with SHA extensions). -struct Sha2CrateImpl; - -impl Sha256Context for sha2::Sha256 { - fn new() -> Self { - sha2::Digest::new() - } - - fn update(&mut self, bytes: &[u8]) { - sha2::Digest::update(self, bytes) - } - - fn finalize(self) -> [u8; HASH_LEN] { - sha2::Digest::finalize(self).into() - } -} - -impl Sha256 for Sha2CrateImpl { - type Context = sha2::Sha256; - - fn hash(&self, input: &[u8]) -> Vec { - Self::Context::digest(input).into_iter().collect() - } - - fn hash_fixed(&self, input: &[u8]) -> [u8; HASH_LEN] { - Self::Context::digest(input).into() - } -} - -/// Implementation of SHA256 using the `ring` crate (fastest on CPUs without SHA extensions). -pub struct RingImpl; - -impl Sha256Context for ring::digest::Context { - fn new() -> Self { - Self::new(&ring::digest::SHA256) - } - - fn update(&mut self, bytes: &[u8]) { - self.update(bytes) - } - - fn finalize(self) -> [u8; HASH_LEN] { - let mut output = [0; HASH_LEN]; - output.copy_from_slice(self.finish().as_ref()); - output - } -} - -impl Sha256 for RingImpl { - type Context = ring::digest::Context; - - fn hash(&self, input: &[u8]) -> Vec { - ring::digest::digest(&ring::digest::SHA256, input) - .as_ref() - .into() - } - - fn hash_fixed(&self, input: &[u8]) -> [u8; HASH_LEN] { - let mut ctxt = Self::Context::new(&ring::digest::SHA256); - ctxt.update(input); - ctxt.finalize() - } -} - -/// Default dynamic implementation that switches between available implementations. -pub enum DynamicImpl { - Sha2, - Ring, -} - -// Runtime latch for detecting the availability of SHA extensions on x86_64. -// -// Inspired by the runtime switch within the `sha2` crate itself. -#[cfg(all(feature = "detect-cpufeatures", target_arch = "x86_64"))] -cpufeatures::new!(x86_sha_extensions, "sha", "sse2", "ssse3", "sse4.1"); - -#[inline(always)] -pub fn have_sha_extensions() -> bool { - #[cfg(all(feature = "detect-cpufeatures", target_arch = "x86_64"))] - return x86_sha_extensions::get(); - - #[cfg(not(all(feature = "detect-cpufeatures", target_arch = "x86_64")))] - return false; -} - -impl DynamicImpl { - /// Choose the best available implementation based on the currently executing CPU. - #[inline(always)] - pub fn best() -> Self { - if have_sha_extensions() { - Self::Sha2 - } else { - Self::Ring - } - } -} - -impl Sha256 for DynamicImpl { - type Context = DynamicContext; - - #[inline(always)] - fn hash(&self, input: &[u8]) -> Vec { - match self { - Self::Sha2 => Sha2CrateImpl.hash(input), - Self::Ring => RingImpl.hash(input), - } - } - - #[inline(always)] - fn hash_fixed(&self, input: &[u8]) -> [u8; HASH_LEN] { - match self { - Self::Sha2 => Sha2CrateImpl.hash_fixed(input), - Self::Ring => RingImpl.hash_fixed(input), - } - } -} - -/// Context encapsulating all implemenation contexts. -/// -/// This enum ends up being 8 bytes larger than the largest inner context. -pub enum DynamicContext { - Sha2(sha2::Sha256), - Ring(ring::digest::Context), -} - -impl Sha256Context for DynamicContext { - fn new() -> Self { - match DynamicImpl::best() { - DynamicImpl::Sha2 => Self::Sha2(Sha256Context::new()), - DynamicImpl::Ring => Self::Ring(Sha256Context::new()), - } - } - - fn update(&mut self, bytes: &[u8]) { - match self { - Self::Sha2(ctxt) => Sha256Context::update(ctxt, bytes), - Self::Ring(ctxt) => Sha256Context::update(ctxt, bytes), - } - } - - fn finalize(self) -> [u8; HASH_LEN] { - match self { - Self::Sha2(ctxt) => Sha256Context::finalize(ctxt), - Self::Ring(ctxt) => Sha256Context::finalize(ctxt), - } - } -} - -/// The max index that can be used with `ZERO_HASHES`. -#[cfg(feature = "zero_hash_cache")] -pub const ZERO_HASHES_MAX_INDEX: usize = 48; - -#[cfg(feature = "zero_hash_cache")] -lazy_static! { - /// Cached zero hashes where `ZERO_HASHES[i]` is the hash of a Merkle tree with 2^i zero leaves. - pub static ref ZERO_HASHES: Vec> = { - let mut hashes = vec![vec![0; 32]; ZERO_HASHES_MAX_INDEX + 1]; - - for i in 0..ZERO_HASHES_MAX_INDEX { - hashes[i + 1] = hash32_concat(&hashes[i], &hashes[i])[..].to_vec(); - } - - hashes - }; -} - -#[cfg(test)] -mod tests { - use super::*; - use rustc_hex::FromHex; - - #[cfg(target_arch = "wasm32")] - use wasm_bindgen_test::*; - - #[cfg_attr(not(target_arch = "wasm32"), test)] - #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test)] - fn test_hashing() { - let input: Vec = b"hello world".as_ref().into(); - - let output = hash(input.as_ref()); - let expected_hex = "b94d27b9934d3e08a52e52d7da7dabfac484efe37a5380ee9088f7ace2efcde9"; - let expected: Vec = expected_hex.from_hex().unwrap(); - assert_eq!(expected, output); - } - - #[cfg(feature = "zero_hash_cache")] - mod zero_hash { - use super::*; - - #[test] - fn zero_hash_zero() { - assert_eq!(ZERO_HASHES[0], vec![0; 32]); - } - } -} diff --git a/lcli/Cargo.toml b/lcli/Cargo.toml index cee62aa5e1..9e7f2fdb08 100644 --- a/lcli/Cargo.toml +++ b/lcli/Cargo.toml @@ -21,12 +21,12 @@ env_logger = "0.9.0" types = { path = "../consensus/types" } state_processing = { path = "../consensus/state_processing" } int_to_bytes = { path = "../consensus/int_to_bytes" } -eth2_ssz = "0.4.1" +ethereum_ssz = "0.5.0" environment = { path = "../lighthouse/environment" } eth2_network_config = { path = "../common/eth2_network_config" } genesis = { path = "../beacon_node/genesis" } deposit_contract = { path = "../common/deposit_contract" } -tree_hash = "0.4.1" +tree_hash = "0.5.0" clap_utils = { path = "../common/clap_utils" } lighthouse_network = { path = "../beacon_node/lighthouse_network" } validator_dir = { path = "../common/validator_dir", features = ["insecure_keys"] } diff --git a/lighthouse/Cargo.toml b/lighthouse/Cargo.toml index 14efb72a3a..2afad1b582 100644 --- a/lighthouse/Cargo.toml +++ b/lighthouse/Cargo.toml @@ -33,7 +33,7 @@ slog = { version = "2.5.2", features = ["max_level_trace"] } sloggers = { version = "2.1.1", features = ["json"] } types = { "path" = "../consensus/types" } bls = { path = "../crypto/bls" } -eth2_hashing = "0.3.0" +ethereum_hashing = "1.0.0-beta.2" clap = "2.33.3" env_logger = "0.9.0" environment = { path = "./environment" } diff --git a/lighthouse/src/main.rs b/lighthouse/src/main.rs index b05e78fe5a..e0587c3416 100644 --- a/lighthouse/src/main.rs +++ b/lighthouse/src/main.rs @@ -6,8 +6,8 @@ use clap_utils::{flags::DISABLE_MALLOC_TUNING_FLAG, get_eth2_network_config}; use directory::{parse_path_or_default, DEFAULT_BEACON_NODE_DIR, DEFAULT_VALIDATOR_DIR}; use env_logger::{Builder, Env}; use environment::{EnvironmentBuilder, LoggerConfig}; -use eth2_hashing::have_sha_extensions; use eth2_network_config::{Eth2NetworkConfig, DEFAULT_HARDCODED_NETWORK, HARDCODED_NET_NAMES}; +use ethereum_hashing::have_sha_extensions; use lighthouse_version::VERSION; use malloc_utils::configure_memory_allocator; use slog::{crit, info, warn}; diff --git a/slasher/Cargo.toml b/slasher/Cargo.toml index c5ce8793ad..7f2ac456b5 100644 --- a/slasher/Cargo.toml +++ b/slasher/Cargo.toml @@ -12,8 +12,8 @@ lmdb = ["lmdb-rkv", "lmdb-rkv-sys"] [dependencies] bincode = "1.3.1" byteorder = "1.3.4" -eth2_ssz = "0.4.1" -eth2_ssz_derive = "0.3.1" +ethereum_ssz = "0.5.0" +ethereum_ssz_derive = "0.5.0" flate2 = { version = "1.0.14", features = ["zlib"], default-features = false } lazy_static = "1.4.0" lighthouse_metrics = { path = "../common/lighthouse_metrics" } @@ -26,8 +26,8 @@ serde = "1.0" serde_derive = "1.0" slog = "2.5.2" sloggers = { version = "2.1.1", features = ["json"] } -tree_hash = "0.4.1" -tree_hash_derive = "0.4.0" +tree_hash = "0.5.0" +tree_hash_derive = "0.5.0" types = { path = "../consensus/types" } strum = { version = "0.24.1", features = ["derive"] } diff --git a/testing/ef_tests/Cargo.toml b/testing/ef_tests/Cargo.toml index 79664a2622..11283052f0 100644 --- a/testing/ef_tests/Cargo.toml +++ b/testing/ef_tests/Cargo.toml @@ -22,10 +22,10 @@ serde = "1.0.116" serde_derive = "1.0.116" serde_repr = "0.1.6" serde_yaml = "0.8.13" -eth2_ssz = "0.4.1" -eth2_ssz_derive = "0.3.1" -tree_hash = "0.4.1" -tree_hash_derive = "0.4.0" +ethereum_ssz = "0.5.0" +ethereum_ssz_derive = "0.5.0" +tree_hash = "0.5.0" +tree_hash_derive = "0.5.0" cached_tree_hash = { path = "../../consensus/cached_tree_hash" } state_processing = { path = "../../consensus/state_processing" } swap_or_not_shuffle = { path = "../../consensus/swap_or_not_shuffle" } diff --git a/testing/state_transition_vectors/Cargo.toml b/testing/state_transition_vectors/Cargo.toml index 6da9f2f4a6..a25b3c31c1 100644 --- a/testing/state_transition_vectors/Cargo.toml +++ b/testing/state_transition_vectors/Cargo.toml @@ -9,7 +9,7 @@ edition = "2021" [dependencies] state_processing = { path = "../../consensus/state_processing" } types = { path = "../../consensus/types" } -eth2_ssz = "0.4.1" +ethereum_ssz = "0.5.0" beacon_chain = { path = "../../beacon_node/beacon_chain" } lazy_static = "1.4.0" tokio = { version = "1.14.0", features = ["rt-multi-thread"] } diff --git a/validator_client/Cargo.toml b/validator_client/Cargo.toml index ada023f8c5..e0172afd2a 100644 --- a/validator_client/Cargo.toml +++ b/validator_client/Cargo.toml @@ -13,7 +13,7 @@ tokio = { version = "1.14.0", features = ["time", "rt-multi-thread", "macros"] } logging = { path = "../common/logging" } [dependencies] -tree_hash = "0.4.1" +tree_hash = "0.5.0" clap = "2.33.3" slashing_protection = { path = "./slashing_protection" } slot_clock = { path = "../common/slot_clock" } @@ -46,7 +46,7 @@ lighthouse_version = { path = "../common/lighthouse_version" } warp_utils = { path = "../common/warp_utils" } warp = "0.3.2" hyper = "0.14.4" -eth2_serde_utils = "0.1.1" +ethereum_serde_utils = "0.5.0" libsecp256k1 = "0.7.0" ring = "0.16.19" rand = { version = "0.8.5", features = ["small_rng"] } diff --git a/validator_client/slashing_protection/Cargo.toml b/validator_client/slashing_protection/Cargo.toml index 631e54dc4e..278dc22d0d 100644 --- a/validator_client/slashing_protection/Cargo.toml +++ b/validator_client/slashing_protection/Cargo.toml @@ -18,7 +18,7 @@ r2d2_sqlite = "0.21.0" serde = "1.0.116" serde_derive = "1.0.116" serde_json = "1.0.58" -eth2_serde_utils = "0.1.1" +ethereum_serde_utils = "0.5.0" filesystem = { path = "../../common/filesystem" } arbitrary = { version = "1.0", features = ["derive"], optional = true } diff --git a/validator_client/slashing_protection/src/interchange.rs b/validator_client/slashing_protection/src/interchange.rs index 3793766b6a..99d37c38b9 100644 --- a/validator_client/slashing_protection/src/interchange.rs +++ b/validator_client/slashing_protection/src/interchange.rs @@ -9,7 +9,7 @@ use types::{Epoch, Hash256, PublicKeyBytes, Slot}; #[serde(deny_unknown_fields)] #[cfg_attr(feature = "arbitrary", derive(arbitrary::Arbitrary))] pub struct InterchangeMetadata { - #[serde(with = "eth2_serde_utils::quoted_u64::require_quotes")] + #[serde(with = "serde_utils::quoted_u64::require_quotes")] pub interchange_format_version: u64, pub genesis_validators_root: Hash256, } @@ -27,7 +27,7 @@ pub struct InterchangeData { #[serde(deny_unknown_fields)] #[cfg_attr(feature = "arbitrary", derive(arbitrary::Arbitrary))] pub struct SignedBlock { - #[serde(with = "eth2_serde_utils::quoted_u64::require_quotes")] + #[serde(with = "serde_utils::quoted_u64::require_quotes")] pub slot: Slot, #[serde(skip_serializing_if = "Option::is_none")] pub signing_root: Option, @@ -37,9 +37,9 @@ pub struct SignedBlock { #[serde(deny_unknown_fields)] #[cfg_attr(feature = "arbitrary", derive(arbitrary::Arbitrary))] pub struct SignedAttestation { - #[serde(with = "eth2_serde_utils::quoted_u64::require_quotes")] + #[serde(with = "serde_utils::quoted_u64::require_quotes")] pub source_epoch: Epoch, - #[serde(with = "eth2_serde_utils::quoted_u64::require_quotes")] + #[serde(with = "serde_utils::quoted_u64::require_quotes")] pub target_epoch: Epoch, #[serde(skip_serializing_if = "Option::is_none")] pub signing_root: Option, diff --git a/validator_client/src/http_api/api_secret.rs b/validator_client/src/http_api/api_secret.rs index b42cd11edd..e688792ddc 100644 --- a/validator_client/src/http_api/api_secret.rs +++ b/validator_client/src/http_api/api_secret.rs @@ -60,7 +60,7 @@ impl ApiSecret { // Create and write the secret key to file with appropriate permissions create_with_600_perms( &sk_path, - eth2_serde_utils::hex::encode(sk.serialize()).as_bytes(), + serde_utils::hex::encode(sk.serialize()).as_bytes(), ) .map_err(|e| { format!( @@ -75,7 +75,7 @@ impl ApiSecret { format!( "{}{}", PK_PREFIX, - eth2_serde_utils::hex::encode(&pk.serialize_compressed()[..]) + serde_utils::hex::encode(&pk.serialize_compressed()[..]) ) .as_bytes(), ) @@ -90,7 +90,7 @@ impl ApiSecret { let sk = fs::read(&sk_path) .map_err(|e| format!("cannot read {}: {}", SK_FILENAME, e)) .and_then(|bytes| { - eth2_serde_utils::hex::decode(&String::from_utf8_lossy(&bytes)) + serde_utils::hex::decode(&String::from_utf8_lossy(&bytes)) .map_err(|_| format!("{} should be 0x-prefixed hex", PK_FILENAME)) }) .and_then(|bytes| { @@ -114,7 +114,7 @@ impl ApiSecret { let hex = String::from_utf8(bytes).map_err(|_| format!("{} is not utf8", SK_FILENAME))?; if let Some(stripped) = hex.strip_prefix(PK_PREFIX) { - eth2_serde_utils::hex::decode(stripped) + serde_utils::hex::decode(stripped) .map_err(|_| format!("{} should be 0x-prefixed hex", SK_FILENAME)) } else { Err(format!("unable to parse {}", SK_FILENAME)) @@ -153,7 +153,7 @@ impl ApiSecret { /// Returns the public key of `self` as a 0x-prefixed hex string. fn pubkey_string(&self) -> String { - eth2_serde_utils::hex::encode(&self.pk.serialize_compressed()[..]) + serde_utils::hex::encode(&self.pk.serialize_compressed()[..]) } /// Returns the API token. @@ -205,7 +205,7 @@ impl ApiSecret { let message = Message::parse_slice(digest(&SHA256, input).as_ref()).expect("sha256 is 32 bytes"); let (signature, _) = libsecp256k1::sign(&message, &sk); - eth2_serde_utils::hex::encode(signature.serialize_der().as_ref()) + serde_utils::hex::encode(signature.serialize_der().as_ref()) } } } diff --git a/validator_client/src/http_api/create_validator.rs b/validator_client/src/http_api/create_validator.rs index a32ccce627..f3107cfedb 100644 --- a/validator_client/src/http_api/create_validator.rs +++ b/validator_client/src/http_api/create_validator.rs @@ -159,7 +159,7 @@ pub async fn create_validators_mnemonic, T: 'static + SlotClock, gas_limit: request.gas_limit, builder_proposals: request.builder_proposals, voting_pubkey, - eth1_deposit_tx_data: eth2_serde_utils::hex::encode(ð1_deposit_data.rlp), + eth1_deposit_tx_data: serde_utils::hex::encode(ð1_deposit_data.rlp), deposit_gwei: request.deposit_gwei, }); } diff --git a/validator_client/src/http_api/tests.rs b/validator_client/src/http_api/tests.rs index df0e480444..1c593b1a4e 100644 --- a/validator_client/src/http_api/tests.rs +++ b/validator_client/src/http_api/tests.rs @@ -365,7 +365,7 @@ impl ApiTester { let withdrawal_keypair = keypairs.withdrawal.decrypt_keypair(PASSWORD_BYTES).unwrap(); let deposit_bytes = - eth2_serde_utils::hex::decode(&response[i].eth1_deposit_tx_data).unwrap(); + serde_utils::hex::decode(&response[i].eth1_deposit_tx_data).unwrap(); let (deposit_data, _) = decode_eth1_tx_data(&deposit_bytes, E::default_spec().max_effective_balance) diff --git a/validator_client/src/signing_method/web3signer.rs b/validator_client/src/signing_method/web3signer.rs index e907126faf..2c1f0cb3fc 100644 --- a/validator_client/src/signing_method/web3signer.rs +++ b/validator_client/src/signing_method/web3signer.rs @@ -54,9 +54,9 @@ pub enum Web3SignerObject<'a, T: EthSpec, Payload: AbstractExecPayload> { Deposit { pubkey: PublicKeyBytes, withdrawal_credentials: Hash256, - #[serde(with = "eth2_serde_utils::quoted_u64")] + #[serde(with = "serde_utils::quoted_u64")] amount: u64, - #[serde(with = "eth2_serde_utils::bytes_4_hex")] + #[serde(with = "serde_utils::bytes_4_hex")] genesis_fork_version: [u8; 4], }, RandaoReveal { From aaf1e4b1ab0ee8fa736ee0fb113e3b2ec9ded3fc Mon Sep 17 00:00:00 2001 From: Ricki Moore Date: Mon, 1 May 2023 02:15:57 +0000 Subject: [PATCH 36/56] Feat: lighthouse book - ui authentication (#4232) ## Proposed Changes Added page explanation for authentication under Siren UI book. ## Additional Info Please provide any additional information. For example, future considerations or information useful for reviewers. --- book/src/SUMMARY.md | 1 + book/src/imgs/ui-autoconnect-auth.png | Bin 0 -> 3434004 bytes book/src/imgs/ui-exit.png | Bin 0 -> 519142 bytes book/src/imgs/ui-fail-auth.png | Bin 0 -> 568171 bytes book/src/imgs/ui-session-auth.png | Bin 0 -> 219918 bytes book/src/lighthouse-ui.md | 5 ++-- book/src/ui-authentication.md | 33 ++++++++++++++++++++++++++ 7 files changed, 37 insertions(+), 2 deletions(-) create mode 100644 book/src/imgs/ui-autoconnect-auth.png create mode 100644 book/src/imgs/ui-exit.png create mode 100644 book/src/imgs/ui-fail-auth.png create mode 100644 book/src/imgs/ui-session-auth.png create mode 100644 book/src/ui-authentication.md diff --git a/book/src/SUMMARY.md b/book/src/SUMMARY.md index 83429dc3d5..ba234632d7 100644 --- a/book/src/SUMMARY.md +++ b/book/src/SUMMARY.md @@ -34,6 +34,7 @@ * [Prometheus Metrics](./advanced_metrics.md) * [Lighthouse UI (Siren)](./lighthouse-ui.md) * [Installation](./ui-installation.md) + * [Authentication](./ui-authentication.md) * [Configuration](./ui-configuration.md) * [Usage](./ui-usage.md) * [FAQs](./ui-faqs.md) diff --git a/book/src/imgs/ui-autoconnect-auth.png b/book/src/imgs/ui-autoconnect-auth.png new file mode 100644 index 0000000000000000000000000000000000000000..4121f56cabdf2f95973307509e457a0aaed4d554 GIT binary patch literal 3434004 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 z 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 COeC*t-Jym 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%0D+@(3hkAJUq%tF5^PGOhJ)_ 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 z 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

{xK8uYUN1Tz)(MZ)=_aDBdt0f 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

H>B zC3X`iF&jrP*RDm(Kd#09WJ%{7a*rgW8ed2#78fY4ehY-}9Xf>!z)lx@>vrGC;P%RO zVH;sHYe9>_$o$072A{;$zPX}j6M>{t@}@eMrcI4D@fn*K=2K~&(c%b?|C92&{r^t+ z(R}~EQhqK0ie8NhcK?g=3;2Jc{C-x*!3C|Qc0q5?NLm|U#<8GgUeH>L4LCMMp zWZz{+0WwG}!8|P3n(ux&8)8ZTYT{t5m0Mu8G6iL{u#MDdzf9CH0>)bpDW@?dyw78^E5A(1li#4Icjm-Jg)|w!MphgCka6u3qHMzJdt_43ql^d zkE|+a>tcpq$8lq&Wk^y5Iq=LmXe9XIyN~$hT})DYo`5)wB)swydLW>Wq=PM>g&I&f z&kPJi%RJ=ya<omh%C;;m#VqtC_U7p??AHcV zS%AH-W*Av;2|Ep{;{;WHawoW%z_&#;lQ4t;@>S;MImx}{efi9K247`1bS{24N!*r@ zLL*^_!cbx;d&ulCzm(|PQPjQj$};ribTAYzBG+*vmZy=mx`O2F?`uDiOcsY* zSPiNtO3CmMA+Wl26_vbJtzI2fBen>v7}NyRR}b6g~>1 zX*f{#gpBNpuK+Z8`Ln3PT3;@7YFqY_I9;}>r#SU_rc8_S!S`&4}rfk_&>KpOc z7mGKiMwv+u=j}hql=%>`UYw&)%FL0p{S z6Gb~mH`lKhrAKs2;%fBZCt96OX7k%>a_FC^^t1b**N8PsW4Zvd*{0j|7e;x_<(;c( zKaw)C`WzyLfwABZ7}39t&#Rc+EG=ev043YEpF9jmr2UWfFmSY3%U$-xZlz~8|4Fw^ zWT9v;G`I1@Y)r^#`Q5cj=_R02YKk}XY+cnp#nrz@e-p3U=}hsz`*xQD^}Kf2*zCoC zASQ$#lD6gb%D)*%6{-TM!p}KJ+H+GSrPFVKR0v02aRtf$n%B)l5$F7Yo%3Ircx6c} z^LX4r^1$@&bl#duobFV`)U(X~_1&xd+2~U)RBsjEy1kMHFdwYqR7T{q$e4QK=f2B7ru^!uM46uF->_{j`9!b!jT&@`7yjms z$q!d%-cdbDF{CW-D&kW7;$5@p@EC)E-PLo1?s6Ryzl4Uk@s~X)U2{mr#kuoXyva1M z^JfNN^{6ADi)Qj#C+H<@>&0oSTQxPqn(m{W(rC$sF4SV!dh{nn z>yeF6%t(~V;!U8J{IZC|c~PA_HCW{cum6s@&O(J7R<8c9ECF#k$lZ^6l9iR?57DNQ zh<>A77`a{alir_W=ilT$(1E(n;ND@zj#}z9J;{6xgz1lhoFzCwQ=RK|%9jLffz|zKOFE#|%d@y4OsOu?e)CZN6Gi?4~;^hBtK=m7dCioR~(G08P!c|8wa(k$p0RP-1W znLKdNJ%)){gE;h(yn{&cGdvcFVlIE##NA_5e6N1=+bmv;&8dP}>qTm}M;>zdPsAnX z6PWZX4;}O2lrC8-ydV($;9HM8VU~?__4Wq*o5;^o^FEGFl%&QQ72iM&?+?VqtN0 zr}-2Dp=2{FOOm?6qT}wQ(mK|6H;$&0pm0QKc7h6q18kT|{O+ixN#|6#TkJH_~kyj%5Bar!KF5e*=u-`$dY4NE+j{=iuvX}HI z-b(l07rO430Yv(k8pUG|D;uj%8J0bS%y&vur*K)~H`g_*0~SnLLL4lIcZ*3=&xVB4 zZHq6Z(`E@i2C!*e38yK7deD8;^%=YeVq+th49!8ytDA!7gz&mZ$d5;evhbzdQv7Z( zfd-_A=5Cs=X~l!RMXbHDDb#`fb}e`7Rl8Bp1fqg&JjND|mdz-sEL9ipjjp5mFnC{Y zno6d@=@r9q=M+sEs07OThS+buMUcJmJQ;a)gK;Qusc<~!vtC$1j}*|JcAC9dgV`W1 zORu_=IHEsPZf&4VjxVmxANbv+B+v-7Wjm%yvJ=)~{7^4;x$aE9%?HJpAAauV;*L-& zzBh!dtD$})+S-%h_O<-g^8DN^0rc4Ta}3g>8dT(tt`Ww%JK+qk_d%)@(kWcd_{Bv!rhq<>u|WaD2zx}eY8n~F^8@*MdbFC`_yLj3y+(F%Cb6>aM%>q-JyD8fEfI<8*ydw{HjO8& z?2wO@kdkB{y#dTBQ5Y;w7#U|MBtU%)wRsxV0qd^502F$TQB$$VkIvV=X@5D4^sb|b zO__$}%V+g!%RDG*yqR6}fAuM2T}6RZWpg9R7%h;qU%b$(9v!cj?mKq?Mu13sRqWb2 z>j={9$4Lq#(Hb$0%tn)wNekT`1>fE8H5m#c&8w6R{Z z3%;8^oXx`sWj3Q8&RrE%%@eH%T3@CY$pFv}5PvrRoA_fT(cB>ZiFqS8^amr$*>}N> zO+3HW8;bm^HxzR2K&s+-`N&6-1P%Xee_8NO_U@Jvvq!DUAwVF!-7l5Xx|G~JKi6}v z50Aa@oCI_0L^}WI>ANy?aMV1aPx^7BoeiUC&i(9j{f%}-TzQn90l42_?TNzpNW=3N zX3`PBO_%8TmBaq4&I_5haZS%HFlRumD*9^qkmBMuiEJm+qjt*BFcRF7yzD0TDSd@L z|F14Vo=_v6{DYDcs=UU|oD@2YE5+fzp_VI}_52He#Mx{mi3Tia|7q1HvzR2@8Arx} zOmA5o^_+4{A4*Bfx2b=-c;L>T%bo5ZD#SJ~N<^Qh?k8{%f_CQlU6MuAa< z!0`8CPA0DgD818mW&Pr6#`UyB=9Yf_5bJd~`747uT&+6sFCA`PyYf9*8E_jnQbrXG zs5w_;`vw3{0Z+hdNImz>C+~jT42&hF@+!WPX#MmlLq#%vE*#MjuLf-RIF-WhC6hSV zXM#(}y|Rwfp*1dc$1kW24+c#WfD9BMwesj{U(lDXhx2&P`DMDP((s=8hqQq3VZY>4(Ezn;FSF&F-czIGF<8ftAIt@?dkCI($rSOFT{ABV| zqMth%uZ~e&RlN) zBfj#3dH7WL#*KyL0&s}<<#!i~kMjKHMEsyGf{gFTX?VyC+$?dwIixrlL~i^4QTLVs zQMPTn_6&`rlG2JnH$%683P?)Bprmv+%m4~Vt29#5-JQ}sAl)S)gY?j`F1+vid7o#! z>;1kT>(~0v4;bJ&uj4rPZQnpAJ2@t$*j!>*4os~j^-vi3kzLP`-FF45*7|+~ng?=t z@qy2w2sOAk_)GZ#l5(}3GVL;6?y8%vSIPF~;c4Cp=0bd38Ft$c(4+L>YtJxWZ zd}eZX;7GBzBjy3!!PiZx;0cmemuWR}Opve|Mj+u;IYw1~@z!0?SbsH|K}v=^H7?ev zb9ZgyO0+VX&Gm~^?*xN~P+}$PE;{|bL9#Th>5iuKH^5LKi~KxC7XFFkQ+K17pLoN1 zqa{f-pV1{zD<6r=8M9vKHqs zOo%Kk+kcW*KB0gLroQzmA!#P}?!dxpAyo9ffsb2|#0})@dtbcisr_Gepu9zJ--QiU z78jP-dQBclN>${%kDMg67w2>|&%*}Pa|Xw*s}&l`r`Ns8orXRczp?IKwkXw4V0RL$ z*y5XQLweK4#2miUY&|?txBF~>9;F#*UFB(1RBP_^p`0B-$;%S1HSr6gK&o(NFN3wM z93U^*tgBZA&Wj085e_4PWT$oC-|0Uv@!Y>CWMe&bQCJbaAd;*~-OKXf@8!U*upZEp z>ms_^7QuOo(i>o+f2^}2Tt!w~(^muTta4>V)<;D$l znrM=`^P=auW0KDW>?T?9mzH(#is9p;cYY$#qYyzV0=3xd>uJ7@%9~lAi59P(b!bV& zbWPIsn~}jCs27r&B@-&oZ1mm7eUP6bG*E`Zc<(nP z$tw9#-~ntlJv>skvyC?N+;if*cP77hM3?FA&XZ9a9*H(oG<5druP9(zy}6aa^AQvd z#qSX9nU!xQYwBx`%`_^^&sROQ?OtB$cE^tEE{NpRr5=|&bGo5nx~Tb-lFiEd`qj}s(&Jqd@s~Jw{31o zi?Q><6OE(WLa@bmE81bLo2iqk66VjEeXj~b!`4bh-!@e{FGeb_o|RPzvP>8ojs<1B zZN}A|SiML^#k+MRrH^bi-AWICWdqW~_?;ttb&MI3O(Wd`1b0O<0BL(+R~CCkyjjRY z{a$a+CUic#jYS&D(xWBhaT z*koYyfP3pO;5&-}t+q?7jv;N;cx(l*Q~lRmCit>@*v;~G>j^c0*5Bkac3sZCb1>ew zJ_+xP6 zc~{lcAF1f3Yd+ENrp9GhyiUy99$S2~Xs@{0!Ka^f`#PP&yFtODg>dd?pIRnp8GwR8mMbUD;D@T99bbrP3_*D)JB$aP>=bYhyh#G8FOFs=0~%N z`rcV%jR(Q7wDO8jA9q;_mV1zhEPJy@eF1v0n;<)Y_OD%wk2Y$3jt|Kwl8ERUeF@N` zratB%8*ESswu#zRlf>Fr%sq7spAJD$^v%RUFg?07Ru=8|csP&z*jN9kul^xw|uA5&B6_rZMs_^6NCKAO!pFOynx*thS2^e6Qy)w{fZsk&Z6T&ttGDWv+0B(iqGJVON9 z&_J$z=B8^DT&ewfk#q!hp9C^X^qiv;2kuKam9Ms-^}!yi+a?KzJ^A^WI}s5w`HZ3a z{ZSS(9XHsXc7Y4dZD4JU*Z8XO$jtw)PoX#wHH(G2UusAQXj@XY0^6HzS$@7OUm4WL z`xC6+Jwf-Ilkc?jq}x#u*M8xfq@A)#OFGBbKCbI$)Zxq8wIaVW4)4IC*>6Gy2I`>^ zM}gq3$>u-0ja!ns0o5LeDB*fcX1ZoOq}F zmHTJ{C>r)Q*>qb~+?*g8bnN?fw1+XoFL82Fl3%lCD!s;FE~@T2QE}Er@}OvkEeXt$ z8hJh~X7%NjdGzGi4+Dk{WyiBLeici9x)FjP2%$l_Aqq@z@=;GgXLww|q+S#22-gTn zab9>S7o5w*dTv z0BVAd9KTA|Lrp%)8S0BpoRNEa9)t>1;lwYRZMT$rSae}k+GSWlm zl{P3$v5EW@juqAfyi4QvkT>$1XU<8*vY#^h?C>L^rCUn2mFHp2cjGCl=n#lp#M+1B$fMrdjLqfq zUk;pq@N&9&307_4SP4XHkf7r{LOneMd7~C$%1ZPIxS5Oz>lV~p&&Y7C{b>XcfsN=C z=v0|gY#}ezj6Ve4!~*8S&GSU=#aP{$C*lj{S3X%Un^JcE@*e&d6sX02-o0mS-c)SC zc+1aIjCzZ8MwD7dZzi=62|vjq#M^1hiIoTD<@&U-1=)hzoRP8n=%M4Ns3?$_YAfA@ z6C6rgi2qQ++R@rk=~RgqA*-4Y_Qcmap4h;GWCP(ws%-h>TDt7Vw}-IP)t^I{&oy#m zam$-+pdtVmJSo@_>su5X(pDs?TY*rL16Wm9C2%O)%+Fp7GG_e!@!fXqEIz#@EAc~t z;#Ixw;gbS@zF!1L4YuZSI)RpC+my)Hz$xAjtU{I5YhH~wht|XZAUuoRmpK)rkx}nA z-4xFl?2yYK!W$xRF~$9k38dC6h3GW~FITI?`>DcvMY)`blbH2mzH4!zHfw}sNPYlk z^q;8vlzYAYO&#e~@!jhVP(af?QsV)V^YOhl$nup&5$UcIWe_%s@xe@VRpSt_vA|sW z`F`2b4ixpbKdaD7Y$7+r_vk>WyL1>0gLdhV))vt3&Te146X;AyE;RA372icov0mc% zkyWPbjVRGo5#vG7U_*VdPGoMD7Qn_+2T4bw$bic77P*;)>pH)|`55Sg$l$rZLp3sb z%(5x$wR_M&zvd99L?y`l>H=kajJ?!EXrut4cXXRBmck}=)mI*?xS zfVU}|jMIVrQ$Y9BvrPhQF}X>56sHyR;Iv+#V9aQGkTlY%NM>4y4CCSJz_V0%t+cC$ zvoaV%*$kcn{t_;fGnO>`s#UEQKh2ItP1D?z-zL4LTWA;;R2EqbX@!7Ae+R(7K466) zxq4l}Yfux39(!@H;Bg28_($~PS&)%S`a{X)z2PGLAzP-)_f53U*rgI(`b>tKpP!hP zroKJFm}az8g#Q@qof5-NV*)MWwF-2+mpRCku}~P{IJyJ%(icQ$@GK6;G}^$}YHGw- z!n&hrv`cX<`h$olZO@$P^}1Udy_5@@eH>vgfoH6+^9xh7kA~{5=#ze0HyvSnlDhjZ zn%|QQoS-djk+_CqJnVXBniL*nv6t3HLT%z!R?&_kr?WC{$8&tnLtj2s)7v9%bm9jQ zzyU^rRMW+~s2IvYQ~M|@v3s0im?Z>QROo&A^KTpVf%Ybfu>=Q8?|BC$<0AAP{Z(tf z6kG_1V4#^ZE2b!i$)iIUtACZqGfv7>v@@JsY@6E1klw(jJPY~eh10r7^;OpX0KZO4 zs5te57GV%Sre+J6jT3jKgR3(L*Xa;*e#W|O56@Ut#$fv3>43T4Lc1I`UV%!uppEdG z`u7{cs5*JGxUz9$+r@qIU}YbMb^R|bC!pY)_3(R)M@$#>Jk$O37pA(ZRc)3uI82Lp zOEAzRo3Kc@SYUI>x+IDhB(Wf?X;OHA^t)Y&#&rQ8_R9?Wb>Rp4Ey@ z1?ZGIl0U0k4;W^ky$?B!&PaSR)vdk|+9=khMXpjQZC63=jq=orP3YhBA4MMOULgb{ z>hh{~%3g%-?}b@6$x5A2(jF+*^A&qPSDxE@bTiT9AQm1Dp=x^)SAm&StSuI==h@#I zouoF^L;R>#c3aOcuj;y^?9t-z-SxLdDdM3i8k_JIAZz9PvW}UvL&|W49bS8-nF`^EEX>Q!Qy8D{Y z^wueG(%~_|`m`PFG6CfgIHK=sW-UHPRFU%(qE!kuzjNxHF@JpjDkO&pK}1cxN>xJj zb3w@Xusy*ner4z?zNTqYh{?LLEKP}TbM(|$|9w=)SwT3EmCYeAzJp6oEm9c`wci~U zyEz`6+&(^LP40qlNS>b@jh;wIR7?}WuOIW4NHyJi3{|V--tbLN+l&J`)9#-Qrr3o% zH}G)gNj)hoJ9b>4XU59&t%woHs|0D;0&JeZkJ_POs5eeO%|XcGB)4!+_o@xvkBG^` z#lx&fSh|F2;rc!f*0Uy#d@OJ3UDp+KWz`1}xqi1}_ zxh4=%)xE7YNzq+=qe-{0^=C$W^C>Ta=@6K!B-n~_`dzBxPndp+^55w$UA~1BWReGquUQc*`DJy`N#`!1Ov+b`=VP6^I@JNbT z83jEiz)-Zn_gbk)VkT%>H%J@nIWyc@Z|T)5@V%JM>o5dbfYo)AzX~n-aZC3xt_F`e z&^2>J!UP*l$3L7L`z_5W71-ws*3kQk_T}X%O%x0SLx-kZkrLA7h{Z}~XSdVu+yj2M=WKZT=G?Whr0xV@4aBILweYj7A5L_L&--SjJ_7Ew98=bi}3Kfi~NE7#&rIQVK8+6*-=^fVNi`?RIh;()L4<)WF1X9 zL(7pg0^E!o3%qNpH<5kcW`dz!VHl;hpP!#xYh``p ziT;jF7m{8Maoba3IHPvPc~n%j@vAIVOw76BDHbv~WQRVFw^TGYOVVLLOyk2>)wRb& zxjsek8ht9;d6!ViGa3P4+_rPH|6XwGUfFG zE-LZt6d7XCcn%(hMUgcJ8I&$JlP=sz3x9O_Qoy)bcMHAp=rZ$-Ywvj>KL+w+>cUJb zTL#^-aXS`!UdeH}Opy21HwBFb-=By026%6YojWblZBdbuH(|Er*P~h?kA<^t!uX*{ z-!V!x4~^IzQ9{Qt2hrF>8uxZymn%>cx9O+zxmX0mK~VbT_kVsC=+ysqNRxKy?}c)1 zn+0u(6tM{VbmUQNRLX^V*ANyJ%@UqX8h4;L;}?<9dtITy#p|O9#5=5l;xUJP-t7^ml$M!14!HUeD@cff(9YNV zB=UJrjlW#$k-6EIiAp@2>G|e$V80h{;E=+dGF|q4hVPM~mi6`9ozjo;uBXG5pXkUw zEHLe-M{xcm(BC&61{lNF-$s_HB(|M!!V=VcC>|GMH|Y~Ct9xg;^)^g%TMU~wk=5$} z@s?Wzql-N0e@~0tnC~jpP|KII8Pq-+N}LnRE}Xr(gTfh))K+%CnXB3|GncDvcrrwF zK5I4y!l4rMcV=!_0@Kn3Oea`_dZt|MLo{FG4VI`CB^gQ-R8p1|{C>%bMfj_pNS^Jl z>&QPuV$;=C{!6CQT+W3XLS#$+TJ^-*CxJNNKJL@IzLJMCgI=zdK7(GRhAWU;UU7EQ z!0v1%AG6N!Gp7e}@#KDVi5CMd(OaA;KXU2{&7?IV8b}Vfe&~|SCn5o5+uuMpw)|>D zt%?y=i9R^Ga*b>#+U<7jO-Ygn19(NczjmE#h9ZF_*{2`ACa*W3`+(+^ z>F>zM_!Dm%?iogHO{fZtO~!=U@iLX+u^*z|pR zLm%IrdxT#rh;4dF<$4V-YBV2*N;1P0z^-TAX-L3%MF%*qxV@+3*7Gha>1IuUlu-_D z;^$Ol0n$xRhtm*+m)^uCbX&MPoZ0|q5~uDQH>Q30BvGJyXv?uIvN8GSO?f+`i00Ab zw)-L5=JPIb0&+$6w_T*yQWa?hgt2SW+SuPB+&nUYj8Z?p#FIFnl3;cr!!lHO0ipD+ zzWHWChs8%+pYvc{ZHztQWzp2j>NNvI<&3ZDwfZDQo8d%Dd9yp^nCit(q|$z@6Ub#s z-TBKD1T=<-Yv1Ob)-JK#EiXVeSf4-3K7F90N)ND3XgDWfVH2Q1DKRMgr#Q)5JBLm2 z{X5bMa3fQ0x;tzLA#!57g@?QilJRJjtQUOKe#4-vJ)!e_#r3f zuOF;8x1NJrV|rMCRh7BWQFjM=n@X-X_9 z=PKq5NVc<}-;j{)fa}7^!uW%n-)}Fd_>ezR^KpE^hSB)jB?UcRr{z0lnrPn7)adUi zA2SIs`?NVg)}YOOA)LHT^)f^z#?0=&Ng%s#vJ8*P3_0rKD&?TR(278Hn9%Y%j{ zseZs8k$sx4xT^XIqu+9+%N<9%qbKlfcnvF+@Ao)`8Rs5Dj?$X)T~@}6y*im{8_DS~ z`X(_3_*q_w;utrH$dchv@5#XfGPS)I0mYfh=Ows-t&@|DXiHB(Yna+*qRX?eH{H*c zo>{=#)Sx%$rbAyAU8)ZKsT{D|7;^TB9F3maKl3at)Wz zvc{@yq)Mm1NfDkVv6`fnBPcUplwo%{xEH*wM*WErHbcw+KMD@VT6GW^NH1M}@A;#s zS+qTcOI%uKZm*0$@XQ~a3*e1Ez8dk$_v{Vnk5fK<1-z<_ewbjj=@H6V)PQs}=NxZY6oKxus@OY{9GYktW)tofcf0XiU2x&WUXkM5)We-(QC>5whYWK>7Uon0 z!RJFNhC+cy^wf^dM8@oox?yJ9OEc>G9EmFAO+DkeB(bjA}&-uH`M5D$<2WA zeYf;(cKfO4gQSKbTriH^hxAv1(rE*d3YQP@3A;bfsNqfA0k3hEE1cgTOKwDv=$D$2 zi1=$0*w@5-Hv>v#X0Y~ep}cD9VDu8>;Bp@OT)!+jL?uP z*v8s;$Xaysq&ATJd?lL^GgFYy_h-qDR)_;K{JOP70P=2NbCJ1hq6i55U6E)To*!Xh zHZ4o~WIOe_k7h^O-w*`wJ$~0vUM}ud@XPhyf?JWP^%pn>eSV$mGqkIQ%O zUN?BC(#!JcI|{NR%e+V1|6P*k&1w6kx{WB@x9|T=g6d3BB*)Y=E!b$iu0Z-PBEkjZoEs zI#Qu~h_Oct=^kgNT+>pfee&kWr{j=|exhmt(enGEpSAMW&XqadZ&~0@^CGR9L$;=T zn83gTJyk+WMdIiVs@?c`RnwX`SK`IfmObWp1a{0u5NEBC*23>JWSe^a#A&w~Y67!$ zO-UuFHFk2pY_4iTRl(vj!1nM~H^A76B2Jv_6JyQr{U>DG4*JLH=Q$3}yx$X4)qT~s z%O7N4PaggAM%Ib;-icXayP~}olfFYmVzX)rb9Wsmqn&>3lr-jMsgrZexpjDXSh{zj zDt}Bl_NnSWerTGeq9YwRt6hJCVVZ@aQcu>RTkaI7C2`qoa94(~qd7Xh&D7c(%4^fOHj`KLr^AG>(^sE+^x=;wljHq z<>{4LRkB+_&QQV4wBIWRpSoDA2x@2nM@wKc5fRg1xM3R|3LW8h#FmfXiL%0D2>o`R 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

N?bNOV8^nld&4fS!HO}ra!E?!QnO%5z> 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%0A&Sy#8HrWonk)5UQ5^d5~AK=$k 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%0DuwmfSS)IK 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 z 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

s3Q;=E8uw$ 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%0D?O9Ut#zgdKqEGj>? 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 Ka6%|x7#w0)pG#SrkifU9ShhTv-Gm#C#x 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

=v^3RYT5t)ddT4y)qN$3Q4F2;OwO}{S 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:aHk%J_|B@U$u6TcPne_r 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

j`d%$A>Sr@;Cvv-`Np@$T_d1n)m6zqFlxG zUj(>G(&)ipI3U7iT)$%*o=32rVNeka$-(2%^N{s1?lt#4V~E1ml0An)0LT4BQtg>6 zt!kndJl}Y*)go|*sli?XjWhu9BFgbvaHexZ;YIs5<^9e6Hetu|=MT)*{h4sp;g5CG z-(a@D57TQZ)3fCjU>0)hcsFov+prOr-(Fumc~&Drw#9WJK>=cU-0H(qlLSx);69C{ zqREx?LoD|Eh~z4flNB|&&JD+GepP;IV+THRVRc8p0~K&9bg(i@@EVO%*r+t0oJ_tI z7rf0okdoBbMkx%t`H6a{_aHvM;sz|DH7ZxaTF;ne)Qk1iZx)<iL^M;~U4W z7V|WAXT`Y7-o+O#KH^2bFES3jf8Th%PZM5}GctH9mx|O*V2wZK{0eb8ocbnDAZ}3n zhv@FD|C!@(*+1y+vD;#g7ECI1?6y##@FaSdl1&!UWFXS(Nekq*S(7BhSS{ z>s3`+%ZNog_ga(!siYp;?Hdooajl)WIl921V5r~BR`Q+)|HqpPi!s|a7lpBQE{)Rh zU;omZDUe+8bvyP-oTKbeV69dBpE?ZI)Ut6XohqW|>(OS2Zk%&sRaP5Y)$`R$Ur5Fz zINUt-6rcTmxvkU5Twl_QIXc=qUvIEEVjhjjFPRYTN4loZJzX!)@_4Ln?jl(%o*`}- zIocZx!t&e7)te&hM3FN=GKUUU+;Z3pl)Y!(sNU@t$EI@L;r;R?@m@)7w`TP>81@(O z$j2J9g%1DwEmY%Qs`NiafoDh7HhqDQnX2Zs`c;(nDcRRbt8tie*I>w=F-Qs@KEf%RZMF+zm4>pjMj{CagV~_FBmHiJm$hty$b5p_Gn~e=oC~)$!Ybr%=7$l5_F;C6FbIxqu%_*! zt38p}OkSU9&*tw%=zHR;X`up}OijSPYY%rQl*M1nk5lTHd(^`w zM&Do}?dNrJ|ZksdfjIQ&k7A-u4_kDT2lv}j&DrcSDhxts}q zmPnX#1l*wp98>&u@0FEg7BQ$!?2+T5yaWDL5aDXjG0Dh2-o3T5ylEkV1%U#igKI{B zm4S<#f8+Mdv+j`Ru!DpT@iHbANu2)d^5Xx~-i&aeL5)o>ai0oNbj zX7&Zojepi=y_Ys%_}~kQi!9hx%*i7^IF!$9sq15!$Nvp7kB_|a-0q``z692hO%dgi z1jHIfs1j|-l^;By<=}K>1@)B^WSLlmhM@=iDR1s90uO8fS92Qx;b0c{0TyXF;gt0T zF%Xqo&bCEo_z|;hcS7c~QtsQLaR&H(29WD!4 zvihPj0np_Kx)}w7GFhr;x6Vd5Yf2U45}rbumQhyRXf4@vpsusi%@_V0`5gM^ltu&J z)*5F098y~x?S>uI=vFORs56TVqr5*ftq{DZ-5xA@!P;@rUHtiK#cA@EWErhdf9w?D z_2kF?U8d)U?W_B=Oa>N&V%#OpNvmv`x?=vp8{J#W^9y_?%g$R}qjZ|0qN)5?( z3F45t!zLqPhll=0>_o}#Zvy)Iel6&q4}{RPv%PG6W6Ephg%DIH*(4*07y zKf;$6-e!Jt+FMHWojLRK&jYe6S_BznVx{ZnyP^c#5z36z-GJqinPZf&q2t>r^-JTO zWAlz50E!+!Dq18`UGklM-wNmr;b#yDqNtJ>}AkX4KMr~zH?j=zl%(1EY#Hw{2_ zMp)&GCG7E+N~!WLE$E5Dj|}SQbQ7WhP?z&L8TC?m5gA8cMs}?4rf?lC1^0dbTU$(F zQ^r-#W9AjIrEVfEz-hgLS9>-x(P1N#)}-p!@HbxS(|qp9!DB6#{_i`MBdtK=@-Pv= zIWIynRb#X6zGKfyRTB#g5W`({^_5nwO#0phqFN4!y-kv*4%?r95$E z+$9mKg2kU5feyX4t!2A&B!vdY|Ma42`+D=)DbKW!apF42Sv{56X}?jn~o^pj58>eP^

g_g^fA@<*`;dnx2iQ<;k~J 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%0AO0cScsSccnwZqX_8vYtr$W3X*YW3%D^0XMx`Zd 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�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%0A(9_@*K)$-HTy~4C{bistlWu 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 z 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

G%HkvS0B7Q4D>dm zN3P5o0y1o2O!dDm{KJoPc?<$_Apd=wui%&|Eqc>)D>9hqk=-?A+{~&FscA*J?(a2x zm}Cd8%OUx{sM*Px&s#noIo!8@l1u!5c{ZQfgwQ`i-)75aDUFXcbK_C<0JTCtE@=0Te4gj zboHd&)9X(9*52SDVRi8k4ZmNj0N&wM+&p=nbLF>ho7?9T1IithYZZGG@C+d_zOTTw zrbDo{uXD}8Rc%gVC%AhK|BGET6J6riTP_j>48B+*mc6rrB_wU|Huax4dOEyL@pUl0 zKEaX5H(p0cuBkU#r_ZhPw9qF!J)#@;QwhB}#N5ku`hRoX#&Y?5rOsSfaNQ6wFr#`9 zm}}TWpt$~htjTW{)0dH*Hk4)s@f|0=R%2%+ z)9E;VF&c_utlAsIp9l^UQmD-OVUay&dmj*i1w7t^sOSa6E!6z~l5>q|U~!+%7q4VbD^&&RoAd&o6YaWjP2L4%8f(Mqu}sB~Ho zDGL??kl5cUnY7hnf%6AqB`ZQ_jIA67dbX+{k&vcGI=}!`<8K|g;1Uz#{ z>uLZV=EDIFq&WcsIh)0o0TE^Ge%>8TcZj<>~i}=_$%a_|^2Gr|4*z@`#bn}oY z!twkfK77?x)8-~Evy{=DsvNL#1t-ek4QbX|I^#Fx>_!{F4~gd2lnHDvTS(Q5^DE|` zK6@AF7ZWM6vLV4u1c?_qZCZ${QXXV>h1@%BxlOtJK4JfMge&ZAwSX0IRphi$2cC>I zGjw=l$K$I_^ve8q!XSqKF2nu8Zj)~9-}Mnvv`qUdek+G*uDtw6rV>E1tdt4^UuvW% zo50fQQ4$%Cb&7xE*=z-o`5i5aa?*<>b#`xz(uU&h2kaAf`EB5$a z`gel(73Ls<6cRK(l6RZ4bvoBVH#6=L7@P1UbGVoq@s5q(p>Y@?Sj{g zl81gum_OT97b6QJxxw+}MD9(+!Jz#SMGDpFuzA-7O-?17L(pwCFsX;OZpH;`Z2O~O z^6gBvX3lI3xn8LD{8B~59Xhp*+rr4uF8gyL?VX}(u@6Pyf&2=RgvYuW`ZzNaWgQ=k zn_J|iJp|JoY~YY)56678xqZ0;#ZGiQ6lE%M0y`P{pBwmqZ|gpQu=8kIgkq_OZvW<7 z29bJovuWDR3HVtkEF-(`uw2YbyFJg~nf-A973Nm6luh)UAw|(ppV*pmb6yS4JvY3k zzLI>~xl0!jN9jp61zrn^skVyPzMRRc)LHWCGhLsf$(C$s6Mfg@<6`Vd77~TJ>GapI z>SKg{^v1~`JCxQ#x8vcV)$N-feUDqSq{5ut=7+zmdSDGa(|+oAJi6Lgu%^5GMGH00 z{S?0iUHU_DZQ=+-{lqD!g(Mi*XCRS1yO-?DW&Jcc>yjpf;UNcJ)IveOCydF@&HI&7 zh8O8m?+0WQJ}dpD<@=(gOG5Te=T5UlTc);Cdk^j3Puq|?bwQS|N1pONrW-Yo(3<2e zHu(F=3AyK%VfJDFf!8PFsRhG+Y;>PDZI0@7K4{59S?AKqk<-!oy@B+1ItqIT>Sn6+ zF(C#_XWR(L_wS#wHP~X6ysmdj2y{I#+o0C*D189{iX3@17Zkq)44Uiva%6}&bkpX( z?jL$X{~$m@TS5quz|swe6raY{CLzdBVp4y=zyi7e`qTdot zvAfvgWUP3s!NP~zOs(c}DW73=!51D4oSOd5Y>5*_>o(v`lk2#7#y2HKKEQ?1W0ohp z33gej&~uFiY}ZXzp7k_i8|TP_Xn1gK(XPTLdVMh)ePO*-oVN+1LcnRZ?-6?>R6MDNrEG+%B z-~M&qoT|m=6yB`l`}33kYCk}iwf4TuSj*3Ci`5Lmu}S0WUwr2sX>;HKs()opC}((Q zKeH`I05|H&uv$SqyiS%J4z=19TV2q96oU!Y`+Y-2*OiCtHQfsaQ5L30FXi50^;F2Fsj^h!BoNPYR#foGT+U- zz%n|HGBUas)E}l0>1;Ru%*9DZLFLfno=7I1>Y1-{EMMr=#yDB)rQIig%flC`Aks*V z%|Ar9Sad6_2Yl)el2?X*)WCoHhc~wPaA)78$=AD3YPKuclA>?)$6L!-E&0YW752YG zigig~+sCqfzF=MXXPF2xs9AS&8*jmmzgS6I@o``~EFnzH{ujv!bP`eimVume1gCbE zKx~lk1Fxly9{l)R-pKmPyAm0`@P=f=itCkD7LQ$M58l8l6u+!&5YV$6)E-y;brY>h z*{*Qs&SoZXqztIB4j2yRxPi1kXa^nv=q*lZFOF|3;_%N$Ll@hVM3*zN&YaH@fY$lt zr0?UPVA)hWKG6>a(r&@(!cwq7ei#^xWTHF zjEGLyPENHeks0%!bAtdl52_pDnuY;2PyGJ^GMDlTpc?=6w+G{<)k!W>pwT)syr^? zP#r|-j9$Y2f4&_hU_HV2S$g0!b5^%DV%h?c@0&o6t9+~4g&BaUZWJ9kzz8+R0jc-q z?b{yE5Z}gs`d_ldQ1)6vW<*awkaZOCEIWy@CGBnUTKxu^n*jahTB0rk==y(|kIniP z)Al0Z;*8t3h!625SMq6qv`%l>4N{uG&wfQe3}P`J#h+^?>mM`c9WhurN*I)vNTerletM$dDxDxwDUh9#6i8rgJ-0g) zj8RQCx^CFxHA(%X%YeC+_v^IIUp?&2lS(g+KDR?;@+VWEd(()~8?g63uB2Y=R~Eh` zWR!F)op_~eqgnTxA9Kys%=O6!81QYu96Bv-_)R)OU5*2h_ErHX<`tJz;&I%SNy%cF6l zx9Y|qWDS&EjQ6-mvR7+(NP6S|l?$TuK)=;uaoLMeiw`676kOx7bpMS+C@Fu)$v8Mp-zc6TU;TVO zgvlAW&wQzteI>uKt%oF=wPY7>l)ADB>HY%vmJ)p<+l~-}rli}s^U-OA+PTvE`yWE9 z&GF42zEJ_jwlx{!D;Ze?(@+xgE#c085x$nYcbrcKpHr%-7QdGq%rK*q8a*tU@VJAR zUf0MJkHve3iyz+Fg*O{skGXj5lR#(=H54eq1^u?M{cwl=fB zEKL)$A&EyU^DuLvDOv5athT5yi~#g=Yw?wPTLzzcmxs6CZ&P@HnZb(VqTM_|*f>+% zN%l=(puh&KOB&1GUb4wc9E1A; zZGgM5F|<7!=v+fsFYfscAU3jF`DLU$^iJn21(Ld+DchcXhr>lc6LX8xE)LM$04*Kifj@*IB*QNuJ z&hf#Ibf8kb@@K4)Za1D*mmg{HvqGfLzgs<)1Vz7u$qQAr$*Ibr+nZLCbw`=&c>QjU z0&C${2Pa+g3fJo?aK>!kNB@LSnRe&3xd-!W^T}ib!272hFXa^O@n4UM7S@WwM=zD< zMr#Lib>woddXN}5Ii781mvJ6l0y|sK?IS?IuO`^_#r!i!HCuV+##iPSI@t*SB41X$ z%%zpMk{cU(+Hb+_6VFuPy?S9z}QUc+1~eYlQ> z@WuOU6-<-!{3uf%gcv-^%1&!}-bom|cT@;DU_Yi*U?%K%;kEDhr`ellan^%83|@$U zZDgh^{TzJp`@9lClN*=NGdA?&nL-c|q|^FmTtYeb4_ZZIMW^um=*=ijBq-}EabSul zl4SW>!dpJGD*&29StXU&6G!t`Dz$I;B!*u~y% z82;kJ=YH~eO~u5}4SBL8$-8V)3%rU-++Q%kObO}@QN^HgRmL~gcBQRQHteN3iW-lO-`!-1`7K$eb$88);8b5n z9em0BH-Kl4g(Q&NmQtK-9gn!Vx`1C#w$2^A3V#tYfH?7@-8DW1JD7m)TNOhnib?a7 zGY>{5%y?#bc4%2SL&qa-5mM}5W^rC~$KmGJja-M=nk|7W-S{LmWC1K4L~-gm=jpWh z)T$XT)bU<6@;K;d^xxfa%b3NR{NCQOmG-N_&9Ne*2D#y$$#6gvj&9ZN)%oj<73A0} zcYHTVg(y4s52hS8u5{#>(GyMXz{*Q_Z9UOad^UI2<7=)jZ-)+VJC|zv?zL#o-3U*@JExMur$c(dWJra z(&jpN_=^Ocmc|#1*rz>@-Bl{wwPNB%$H;b|qF*WvIqyfVA9p1xb;8)8Iu<9LwaC8vr%dh1)%56~qyfwM`rzb2c z%u)k|!Mlk-*m1BkekCb~Y75%&8RQh9lfPl+6e@A3G1Wmy0GG~U|480t zeHkD?$D3hX_v-E@ZD22h2~EY2dOzt{nbIabu(k)nzbr2c0c<~cOJQK#yxZg zvEN&fkDR^{mU+G0+A^cM_b#)#=LDUYUgt>g%S~{^O)r?dFsc)}WHQqIefmL%<}Cu?)T zLOnL!zb;;U_+EBS%@v;1f1p9{zxY05%GyFB(U8EInJkhX;gWO7D!S-$&VgEEl|K~M zUi)C;BC3nZ7~nvg_*%AM_+?(CE?8nu8CXm2wMHEbdSG-g7053~&Xwi{MK+vn>U#zf z5i;6?@jCHZ9#erMvnt`D+@SWh*F3w79hZgZHZQ|fze=QWb8vY5ekpOdGf7ZSq%r?R zdBR0Mk#3vMC#n_xt{*~wv^>L+>|_Ochkn+ia$m{&ZwHIbN^&(G*Yi2x`3Kz|r_LLV zn$tJ-y^-SCalH>|(9t`&__`;Na%7_B#s_{N`^duXU8`?!~0x@O-|G2wYXBt}SS;>gP^dP(@v}>c-kh zA;SA!*=7Zz+|E(L0lzV$jFWDmFW=d$gOsZeG-(k#SeX?>gQX#-9(lw)1g4Rx zX{0pgVG6+#mLcK!H)%wQGB@G@&ujWRHoLmg>>LuQkuoC(_j?k>cJ)sc+25%?f|z#R zO>P!wu@T`pxIcFv?%>iF)0=v1#c|7@@uNKON&fzzpZt6uu((g4AJ!j|7t~&Spdffe z9#6XFP_If58hF0z&(E+rT7)Lvy&C*dSL<2;W(~oBl@Ki% zKQ|unV)aEk?(j`kM9s;()9NX?sKjM@0M-8;JbIZZ9{^>Yy%9Z=F+ND@tLOjsYNt7m zXmDHA;8Li0j_Hpdr9f$$06>O%&Tlr2!$Ja}C_}rvxN}^zemaNHWCfgMmY|=ktL30$ zPy+O{f8cmpWF)|fBM02yKnc;gy~(rxfCx!*h9ke49H-c<9X)1+=I!!T&{EdOm)QjL zVL?>aT{sW@74jJ04c@&jzZXX^kf9hR$nONA4%G(f_+_v`h-64G-2568#X;L)im0p~ zhLK5up8EUzCtlBFEb>B>l8#m{4sQ~Mtkqj+q(2`Y(l9g*3YzVU+UXQ%_uNU0UCp_b zFmSIl<^0zy5njhJ&a+bI1X$kwwF(}Kd57nGcznR&>#W3C z0-$HX=AwY04NyVQ={+!P2RyXS9s#X?o;V8$$kXS7KHUs?lnu4+ivcNrxp27kZB~tg=J5U#ALvG9$CZDg z4)3Ey4V~zmVZ=+5a(lD2NCl0m5|ex2%ApDSyRCz7b}74`F@d|ghe;R~BvUK9H+a_Q zG}A%&T2@*MSP`^84hTUs_?mn7^4?drTA+RYkQ1_X$!Bx+%07*|;SR2xzF~iJV9q^r zia5@VTfXSZxt}n9bdc!j4JyN#R;vX1>$(7cQ(`UwV2gy3cjxeDh?M+O8}IEdxelp& zoZkWco_8AmB_P;1j<7bu(7v>Me=khd0z-`rgE6WrjlP7+ExGQjsRE1bB?uCi;ymKe zt10PUU4po*$r#fne12Y&Y5@89dWu8Heq7^8&&ZwXgN(OY)t#T216G>!XCz=Ql`)Oq z@0;{@4o)2R-r$KXMKvx>a&1@X31c4;7H-+luJNR&5KebYwERnDHc@ia^EccZGTbFhg3dd4#Wstu~yHoxQSd zM}F=~`X~*fyoQ?ILzwT5m|cI-?Bh3;omdBl+TiSaaXJXRHbftC82-n4y@+r<&AEiq zORnAP#b36`yQ^k6BMgTSlT0jr6{)^CZCMT?HyxFOj?K5^vJ`o%H<0CF(d^F_9vmFe z4yMPdaET`_150-XAJoZ_t;Ub~Wou1g#j14h&zOF2oHAwbame(H_!Bl$Apa=B)RmVyXE(Sd5 z+>b+?SPm-^Rf_jt%%8ebdkrlPr^YBBRw-zz?&L>#-icQP*vQX4Hi+Fg=2-P@{tC0{8B z$$eHU)p?^)i3^S|A7uS&{xg8)@apQlY_QJDOlu5|*7R06+lfVfD zY8sJNWrx7PyL&gYh{A~5?(FivPobAOX9=owt~ob+cEun4XY=0s=DO|;P{<^NfzBz40}MX4L)&LHwEG>wrXPW}+>kN?E4q{T1Yh84&C)tXI_YAT$G-X=CW z-}RS+=e{Z=SBJzE<|naXF4>Q(e|jN zX=MmwZ_j8ur+zMKV0@<`=i^+c+A$YRvV&bxv77MC;dJ^#rxe(okRJwC7vy@W|8aS| z_mw7T-PYD13z@Sb+!>ZpApiaS<0}@+T3$9@gey%anf!H5sIs3TKfVVyJ_JLNjW4Nw z!L^55dy0UlQ!wbF)}pXHKyByjVN%3mFW1>H$n@iQy{Ey=0%9JwyHEd8P06}L^4Z83 z@u&Pw^(uXvoS$A>D}UyT^pr^VXkZR!8L~LkqHaYov(O?-kDF`cj_>o{XCq@#u#Ho` zsieC%7Ji1lc+Wd$B4Qe{zmrRzv^h~kJI=zOHuq0u?{)?>PY=$9YDK#)?Cz*m=2c$b@_nvD*Rul_ZH22mF`sKfO^D~ggJt)<(7xP;%7E`l7CUIglA`FL|?k}z|Y54 zaQ--fD%NVAw~#Sb{hDJ!wm!FK$sLs;0+8HkdW_&y-=)1TwT1W+6N2 zDPO^WJDhJ~>_QPH{!w*t%r5)nQ`hg}Pc5FX1dEr*`5yr9a(FL+DS_YA=0@`}zXZ?YFI{-S@VY-A_lDZp@!=YPo{Mp_ z6gN6~|6=tUC0xPcT83pPVOd-%8&J&8CU9<#Wzhq$Q3n`_I|ZREC7!+#dS_ib?ensb z(a8rVHIc_Z%z0meRACR7Z+xdwFw5--$9?=1_l)#e^FUDRwEhPTr!Z zbAAabv=<1u%zKyr{4n?OeX$bw{$MHTNURfsyd~YB_OesgE^!|W>)JiT;~Iei;VDjM|-hJQg`PX0UM0-KXq7UuP4gxm#A+%F}bMKGm z-kKimeET-=k0vuoJp5i`Q7emT{pl{Zu|xjQT;5-og*q+QGbPk2;>UWy&wjhJj92Ke z04}@|S=>8Xk0-ISfAz*KpTSRJUITjYTxj1LS*!RZ{tVkapDiXeoKucxM11z|-EWF8 z-3FLuVcD`Zih0&WpbDs5DX0w7wq&Xgx3VrJPj-mr@w0pa_B`D5QcH@lb-`ESQk}C2PeQ!usrOQT7*3R5Mt{Etuz}$akSx^jBitp{f^%^8!oVl$yE9_#W@M3~IVzjL+ zR~++1aXBsIrG>r?v`eJefO7S6{)Xv0IQCw9d*k%Nl$`)eXT!AN^gDL}sW(ZWASZ2H z$=X!ZQG$ls(GMg(ig*-%2^l_~$!%w%g%J#H} zcnJox{o=AYE^=&5@QAE2o312{W_0jR6ojOgT{%@Yi%Hrnlmt*}^PZ zs!OwiOU1zZrsh@V(w1gj3{M8iN8FmWt6blM*JvY_4nO(0i(KV|v9Yc-l$Y|yS_Us` z2vPTL*v*rOp+iAVPtv0rY07sE`F%gDX78brppxbZ7C}aXg@Hyg8M=-xZSCIQI)Oc( z)PCK4rD?gBG4e8DC%W9ua^1(niF~ zS{L~PS{bl0?fGh9;Z1GL;03^-Z0?N%-CT#mjGwK!e@y zDf^kO{hMGASK7*|@q5eUcQe83@cVo(=RSRD*WQkI|cn^ko^(Yp7Q zO?&?h?I?-NOA~xx(TvkdAhatEFnJ(}h{y4u4oj%0rR3_`l{whq9dEyX^TDDpC&e0LJKr5_xAc^ob#rMwj}jDCE?bu|5bvwC^3y&rXHhG2z_Yr%E75ufZAtd4(2 zxKAl|7aou7m}*!c)63~^&g_XcGO9i>qvNw;qh5cznsPEc&w1~`sA5y4#KCLy;7#|9 zuobcnX6t{-sxsW#YW9Mel8A^6MJ_&SO?F(GlIHWD8H<<(H8aa!D0vG_omPD4My|>p zoVx73)n1_48}wT9($jynlq3l0Gn%>`7yb7YWKviWyRwv44HD=FKn!E z)~1{Ab`JGAfc^q<_;WT4S#$DNdl<%;%jAw8h|w=PMUoY_f_?J`UM#IF7?|S;SS~zH z+)Mbx@nO(*=WC>GC{}0Jf{}YQ(`DWL>D2Mh#4G&_3!3VX`F94#r(Z8<8jaPM{Dp@T z0W%kMxr@!xgq=TQ?Jqw89L}zFMW{S{I^(o zm9Fjfp2qgG4Kyo5{m37VTj8o)(tiZxJ^eSwiQs!>(N3YRZ$;B=8|20a5#n)-0YYV8 zpS@$*`F<+x)Q0>ltZen4_u9+A(aET`f(l7HLF=XxbDrbLjt}p)B4nFOhEsvu#eq+2 zOke5jx)Kq?BQaXU&vV!0Np*dOBCRNDwA|3WW9weyePoCfr+!2+5W)jV() z#KDsUcPUa0p9FO64o11i8^S-MZYbw8g!+O2NckJqJG19Q{lX5l*(zNXUTRJr{!A#o zwae0S?viC<{%&&OPs2||!KYr51qBdrRiU_`gB?X7ua@D}1VtEgCif<Dy8aR zAlF3jMkZyMIaFybU*+Vb~g+GMu!)h60~>&7caA^@8BLU-dmc ztd6jwEw9~9ci!?S3?B42 zmddQo5FH7s%0K|Ok)K5ujPY@+u;7^fHP1(XNuT)!BOxDLc^<#KAWFzC{mPcoiOc5K zSb(p$2>obo&F~IsYmbs;=%PgKY8%ngkxIgC4>3kLPkaIb7B!NL>7O=1Ah2qH?M35w z3^Z2YTe10i=d=6EDm>rjF%Nz({sM(1@9b-wqi(L~F;5dXFMMOYnhpM>P8WgF*-i}D zh@<34K#_bXDeIw(Ba%HQN?tiLk6Bfm+5gGY4w(Q7CyP9Q04###4EtIqNwkJt#T6`R)nr8RnYGk(YhiQm) z8Ii({P;NWLC4!r4!-O1<QdZl;#)R9}2?DnR_+%nFsNI=K#AfK1*ME}bb{VWk= zQLe8eb>xFBCEI&&CcO#@b;aMnJZ7f)RA8B&@0N}|;_AO4R+PCEUfs&Fdw^Qy;pp-x{SaNYvX?{$WurS!ZF*Rt&I75*St*wGr=XXZIR|txChjD8wz?i%$6v$vOPGV3%5-3`6)~(^i;W5mM zekq4~I;5DiJcl4XuO**~XX*j&#^|M`&6d*FKniVf7{-y7k=X1Wf5lwBa~5?wnu)wv z|D;C+Q~Hl>cxkYq4Ay~&J_s4b_aBD{&WDuaLFL1-0kFR+E`+a*ULE{P=AaL@i?o;F z*5>V}R$I2G)1sh9m!*miMt`+$yH^?fnxxYfXxi3-k*+0vI$wDi{aI4-_mtZxL%vtT z(v-U4{p>tm4sAueC%_?~vMPjs;B> z?pf`Ozf37-*l-6X(lm{^)NiV5Vl+VIN*~TdNqZCn4;z@`bw|!2odf_3gq75B## zEDDtWH!5Ll9{X2Up0%KO8lsjVPRHDm1nCf~{^(i|Ub+cew^^8>oZoCvdUA~QwVd8e zavOPPX7I4j?72eO0%M(|R1mDv9^jdT|Arh6%Q0mNB-}wY?(iI^@zNyyS6at?@NLc^ zWBY@u{X35nR`PX@jbIWYR81i=JWOzU0BB;Pb-?d5;VJi{hVr^r0*}Uu!6Nux%WE&R ziEN;>a4T;ugQ}V(aweM?sTHX{mZzNSvdfV?3rFN0Ty_80{zQe6S6C`yT^vJAVNb6^Es3>~nA)0`1bUn5nUJXSa8`QKtUn z$I1=!)@>EJ1!blK?ed&JSF_0Aaul>9GQPkyJqJwT$h#bSWw9Bc%H(yl{pq0Y@ia=y z-}MB$#zGwca4tw}??km)XIACOZ%x#|M&b zfU^Ex;%GrYj5R{(|0)s@L1xNK9LR`5qgA2lYqBjZt%f7v)lwcZZS#;z?tos+egC{} z_(clCF`b1&1LjGCrv<-RF~C5vd-DzJnN5yDjW}G;pwv)e`+12kjf?(Yew+fKR^|kO zZnN_b{Brd0uTM2*UARnR&Grx7QgL%1WEegMr4D67!R{N5-fXYcnE6o1TR$F_KNOy( zo&f~ma#B^8cVH{RKl}-wF7&&M%;Ll=Dd1oZtKNtoNG^t4=IjLd>lDuFlz(4p2?i#pRnWcv)Wt$dhc&EiRcYLtlu`8_cUK%Zg>z1 zX8Sk+HRT6qdI*RO!j&A{UYls|j|tAa+>Uuby%nD0XKSDphG5^XM&%8V+yoK^?^i@d zxvzEj!=sLF7EeUD+)}?y782?&tvZe=c2L4%S$gJ&O4kI=_AXaoR^1 zOP&>>{K*FTC*TVySy$BLY8ov-(l^1hbXuVIRM7Fz7mBUWNOc(-sAqNBlrY}eT7K9V zsekrW{xa?~wlDl{omf%A4Sk`00PE-^$h}?(1f~JD<>_z0=T$ZBmgK zvt)QoU^Bl$hvs_Z;(y~uWo^e?!-%!yrzKP)X{kCJ>&%Gle4;eC^S8)U$6M4PI?&;& z{WkgCQgfxui2!*%(K0)=yxGFh?6-TZvKrRJOcO1FLRr_9Gof(z)v~+?mX`l2`yZ6+ zQD_FiWo|f8`o3nr1#xK@dm=Er@b%=mNs#@x6gAtVY-@MDX5j7P0#2URaslAJ+F3dd)YgQk!Z{eL@AboYI+35|e zji>kC_9uIgeaX-4wLu8ZyT(TL$;ekM6Y0=TT@^{_Gc;Xt`P{a530zr%zc9eEL2xzb zRDxyMK#g6A%ez8q?-kY0^1yPkh2k?#`nIRvqzFmYQUX_0DIICyaN<(zlVj|Y7zy?P z&4--TfyZ_#V7+CiCi1Dtl}3>7(}lsbiNW=&TI3O4nq6>-+d12YDhH$2;uYhLV>c@$ z`5Ig#5tB-9Dr&cCFB30N=g}IZEeo_c=dE|>rC*EG^Eo@CyC+_5e6ML|jCRe#h*&ns zXkjB>Psvl{rFr_Qlcnm0dG=FPv*uL8CbcN7CPt-+TV45kOe;@-VaH9cqdyE>1NZxt zPcZGAv|yi?51!y^@+ggWz8c5n!J0Dy%IG7-M{P4QCej90Ktzh?9E?&(H@xP8DYPa@*Meot*)XXt%4?5VbFUStx zT7L)U_D8#v9gg4}>Cts>w250=QgL-74!k}RIBCq31qz~^=M+0{stWac*3#F7?MS)r zT4n2}CEvqXwfHkuEhm8gXgiuMjK#%3q@cRS8tfc&WmF_&$#XaDUpE?M=I^q=k^+Mr z&@X&p_^*~$D*ph)o+-eL_ZSIQ+6}9M^JpF`M{5u4pBh;-zoVmn=$w0lS}!OjyQ(m7 ztAAiSc=$MIJIad(4ZeCghoB<+Dm#1L6O|eiL8aK(Qb%k_OIy+ev7SQOl94;pArYMB z00fgDd)Hz&_yMmrR(%(anK5K?+c{%Z@$(156i5iBE&bh*h3b``bBrO!42w$NW1DNU z#Ot9@4aC~Ju2EW$Q|9IWq|Hbm-@3OC@B(h-Z_M!*f2ZuIS_0g9o_eUy!0ap-n&VYV zRq$%x|6;mfK(0E)qu@+f?7X)h_EB*D|H15J{U4#zwc!HBaxbnY=Zw|fBl@pVcWwBuu&Bcw;(m3@>mQ68IUy4gU>U(oHli?Sjc zyPx(Ec3gePfa_%b2iH;LJ7_9=aBAlq`BO#!{eX;;qQOyg``z@6K*41*5JO$Pq=lht ztO`wvhY^{T#-?5*z@jPv7do)DCU25P0TY8gzpCQM5-Ok71YE_xtk=A~c&szt>G@(? z<`s}KkuI-46RC|ZKbkb)?^N!a2@yb4c86$!yWT&?b&WgN|K+hm#Ref zt&961oqx()Ltg{T*k&a2MdwHa|LB~mQ}bs$V1N%H29H<0LzkKD2~7Vu%wQ|^fB@R= zp?ND|V9_AhF3bC6s>*zLp`?ckk=%9pCC?YWAxfO_VuK>cNIxq!WN>Ti9YGd*&3MT$ zaZdHKL*;6@N^2{CEI6bW68?J=bXcd}oI?k0H0yI6o05zPQs)AfmNZ_(A)2zOoS+%)it#<7aTP*^QJ$d zlJwFO|HV~r-~7gi>TTpvaC;p9K0nOnap>`}f_W!6So1|-yakge)Jtnlu`*f?mK?FJAE0us$NJMyBz)G3{2S!`n)4{DPi7 zTn@Vt^k-};Tklk7V7F>nhTqG_Hg%M6SzZWm+m)MAI?>b&Pp8)?GcVIW$yY>kRvk94{Wag>iSM{Zh)4eN=cq!Yl0Fp+&5%p*_!|u+_!7f9D5cmx z>3#opm`yk=v83NC_fdL$qE}(}t%Qo|dkfCTE2Ti-$Zh)oC(CXDB1X=ceCnvPJ3|FF1gN9iQq+Vl>h4q!S+WyJ`f)8NQMe%B$6o%K{DZBN zs&W;l6;-UP{@x@bC(L{RzMi?!u!1OLKZQ**{<56wzn@Wj^vI<^f7W3FQZO(se_sN3 znEK-6Fq+CZDeZ%MT|gFUQouU0m8#%Iv1CS)>mf?_D9-A=9;~+{Ga=|YKK~wVW1<;u60jd4k@%=aeEbQL2RJ3Ma#rDvE1$EFl> zVPI-Q)zgKfj;*hW6@ExV`@Y>8dWjY2=tfsu& z}lU+G+*I0(Jh4E1aVOMS{ z(7rw0(YEr=mJW;WhC`P)zGBwI(NOS*(G2Qak}<(Jr|2*Y8mFrK`MDG;{LFI*&f~c6 z*wSl*pfXs64#-Y1S+7?n9TelA<0Y>@d=XT+ge_GQiv+z6m+$T~u4Uk9P2$rgRXRm=X5;H+3{~~lwLN$D zgCR@W;Fkk8FzeX?;&B`4>#`^EyM%a`zCg(DW{wikhbgMvC+7GACDBwRW-Q$Jv_84+Is2<`BuLN>I>k_nke=WTl$Rk5Q4=vX4p67~7t;BM zlorXxk0C5M0rb68z-@p3*#s5<;lxR*`U;TU)(i3nGmFELA=uA#LgVaE)VqO*$yjnhr~ASig9A&$WwD-eqO#S})I?6UomIX`3LxTRY0k(dI0 zV8c*){-nvf9QFT%Q3ik2OdQkD`X}h#MNDE)$x6^3%Z#Ge8pX>A;w?w0+8jFA(w;v$ zgC=^N9A~a_)BsuEk4RAEhhv`~-bOh-JYQ!;kCt>T9`rN*{_`Y$?YYfL?ArDLzl4~^ zOQS#$I!7Gyl;J`O!LyVAK2p1=Rx~W>ciiCo(ocMSaB1SeUSJgwKj5gcom5^9Z}UAO z_qmkkd%VJHN}uU25ZEm2(2=MG}N735tphRIezDl$%!bx z`g5k2=B_2d^5XC-H{u>J!T!ODSj?tv@3&?!_w!G`&3B3A|08{&dbKf{OIy{WGpP1* zGg=)YRL|)o+2!`NjvY8K^ZcA8LYQ<##_g}UZmFSmnA?rJ@KDHLv<#goqv0Oc%2ul}3^eEl@-2ImZb13Kh&eeih(TncFI z=^ut{Tj%M>jz^BwP~Sj6EA2FhefHdCI!mLC)0vZarr%)io#YC@nA&ygTPUG@j?}%6 z%&wl?YvN4Q=gU#NhC+1bUNPH$4*>o0Ye8&A^Y`;s*r%(lEZw4?(TzgZJzGAYuigKe zrxs^K@bvU~uv4$f~<0a5wqZN2=R|@dW6)^Tl7im^~VA4utu40Q7H~cbk&(>e4 zS;@>l6crbURJhY~lSgM@;M3Ybq%b?}sDq)|?7?aD?iSyGtPC5fqk_*zg!I`nQrX|h zTO9S{s{To;0ig#=Zk{3QoE)M9$TiK(rkU(C22yepe-Ri7MKb#s_z2~79ou%YlX^l{ za^uf$3=Xf)Mya%S3eoFPf9{rbFouY*h zd5apxBHY-*kK34)Mg22bb*>lzU(0JvqOkT%w?>0f_(J^z&v~`yC`5q*GIBevsD{e| zS^r^f;4}v%ZJ2lUnaA@9*Y5ZD|KqZ`>T?YE78!`MX2L==T21{hnK|>kGOVS&%%dB; z=eM(?`Tp5>4a|ZlvOu<;nKqTSmJZpKY5ob&*@1a@<+fqsHXng~-=Eaf6RXJ-P?MA< z|80gD%k~dGN;~_C`$OsIeVB@75Z}vZY4(+mzci@Zk{@7|2%Huc_%Yc{#N)%|&q3WB zGVg;9m?v7g8#iN!BOxXS?{Srwk~n)2NxoJirJKGJZU)4&V9NuLCx9x+ABZqBc&n?A zQC+&1x+?l!cb!n5kPL~*-sS5VaT|G3TG}({Y<=`}+`8pWd%fFS1NBYs%fh68Q9j?T z7HY>+A1VW7D+k(js&z<41p%wJhX_H4|G7 ze_2XK=qFYb!bJ`+NDC zhP%HwlXK@pE%leHs)3`i4Z&@W(+dX-Lj*1#+>?vQU+(U#1f6|urY!zo@Za4|kpA*T z%fk0aM|5Y%2`&+0DOYsbeo07xarQSs84Og;QU+?uLH&Ue=I&u18z%0&ISA*CL0-67 z+1jo(RQ`0viuY-mKXcKTyb(GmG^U)nWrE^#71^yR8}NRSp@cze!b=>+GDd>eDzloM zM)(xi;#qqzFA)1wv-2|UFCbw=M(AUS3LhZ2rK|hol4D~r(Z-}rd)o$##ASXmp-6eZ zSD6+`9ly7-C1+4vCE@CwO{m_{g*a^$QMV#wVh&e;drBbR6!={}W$z3x`oJT~eAQjT z>=lVY5OUY+>4+aqA5SQZN+qB0q2k*ACl{@Q2$f}3z5AX*#aAB~t{z?AGOZq9N&I@W zB0pN4otF_ryI$k%XMd@-&URXep~i5VCAQQJA{BRnB2&4M# zb%LLK81x^}C*BfC)9EI}c8H{#HT6Udo}F7MPhVZIt_DKz*Hej*jg}tqko>)k9@|T4 zvyR8DDn&>e7>o$<^f@|Bwq=Uld!Rax`c-Z3czz@DdS%4&&{f>O)bE?I zSRhOjIjc^uOs3h@eVFTcE%r)88jD}AgH=5ClX=F#?hU)eZ)=V!Dl&*RD+1qfaQlTp zVMdGbpQ7Y+e_u2%31+}p{lM#H_1z52mOKalFAKon*FxL}O^@_D8JIHVih*Q_4cr)DbTvS zJfn>fWZvT#nzSIvMOJLI)ER8(?~Wm7*Uf6X-4&zEjgFH%9AfG|XQ}DzJ|-?`x4XuN z0CBP{LZajUJ)93n=M#dh0{Jcj6p+2rYef|HPcqztryE4>#laFfjAus2k9r#|hktby z?7ow+Vg!#e99RsEcT}Xe*L^-bR^ReJmSB_&r$W!aP;;Vl>NbWdML7KtcI6Rqq-&}( zZnh$GhbL~fevPDzku?jLdcCJ`m$15e=^S=_84N>NQ9G^Vh3o7PnJ+&0C+=U^Pqbh>?|xd%9l;TyuZ;?sITQ_fcrKiR$VDSGZiR za1;;eez8l#+3$^Fs9C_*I(facV6oq@=dBOJ9mhQTf($^|0+e!%q!{x0<(8c%)4Etf zI}~CDRQ)Vs-xJN1>DMB1`}h^FN}otKj_C^{g+Zf?$>J5E#zfD<(a^n@?F&bbk1Bh; z>rQ5{E|1~eGgiW%eVFuGy3a2D&FIZf{LZP#_RLbGXIVjo5ZFQsT0r^ zmjfkZdG_TuvTRjsXfHF{2c5>bU@=;3^SQqutX5YuJ}l&l-0=J39Uc(IX>#XAgGM;B zF-TNR(_F)!=!$YED6;#SQ{uVFc3#cr!*)Jw{-QIj?jOMr#nhoDJOX9GVtu0$%HidU zyC1!NG<#=WlKv*jh_STEsIF4qXI@)^SuTd;Z8D$Z6^#P34$SS`SEt&9ZZKa23SpQ$ zS{m;~hUS3)xv(AQQze|x7a{6o-WvmKw!HPoMdA?`pw{+XJU*)F;oqdg5$3RepQHw! zU7NiNI4-}{%6~cg@L$&j_S>S=I>SR|ZxEmwyraH!Rr&%`FH=0rh12h8+&4ORyH!qO ziyRw8J~y3TONdtWdCW?VVeVlWL2XCxiU4*EDU6WJ-aVuCwQSl&D;oQnm5?D*Jf24b zpOAxbi}heFqAn+i60UJlB$QU?CvxuJ?-%cU46w5$efrhxN|cnD6faJoVYY_Z+PC?WFq*FL!Mv|dn1`aNj6T~c0Ub& zL%+5)INWlp=i)sY)4~P_Y;o@Ic4pDq-y>=^@6Bz_k?xT?~)6N zh?bgkpS(GLami*uL7wB6h0DA#3C;Rppy$jr)4|R!9cwNDl}fFN%{{JsVDO-UbU?YRgJ zJT}wx+~vD@Bn6Qm0fssKQLefBrI1s~|!5In9ypVSOMEda|N z9JF<+*xQpFLM9ry=Xf_Uz3<9{DaQhD8!pU^N{|El2wW)B8g$JJXnV@e`W=GgShqet ziQ7s@Dg8*>l}=yi_--*({ngt#{j1^1x&F3%l}YT8irso%K;_q!WlD+RV8*h13S!z1 zs76WvDNV>4vYKoc?`d0vEat6>Q!2lF?(;?TWCCjzxa?k|)-aU1pTY@eBHnglgyeR(y=Bat|UCQs(Xz`H<5U(`D(F@m(?1a|iYO zkb6oh&*=DmWID@p6KGl7Xv*&AY&kLTGrpd?a)--5s_q|6*{II^EIJod;?5y2E!wh^ zJf;Yz`K`Oxld|mSK4f6h2inx5x@j@@psLk*AqTp z0=lqXOm2KH{3Lzjfwp;BNOhId^_C=kZs9=<$IYtKVL$!oA*cp-iKMJXd^6i<{nz5GC?_ORx0}&h9>ErD>Rcj zq8)K!*>cvuaPKzBJ7q)HnXH^Pa!=qPb?oi?!7=e;>CGYH!Rz)r*)x;8YVON>6OFDb zZvP&{jxg*=l{p&>i2~xp(SPhj0`#T<9XsW2HD7^=^Xa3TLUyOR1WflWR8Mj;#`tAt z_M9)xtB`_9P_Qa~1kv?{@^Ai&j3T(L)dugiA1IHVR+V8`XL#ivhrNIr3Tp4Rr*ejj zrQpvJ60iNuBgF9;pTtJYLq|%zZ$0uSlfE}yLdSq%ON90RiBrJZH{HQv7zJ%~Z>;vnEsFKXPQ1ha9a=aB z{d~BqM$Oz*&GIC1wR88l!~LC3wISudTuV(M*LbbA9)2-O$U_l#pcfK6 zO2BwHDe*`Wj+^%m=3T)Pn4Oa@dpOKv%TGlPrFO!jI99~DT7TCe#9bB2{S1ddUqv-= zX1-@1MP04!=h^$={&R(AXFTq!-_qD0&&@#%d9DRj35EYTn79Ttr>-dui%}H6%QfYA zQ`366m?jX<-#x$I!<)B~`)YA20VN9$(fhoa`0Y0=PO2#n=QDG7CB!``s>d@Su=$HT zX5jAUEc}KE@&R8MVsxCm)Rv ziU>t(<|t2&e)jprJ&#Cf6pXQu%hU^&P_8Wyls0kT$g#6pkhSg%?pSsQ&b(+c#@xl& zy-3*xIUPtsv-T=8d}jru|259P)v)l3i#7v>YzCqccIA?*V1-fyF>^c-rKMfBC{#q+Y6 zNg}kxoQE=Qgde00cLAB+9*=H6Vrzzvdbj%uw_4ib6rVE%uzW}^40YEaxK4S~p=^&u z*vF>GqB{rp%P(@20WU*+MF>(HqSMA6pPq7mGc~eaXmiWAkXLnSO}S-jst#j0Z7|f? zHNiX#|H6R4-Z-Hg_kNZ`z^Zdymsb_NT!CMHQb~oiSFtsDSfMCYcyurIUc6?ylot9c?rDhT z3z4c#{|NpnY5h5Z^LB z69XrodYl-?6csUC3c8)aN@X8}_Da(M=gNRWX&i_J#gqamTlhXEw#Joeo=-ODBlHgg zRz>1K>DwQ{bk+Rti;CKrQW)}KLo$HgPNb@G$;MO|IK!3qT6uPmh)RHkT5H>~00Xsw z5nbi=SrIjkSLfaOsJL;rO#e=QkxIbA^HrMZ*C79a$dh=#uj;`f`{yYha`e|B&(629 z61$oN>9nNB$c%16&A#C2l-+}2ez)5SxWCU$hgHU>vR20pm)&r3mrir7)gmOY?f zWTt^-gd~4EQ7*6A8CsD8WBhgP#NhfXBm70QU+otc4&V6#vaJ5_mzBrA#ckU(rj7VK zv^M0Z`X-9q{n*0ilf}V8fsdW7E6Nv3>)?|?UntG`gfN=pgZ(;c*LaI>HweP7eS6LSxj~+^HHM+nQ8-(z7gZdEGjRtYCv2@|$caG5ff~ zi1iA!enfzaG3f93ihpizc=8HS8hJcs-@x?p5u{h7pKUdnI{~Ex3-3!$OSukj-gD z+0ndk-Qrt26T=~z7PK{72@Nk7brs=h*0V}GB0plh%k^Uo1vnAa<9n3wxS~;`y9e=- zNvoB$EO8Wbl)_qW;Ky>!9kG|Mr4^ke{QJgj=S&c((fW%ZM4e@gHw-l<$1H!3pbKS#Ys{4=}h5Q=u{KrR*aq2u*LwX_x^saik*XY z56dE2n1-haEpwS-0B#dM6HYgI*O6Ofy1B>T!1qg@6r+SM#(0oqQG;&|?beIE4QgBc z*wH7h?~K9OJ%*%yhI$B?@bLM&Xl3xPVNlW;ue7ML@!Ow%)kY#7F2+^luJAEf-{9h{)lU3dxVT7w4Cksw(Pmuwos6ri4Q zcF>pI7;s}MhPr+6lx~rgO+<1rhKQyAPhRC@w;kGntoH7^OoX-0Hr0vM#%q{JKBqcw zM`3Zh-AS^t1Pimif#%{ngr@O{Q`>pNdiB52*$2Poq7~$X9tmIgH=Lt5UflXVXAQG4 z8w<@fwYJ`}!wIAjlQbwY@O7=0fp9p+W_*9A`}2R|D{p92+7ZNG%Hf~x_|NkR^`I(` zBDixe4gkT#SRA6dXGSDGwS6L0Q!--&Sbz%rR+kUIH_>rHINc3ZbPQ|iD?YcX4+>9F zU=cVwI7=aYg~s~)rmRN~v|X|pW5Kl;J)R?xSPQp8UeBY?`n8ad5cc)K23aY)UOL>DWZ) zhLS*EWTr1D8=NDy6K&4lIve`HbtrC{TiP`d@~9rt@vA_Or5sn~g?zsiWmji0BN96O*7J6eY9%kQXi{2qZai@l#bsuH2 zr;FlSuB)M_vzXn6MAHl9p<&5IgVBBfzZHl6(c&3p>eo31kG!gA{Q4;T;v@k5-8hU* zG+*I+H1hA<-#}x46ozCWy|uxv9xhplM}Af*^x$G>qRknXBkaW zuhw{tjzxvpoW^8btNvY3+1hfqUl^Q5m8n;1{T9E0qLuU$7uqsN>Og{W*J7E!>qiyzy@*WxkMd1aY9;KYc}@0mw8jyC{ox-gPAH zqz{LB#?qVvm6*NR-s&w`o;0&@{}Y{qxG+Pi|n zKH%GJ+)3!PbRh4I5ZMkha^REtAV9BRw85PwUYe75S-A>?{$*epXesdVGSD`En?`Gi zaU>mg)0~_?M3d$Q;1B`-Bi`l2mw*mZA!i8hzqZ;7>S6~E$FqY0@r$f!l(5x{YLk5r zmA^CDlQ$VRv&tPlkKe>`2Of6hyqFlQgI;KOo<2rwdO_%@gcU%bnqGcJ z)rggu<+oGs8v3}P6k0y2-1qvmJD@Wp;4u6!_FafhN?-`%vQB=dTW@|T$XEvuPkP&> zs2jlxC{YGD<45j-pxb`)iu&oUo0U;ZBO5(e%Kf~5Ns)Dx$pf$YCqq-LAckkk)e}h@> zTe6_zA>It3L1DPBikKVcmxMqg&0#oNp^Jb-mEidG`+9j&s|K=L*8*nEze{<2+&w`m z$l00Sl%eFgn=a-T~&Gj9M9 zEOAtoDRKJd4{|nkw)yvciC>nvK?DbRgy=jwrTVJ9i)2X1gmvau!JRjRLw7g&?VaF3#Wo3$B5|0xdKbG2mT<22` z+=99kwV!r5U9_xrGLO7qb`!ChggbF~=lvYb$vpN};kY*m24wyLS^JE{TUjoROAo#ANP zaf$M@q0$Xj%RfzyVCJ_|QpV5CrgY9_LVAu5G7pEnKuDwA2XR_a{Z1IO3ZExW2N(3Y zC=$Hs4vR4X{rq#}zv*u(hsvYR3YP0cwUI07mviebh<^Us<=;c1I2Ko>+lPP*P6J)_ zc~lovzM7;t)j|KkUA;~|R;vj@KC7n#aXsc8*&n~C26-(rx{NkoTGlsym`f;YOc@@{ zTvs+9%`vAiztv9Cfm3g}gSO6i&J6m?E_;5_q#`1e7sr*ohqSSh1ILd?A9v7^r&+GGO`R+{!nqeSQb z(Yag>7TCjAEpmE!w_Gml0;v`~P)~zW(ThqFw#X;y`!U|}atyU`N#jb@NuP452mZga z3uno~Ga0({^51==^jZ6P4!8&GkV@K0;B=q24IxgEYk9oN60r?l-h#d#54!Hp2%y(y zaGFm)AgFp1jiL?n$Ep`Pa*S=k>`TW@h2Y9fg>9ph!I{S%#r5z$Bk3(CWC`rg-NBv| zWe39Q4rL|HlJyu?mk--ZoPvDyTr^ZU|CYGdV&wb+k97+FFz*gO4C88uw1a^U#~lppSWM=AGU;^JyQ$VJ@-P4TXwhKafvn;eXY3>DUKY z561wTQicDbMfK)b>f&g~m;1`7V}(9$#7t!^+&ak;b(-JV=~s?m*SD+(Z$CRPww5Vp z;@i@AI}UxGzA)~h*0iaN#+wr^56X4?o4rkU&GgV{-AkfQPGUaiH>gvGpEOSVJGJ2w zvUx(3Q8twLvNc9icM^LX&3P_T3(;+xKb0dL+44{yr`u zOB}HJtR&SKuOnCQ?B*3Mem~LO-3lBnd?VvAJuf%E#pH^Ge7Po_beI&>G`)kFZ?5`! z?rVI05N~-S1k=oa^ApSZurV0e&-x`Z8_N9Xs(bzwpK;bLadAs(6|0;1gqLdzk^XYG zgTTNefjK4_t$UphOmR0SinYt+gcr|vw-Uq&(+xDB_JQfKJAfX&1nj)~j|E*`_%U4?? zKvFrXXTb>lVO^av{;~FH`^T&J(5bx#eXXk!yskMnDTX`3NZIn$?e2w@l~qx`pmm-l zPvDj`d?F)qoBcG>4qOW8$@OFVmiuf^H?)~&l?i6jy&7i!gl2`lFC^f{U6`klV$M6i zDazrGy{Ji{ck^Z2J=0hwT3+3whqoyXKpf{|3|H;*`0TShxgNjEnlmCpBwl6vLwXkc za6o1kJ7dhg1uQiEgvnVt^~&k;`tP%iXhj+{qmV95F9=ezqww?K;{^+UE9-+$+XJRv z4VZfO6hyt(D9yUWQfy@T`X}{dWbqi`j?hFT4nt0>#p?060sEQK{2JjjDR!5Zw7yrW z{G&hBf>tduh&g_oY)$I=Qbq_LUPHs6@$Qeas=p@v($$-0P6nIjBQLxziF@2NF#sx3RwKfH+M&xE=_MN!_je8sNkQf4wN4)?wgVdeL zKZ4rh#$>Ay)?Gy!9N@C@+L;X0DP@KnIPBr_RZCHIF5!&IDaMV($B9CJ6?Cee@_Hzq zj-`>E#ERJD*_mgMP92h=N;fv@0XKCFK4`>ehlwt{-`uU=%e)bk zf;A=$rdtJuG{ zxG@*{v2e-6cVd%)e2Z>I4Ly42+uXBs)iYisJ9x@NdbSxM;-D!B=@s7cwF*zbw;*nwec=OPqN7j0ePxjD+mxAk7 z1@FBTd}nZw`B5-WMH=>vJgOrIy6pC0y)-rlq_ViOOepJo=P}_2F8UFoxE^>T>tv6v z$7|<=&flWT<6(Swt!f7LyW-=v-vs@~_d4Gf>i3C;z2}}0HXiyEZCU#5?hQd?;aS$=!!Cc|wpPA^{swC?Y{JvW zP$l3juNJ|ACFDa6=hEfuZ#axWzdSq-Q4b*P&)m&BM=BrdynCULN}h8-9Dc=PyahBm zH95o97S+dt;yPo;<7Wb?yOaLF*izA?kX%<~n89G7c7O6>T*(yoLR>d!?A`^nTuoSj zITanbaNIIvEY>|0u}NSb{B)ufz%NTm!EZCUR~Q8+;iv=#>R$rmikLkwJ-?JeNO`TIe7xEofeP z{6AQMpj~D#kJnZ zEulY|bzOOU)d<7j8`4wk^VsV`AwQsGU2bYM5*p=4P30G-T2#_s*IrGhDg&4VsT}I> z5}%!Nh(tL=UXb8zx$}>(anJrSj;g#}&IP{yHz1*H{fm2{czqe1*Ec*`PsrTNG0*fN z)nG9R(#I+|(w75Yg%t9;tVu6#uVHHcbTTUMU|gw=|WK0acV33l~PKydY% z*-sL=ag_sW4}zIu#XU}`QxIO2A4*NCtWYzqE`GQY?thUXrrBA<$sSeQ=XX*i!}A+1 z60iup@v(a&m8>&K;rfKvO^wj)=h>*_9k@<0craM1aMVDomj?{)E0uP{SO3&y(>dGm zZaBLsBRQmOnJBWUJU-*4eC3dy_K|kF`E*n4d}>Zp{G69o<0jZ))S3F5(n5;~o|N(S z`h2MQl@EihXTl-;=Kaw*Eas?>bH8~^`xkV0X)152voGEPgJY`WE517sI900=!|X;= zcG0><7;g4x*4x>Xe(m30Be$2txP+qHLvPb1mVNF!w3YpshT)(UdVb%hRo6Yn+x(jS ztr4|4t+dOU6X_uB`IHqSv>N+dkn0rpsvLGg+U3&ro8^Qwg;d?l9dg2COTY_%f2CBn zOscd0N$IJpnXCE28jnQ7ccG^x6cJ_@Y43oNbh(TlrCt=-9#y`1e!iVg>=&)r?u+>U zGvf2U?5#*s^qZfwK^HW8%O8G=m2YS zEe(r6I`so$M8N6Ey zBq@#RfE}!VW!>0*1{Ev_3Ga=WMyZ%s@B_Y(LMJ8xW=n9$#o*;#%0xPrX1pRczhj_? z$wEyQ(a7BAl5a8RsWd&Ng8ZxpaxW}I-&Po{+>5lTfIV5_Ivth`SMa+5!`14`)- zeF4+PKWz=u;FysAw2{)QU`L;viOcHpAy%w4d+!wjFiW`iUb-rZb)mf&-TDLgzgUX=lUBZ0Jq$An`wu+ZmpomN zEf)9BPIEixI|WtO_#UrV0<-2}ov#(6E5O;-j-&y>Glpfw#;r9n0|jDS#_rggql{=k+iZI}v5Z&v+Q`Acv zopwI`YY!|ew!zCrPTx*GUpTw*nwS3X_q_(3x=;)1si+&)tbkY3(GH&CZy~1rp3~%p zsI50GDRx{^xhlH4m<`+~5;QN3UOij&nsY2JAI8=nUXSrHpKuPjJB(uy%##oK-C6s< z)xq<3F^y7ey7r{tV#}?{(fx;_m7}HB_OpiaN;#N;B6V@m zlsTtf%NGyiIuz&}?x0^<%yJ`*;XVnCV;*fs+RzDRmlutq6L4$zy|xpnev15W$ppF5 zR-baS5PNL1c12oyi|Y}+76R3Q6_U^#d7-AYX1?E5dW+V#C*?_WYRv|EBzm57mxYQBBvOFlfsMAy%+K$Fm6|4 zc%L9WaGT1Ajs4n*)v1g1<3?VhfZhZ_NOx;UQK#?=kJ z3)(m!flJj=F{na3MW(Y8gOcw-fLrX8Vuiq%?W8#Jhp=Jx?dLj)9!Z7$N)|bL}RvoOKQD^X>7=x<}7o4!mst zYal5aP^ML^&s8pIkJ*+U`MTa>J!`rptpewCeRy@5(i znb({0PJYzzH?e!((tc!n zngN;1Cl11}Nv{kR<0f*kCV?XeXAX{mZpo=mCt_U~Em}s=Jad?MNhQ2tzp#$ zqXw_doG@zbo%slqlgda?=nwidm8|x#@3dJo8BCTWIO7nyIp{}I`^ynD4LUwCi~`8a zMbKY{`SoP5P>HWLJ!}k(h=HTPdQ^h5$u5|kifZk@3{kD2OyPjAmAxv|R7Sz+t z&NKv!4C0s}!vK9u7nK!B{i>H$!uB5!+q;~BI(vl7`8tWhJbn$8fK*ngqlE*0eH5qg z4da&UI|xLl7>pF#$v3P64Sg~CskaVqe(urY-z;kye0uEa(f8(qKY!ig4Jr}Z=` zkw@vEKwo2Mid{V`WCaru6+V2**@Aj_LuQwW4ivsSddTgKvq zu*$&qA}3)_BZGTJC@PepsIQ1>xGUim&00Ec6XaL;GM087ri$4+ZD>zKdu=*q2-W$cDc) zl^yE+xUQOkA}Dx1S>?lgT#z30nWb)lJ!v-sU)?sVEMyc^pw+Nm(`TdnSg)D~pFRu8 z??6cDSt6Sa35yJZ6TB{!mpgcD3eGwNuRG0pKUem`Wojk9fqQUeM+}=GJ&a$=f4V#M zLAcd4ueE;X#v#0Mvtz@yLxHNA7KmsRX%*IjX6~X50!-f}-F1Vmm%|>qDPu8Y$sOz+ z4y=yfso!uKL<7kmowDt?IFrQAtD5{+_i-NYiJ!pbA&j%Zy>nd0_bc6IYi;!w8yR~d zU5h?e;G$)Ae>W?Ov&XlfMLeGSk#T6S_{q)-2Zc%E@AI@vWgtjxs<`3S^39}ki5huk zIvm%8wwBJc;E{E(aPrwZ>kv$P$oFEr8}=WZ_b>Tp)!$lm3VfiY2F69SJ3JMw&Zh|) z$nBFMO2u!1!3Iy~kodNSEh|UMhJWxie`v7-(i2+*jesU^Kd~BV;fW62+;0C3@jfLx z$-W7DSzVc!PexPL$&Xe&;%$quX}H4pT7`7DaQl(owyzp@>EEYA{^ylL-5L{zERNqW zn%I5=WeqLxy?%_|;lcO%jzDCB2LG|2%bns}v=r*^$B@})Rfs(`9lC*_>7ljW0R!_b z`NZ~M^i$dtSv)l#K?jh9C zIn-Rp!E>s7(^|H2uNxX?=R{dQh$(y+_#fmnw=Iv;9QO0Oe9^za={V!Rfl(Ns)xrOy z09Al?vFmOH7R?74j;|e)adJL3iN8?Ut40!Vf8L1@)qQEvsUrJieWFbr>b%1zi#G!2a&-&D9kVtAM?6l$Yh+>Cq)VC8S=EdKWKk z!|8*FqtjE@gPu}+v=hvwzTtpZ5-%#NWQH^U%Yt?=6VVms9!MP{*ghImub(SjypeJ@ zbp`+LG0jj>SvZukt79f(*NXnJBx{b)BqBemlU_GdMXi*PXYe9Yf(%u_Iv3HddZRBgLfz!7lg?p8;zx68&+d$=7BxECnK~6e4I8R9D?=O&{x{Qt27P6Nc7|ve{tL#G zjQYmysvSPKQg;i!fo|IAyI_+8~lny;P8s`?@8W58qUcKq_no5IHyKVy)=HSkrizjBV`Lu{{Zjzzs z&zO*ib)xVQ!DsL;bGKjIZ_Fl~{Ko!^Yaz8_6@&Znpx;pGtYqJqS{BarL`NfV= zdQUrr%P8%>>GKsK;lufgz)AQhd}NQ6ByDM$x*&(KdCo1+(J}uGc=eKdg37xs6OFs* z$i7kz01elW6#{E{?DkWV5V&C40kr2Yb?32#za9bvw6&=X!u$j0Lyexkym4ZGGzDLz zOF0*FKD<-dC-R^MAk)eyRDAKJv;7U&>L(lKu`WJ=bX8$ogfF*z0n0dD*M**9YPo6P ztQT!+=Yq}5_qtag@S1@QK%>b`9t6J@(p13vPLxI8mPplMR!BM@4wimJBd7_82WlBTPR5HW^m*d z&BZGoD72wdD<`*9s#p;_NdT(1idg}dHP zGhB2D^aGC;0&m`iPmcorI_N5%=%cmvb)QDQ4G6Of(NmvjRR*@1y6DcBo z*5Q2@I7A<+Wbo48`2$xKpig8d=roK>cNG~Le;N)-^gUo%dRz#VpfN=QZyWTeermZr zLMwFlhw>;U>S8CG%&C6prbbxNxNd0R!QE8>#hTR8>#4ce$RkAWmKrq%J`144s?4ZK z!!PJ5J&xI^O^XpM*y#47Nr|U-)L>A|y=tFrkDfK%y}om<6Y5ofEuHnBq)B20Ui>Nn zF~8bJp_=Qj+|&-+;J?5D8B_1s-OIZ<;P7`63c`Q(i zX@}eSST{9M6OsPW*ZNpNR^Z7*W^3;4U#!gM0=yR((}eR5W%>NV$ZS!O5o+>^fVYrN zqnAZ3x7mPOpmyo}7nE-4!}7vHr|;GxdNLFggz5s9FwfKhLCxIBZQ$cHL7J%>eCl^n+u6adKqhZ$%#^NqO?x&TDyw z8byJgbHeQ0-s)N})v!Epd!GMvqO{QCid9Ts_gBHuYV*N|N=j+-f@}3RP5nOGTXVJU zn3%6Tuodslf~71guM0C;r0~=V-aH|f`?wz1ANqDU2pROLhmh!V?G2io`YH!}mWZF9 zR>>n{e)M7x-)aur5z=#Wy1NEzEVzu}U{82oV%+EVA#a(zu0$SQLVg|jv*@a^ZcBq+ z9zqE5iLeq697uGQg^))d6bsr-elmGhj9C20dp$9E_T~!hZk$qui=a&n)_wOjP{|D& z7Ps*r&0Q%JM#$HSOFsEWo8we(xYL?~BSr?seo}gPNe)uG@=Y50wB`9<|MRR1E+|1u z>wMwhF+<6EANwZ(#3VCVjkw?IJNkQawuRC}!{H?-E>G<)u5zKf!dTn0ztshq?1!S93CHb08ryY-?SaN?7fO235KDSEZ#5OD9N zkA|b??0~6n%-G%IJU!&W+FO^<+Z&Yz z*VXhluM%ZKa@J*EV}@ne_r@i;JK4ZYHLBa8?+Iy^ty{8|`ibAi3zj*}rmZe3CcK+Y z$F%lLLG~P+oCJ>eQ1dey%p@+slW@d#wxe@fOlF{YagLfr4?9 zuvcf3h!`>YYQ*jSqU4I^__i_Va%_0Hv+sDqK*z+dV0q$+;_(W~mF{Wc^E46?iNt>;B>C23k<#DAi+PUrf5sv|C1fp$$*}*%d7tPiKX)$s;A&a*;55<^9mGWenaygPbS#-cotymndFs)b4QIG=CYEnr>e}D2;yZ*}4v; zW>;+7T}Wd52>ILEN@xPn4<2~#%zLM0QKO7u^oCr>n^_hkL`W2~$V>2C^n^Pp%wBZZ z)5N=(qMr7FkCP=(KIDT5a1UXJ9)II;_Uc^mAoZs2X2Q`(&1GSX(ZO?4`<0G(I~3OA z*{qpzW+ehHwi>1tzZj3~j6EanDSNZ(f0LtMqxs9B62O?ZrTWtO+6PZ1;D@WlF+a^N zC_F}iXFcY1w!!9IpRj|;#i@GbU&~4EBbv8VpM=|0DtSMaX*WUV?h4wvaK$FRhv`JD z&4DFLL3}KD=Dhy#lI-mWCFRkNk4Bb^(OT^y%dlCW1AbFJgfIEIGLtb zSdZ-yV3OtmtzN`r6HV<>@|wB=|_7s*msf^E|u4GrQy+FWIv19bXx@;Uc4FakJgf@wBBcBTDRTfVGy zEJ?$+WU>>b1ZuvT`;O-B>SAenYABHg#S}^|9Vy%~;3@i& zf!u7>F%!4K7Z&BC43R?02kEGzs~b;2K`WR*_-~q4ku4-|+0_}arB!LoY9ODQL4eBW zegF_KvaJq^@FfR7SS^jXC-HPaqr{9oKNwK@6_M$jg)LPA^di1=J2jNE$cB7TtM%D(>70#dWc2X3=I%IZ;g1+a-%S z_;@FUOJ4~BI#gheR+^4a{_6txHE{pir)9*oN#N&i?6yD2^G2hom29OWMoa58#=pL1 z(jC=R_ESVgK>|=vlAUYbCn}X+EUS z_b?}K*@~J0Qu;wwH71j?}ru1E$c%y+%_a70p{5C7NZFKMw`F2c;gY}NT*_h#- z61UNQpXub5>3Cay3r$OFJ0jn@{)Cv0sNCCmbc&xFeKPt%BcOrY6Ij=t6R?Y^~S zN=vFJPJoUw`)oUGdlG$J;fUe$$sO-KCtXF{2qXX4h36t6WjVwbg&DfYMPf>{(%FXCG&t$-$Z;^C6FP-G$Siw7+vfd*2Q`-hRY&#N7T3Pwi;{Dn)*g zTNjTq-V9)~Hf;C?-%t&>4;|%zjFt%^bpIULCn%URR0bDB`k~M;7m+)=YX@HcG2Hx{=Aytd+S?6sI31Q;L6+o{@W%%*WkGO23;-wlQ za+LpBXjKE@$u}DW+O|8!MK?~|&lD-Ar#?~*zG8kbcx$5?-t_FQtcase+}a@#y^q#} zQubjoIJwmr95vI_Gxcf+q`t$7m4Ar}zVvq&GWz6DmpygOdr;BxS^E1!`U=vA#PIs9 zS3}2?%G=$@4PHl7)0pEVR2xQrNlzB<(SnMFawxUB^+STr2-c5?B+QdVtPdhDXyVeB zBKc3PkTy=mOBpcfWdYyasB2vx^1;NX6BE)4tgsP@d-Rnf>`8+=i$x0y!=w0!oeh$; z5?p1N8Sm_K?o(&6!COXbU+V}8Jzedq3(x)P6Q8~$K-kG@X&zOat5VW}ZklX4UBtT* zuBrVcD0gn691mBMB4x5FB5{sWIHT9zd?Ec$d ztoF#zBGR?C!(rr~Z)YY)2#e7sZPf9vL_qfBOkmAC8-u9bbL!iP^QX=a>G^q_Cpm|t zzYPMdi=G)~nsHTN^&e8r-cr7uWcmT=nk;CW0}|N{zSm@aVzr(tqK`lAueV9>@Mdfi z6C0-aN-hs*BHigYIUYC0Z71&n;E5po&)AjrgS_2-A41Eq-=70R)J_gKEh{MMiiiW; zRMW!m^-0j>Ozd+{nE$L9D5&ui_+jUpV9q(WRMRyIHzp5tV{MB%RgD+eRh@c>vz#>s|=athm^}n|FxXLBU;z@TBcf2~X z-8H(ieSqPMMVH~w1@6AK%(kXORTM}(1VTrhjJ=|`T3lq;-5gtdM-SS6S5~<%ER#LV z6o)m2bq_}!TShbhKiE}XF(w&}tS8oFCo<#!GlaXW0Ra?Xdv#%cAE**@Qt3dT3f=AcQ zzfG@dWj^MgOcz&LP~f56crlS}Sw98FIADHGH_yBB?TH&~(Xjt2fJ;6s!PX(*E_F*&wh#e9{>OsU*|-&bm=83bYwQZqIs^mGo8aw2E}7ekk(+$mb8RE6Tp++OxbeoCANCHL!?25@Y+ms$Y6b^-I9yu348o zad*w{cD%&zwet+@N4i_1Q9~X28TiQO)q;$Gx+p8LL;i=mTnF?VGHhEA75vR-Z{QkQ zitW?)ew;cJZ@`Z}@%r|1^E$@Z49DJ%!5y}RZb!-0ThP?JykibK@vV+TU%I5kVzQ0V z4f_jUv%WpZs&Bz}6t!h*qXuK3>x%|na#d;#0jNPBMGTtWl6pO|V-RUPqHuyp27W1!ce+sQ%dy2@;?ER+wl>Q6IoZ!Gp3x1WY8 zYK0Lp@z&)0XS)gtw||gdC?Ak2BAy#GV3wIiBmO?c0UM&FLCHs%D}su>GuP-XA=lbF zYUBP|fbuS`#SKR_4(qZODHHja_>`>&86J=geSy{Se*8AHCszgFFf|vG58CZz3GMq_ zqr04K@=}0|z8u?az<>lYN=12+Pr(1x(n*6wz8*5T;O))MAC^wQxqxz-e5Fwg@I+z? zH^qES=v?Tkf>%z8O27`oihuuD2QA2x;AK_ zGtQKoFpbt_8rb+;pcveWhC=Nvr#1nZn{Fp2lbS;;>WhyWNFzgX=f$N>uatm z>>cpzBL9mUY=FcWFJrgUQO1yi0yk;>Nijrox#YWdrwNBIEkB>V^5HgOCI!93&8yH< z-FsS4dS$IqsPyu|Ce(9A&hCl8SJl?WF?imBnz5z%H^si02%o?B;Jhgm=ah;$ z<(I$!DPu%mB`wlft6$W~G2x#8%`3An&PXNIpN5d7U!R_wURwYoRP#a+$#bcP)uR7B zh|WCPTDh}=`?=ndTeD0})9p|#*L>m;|7iJ2p?FcXP6J%1@NRD1Z+q9ys949F!AcVe z&(*h`wvYef(XWO+0tAP`><`~g1~qzQHFVOBsyZT*?cfdbEKhrIyMlqwb`0y7z$VMf z4qm9^nMsUwwhc(;T-MQ5fG9hJ)YwZh=WWok_jd`{bFQJOmJx*X>@Ng-u@ZDMgJX#c zOjoXw4Dm1hvRigjhkV@Pg5D;NVqn=rbCobni$=fJ2vWrE zN7%UZa(mC|HK2Q*dbGyV$aCwepiJTkpCVOp`@$+Yl_uuvy?pXNcvf$0K)saSnLg0! z2%A5z@$?EFBE40Iit*9)DIvuXU907GMRj}V3`Z$83zmaHgF$kI{W!Jw>Bqm& zf5n3MU7J!{+S&Fp^qeU7`uAT5Am4s_D)v1#5+~M5cPx`;k8GE0F86~ybKIT$3faSn z`|Mp4J#kkx%F9B`=K8GM95bIhOnRxrcrqrxy}h#{#qKOYZjt1-2&}x!e7Jl)Yy(oMHR+JEKN~34-VZAp}VzMASql(M5EL z8luwOqW3m>XY?{N48!nFp7;Okz2E&|ueCqk-|ls-YpwIVj`MdM z=bf3MR^JqmlF-p}$Dxqc?=vGm{ z%CThr161a`FnTDd$nTb_cQ~L!^Yzu4t1Ql0F=a`hN(y_IzTGDuFhDdw%O)-huseS~ zT27_+eo#kKqGs}Gqs21|ssqVDvB_qm^4C!11LFXwbUzh7-(qWgb;VcrQwO`wyomG& z!@1*iJB##Z;#n?V0XuPS-jl?cQ>C-YO)ixf)=oNLprW43HU_hKyGmv zf_WFyx`e;ja=mos3L!jmmX%t9J~2_~Tl@h;Rx1JPoRuN_SH|sV7%-IA{vwlq%p13@ zAG9B<_|@*-2zkyMn;(u6eWz52R%iP*GXCq_8{)t~Vv`gUcWz7WU`!H>@@q_s_X?k! zn}VA%3m_g9pZbIWiaWE-`S6*JR5%dKjMvHs15^O3K;m5T_I5s?8!%ILesGOgh5gav zQP(hLSshp?zlcP*Bby~vQC1w0|6TVd+01s4q;@eym%b`;Utxf=5`>Z0!=-Fx^?N=J zxqzH>U^|1U1Cgl65qX^7mE~iO09Z-PtP_SJCl`}Rktm&^*2`Th9}|EkpdOak6)!=T7WQBB8g)c}EWd1qna$7ek6oe@%tiNNDIXlnTQP{cNClE}hp&nOr&;3A-eH-fHr3 zXm_RG|K%Sq#i;JL(o8cCKG1O7qmmZ*e7o+pYBo7PxAZ*lsm52VDqurj*l?I=51tJi zK`M9BfE=cXdPPzI2vP+YQl43ERYAxX$2DiYB;EpY6EV~n4)*|wOiAVVv|lTHU$Tc& z6aM_PXQ9eqSyx(NHHFm&2$aTH2{2q{G2hl=U$9)Hh`kobkp_XC_^MQ8ruo%m#2(iH zHf(**0Y|cd%io}haIn@)N3*pIacQ@v!XSBbw5*B|Qw!?4PJQ9(jty<=GG|IU#I*VlwAvD_~DYihWK3nwqD z(L_bi87WRGKbd%FOxAQp3{Pc#Gdjw>t15qbn^uaNcc-#G)~D18gp;pRPSFlB^3 z%2pK?6nIE)j$2)1Wuy<)42dNA*+Aykx*4T8>X4fM5PMK)C^tG|#=iHPa59^`sY_1Fm zYJ71*?HSZHw65hUl4~gN>7J_I?`ye)?Ch;x|{O&LNetmQP z&QM6)x4V9m(E}|E|5*PrK~wWl;qju3<3~=78I*_p$^r7y^P@o{TC1>&MfhCGvHvk- zeAxZa&Fw0F!f38)Kpee^|Ku9ORs17mE7onGgs0ogD+B%-?zmLDVe0p(?{uSec59Uh z1I7j7!5sBZ9o8=qx&H+I_o}MV!x2$ZF&XNavM{kVq^pD7UQsJ&MUgjHpL430jJ3aM z;oHYDC*JOJT1R1@{L2TvGfGV@u^__6b+C=`#zJ$lF{6Lh7kQ_~uk?sy?-4T7?xp4( zr2^sgr8|jVq4(oFfGrGn1B$ze<|gG8{MuLs*8*oXg1D1$yp!Ah&v01Co)VU*znf_F z;`6)aPlb6WXh@{k@HP9AdP8^fRLeyzQTIc3nDSC9aTQXs?x24=o4akO!7NI#jWV%q z#5-_7dfb~Tx3_JFSmkOZ=#aNK{Y%Jgf2$uBeDFr^RICy`RH5MY2_+aNs`a&sFUp<`VzxR95k^7lWki!)I7pwzoQNg1y_m8?~f5nQIzC4#;p+31v4JeE;@LrOJT$X+>+uAg}^3!rK$mRRE7478DV{UFx z6c8Cc+r6Pu-*)c**k~@qwCceGB1nX!^R>bBraSt;_DZ^D^3zeLe5YG$g$(&G{~PvY zrC@WJ{)L^}&qBDiYd5I!n!3B^ai~^m;qj?(nmqaJN7rJtpRoP@E$m5AQ$K|d#1{^1 z&>7>iGINu;gJe8wYF^VeO~+sTE3_|S9qRNK7eexRYnyhc9~{m$mphvGp>gP%o=fD^ z5|{ej$9(nff$!`Ocwdy}ufL6VpSpZXEa+{&xc~Vr<;dpz5*WL9eSav|9l?ZH%4F&E}5$HS$&(X)R)9ZdmV=o47l z43m>*Ka{oNQYW_7Q6Yrf1r++`5n@^SYx>-BSr}6o z%T^Q;P@7AxyxEfF{JJrRC( z=KKI62V|pr!!A87T2Dkp%a)xCg{|?D0?~0mC_7->1VmGSTNcFu#duav^%4?$7PqKw zxCxn;<;zEN1I&Po*3`>t&^~BnQbK0NX#I>wjh0o1X!rH<2zteR3_cRBQT=ps~ntj(c=(?s(eOK|}iPfU|m##@b`0;nUf1 z6XwdYFbw#9Zh%q*@_V0;!0k5naDWygcC;)vDVmg;@0C>R+=HqY{&C&a6uAR*0Rh!h z5e!5zZ8vXS-`B!ju2^G^*yc8LgU-T~NZx&7l>;k2(SeCa@wKBi;zORte~(Jgw5Pml z3bG?fCg+z;@n3mF8fcK1H(1tw68w?hn#UQtd@B zKRu`0BszjbAxgQ;hvL;eVBVT~-}bPNPOz*YIq-QB`{OzRH2Y(Ecv#?H0LLE@`XZov zaKjBPcEj}<(A(AC`SB8NZFutIHl{Bb;)5n9VdmyHII}%o!DGKkMZu#Dj0#!G=;hFn zHyzvx7>z1kTnhdCviw*5<<^ioe@}|RhyC^Jgo~L7OxUl9G0B&e17T|A)Tu&`ohE@~HXgpvnc>=apcWk1_`P^*r9X`n@m`f3jui@S_{xOHe9?KG;7(F$j)bJJ`6 zIy(7td$4iEKsOZ)FJ-&>xIar9J-Y@t^e=vmP8R(-#Ia>{vCP_XLZ0q9fS<@_1NyOW zgw%~DgI8Nwk5Pc96QkP3!Bt6S^e*NOF)$ls=|-a8=OOR0r{<5;WyJ$@&FY4aZ-l}x z+Z*E3iWk&d8m3le75x$hmNO%sxkl@OA$@511H(PWh7{lIl#6HR&y|{>{OlecZKXb` z{kYET{*zQ(5zui@1T_^eGci**`Ly^#fi2*KYgDr^Jb~`b+`a>t&*jEroGvX=LdCRL zX4CN{ndA2E)l-VO{8ao02z?`#q4va%5QmE!7yc54XFH)soVvnu-YOaor?*i*A8OEw zEqT#T!J*LoX>jSeo2^wbdxhVXo8G}prTp%T4*w73kC!GgJy+4pSrQSW;$~wLuI-yi zR5Sv^zDAonudKoivIEshTYWx)r0@OoZ!N`opr7E73%;0q)S1Ct2QUDnyBYe!X7_%~ zd;w%r<^mfl2HU_(VnpV;n{&E)*Tx2$Et5|4H*1Msoydev?3EL<=LkPs33eKkycdh$B>sqh1=Q8Q@9J2}h7>Tk@t#FATpUM^pzQ~G$= zhRHXh_e@NvOo(Q~kmjXzb<7L%!$L18mGGu9b(Aj>yUm5h8dE1U)iuAbIdB{OML%2! z&K}%Nn>zcLiMrekQyRbho#qObG<_Mu_fdV%MKDDyqyJgLkVu&h5 zzo%92K`e-Y@8vxtB5xCd42e+Hq&8Z zD-Lf>J#4|@E&t7V$tk#Vu0g1l!ND_Hu0R&^@6S3Rk?+g1&Bsj}YB znZ|s4b5KoUJGw7_EFbNA`}Y+gHuIXTUV@p-Ch_T0>FpSaUzO;?kJYiVO|I|WrXQGC zzSMOaFiU#&Busi2N{&E|;hMIMh|3`EP@iCigb?6tIJMcu#63$n%@DTAGVTo|-_i8{R zwXwpZ=;v8ejXd3p5>cJcj69#YnN2X>mO*=@xc- z`h{26%*44S>+}LIj-syZm*6gG#Ltz)PPN@5eDnd~PH~mDxk z-J{o7*!5k!Pc}vJLyH2EYtRbW_3ieAj5vU0D2@U;6($d5!f}N0DoGMMo0#c$*N{!; z`K5TWAhd@91}rJ&zL1mazan2Ji+L-7BXLpKFS2ABi$)2@h>74v>Zov(X7*Nrq1&hm z_D$=6QssV6C$}fH@NJ8hS!-UUEqRvRo4gGsljO9^qV4|BbwKO^-<%b@7N_|Tw`bXn zV-`gzvNNjXp<3V$S$>(@*$7`iSTNH9{TbCrlj-Fx!MHhkRq1=Z8b4&0-Dz*L;lISF z5y=(klt-Mi$W0Y#GC`cK9Wcm)wx=Par>y}uZcZnYEHlaI9+N#pOb6vpNLdGqlPZ~0 z`Up=vakFB{$<6{a0QLagPlnm)|7M4tLKA1c6G4mGxL?z0u zFj>HQJ+4eMM<5{MZsqQ+t9)mKUTpNMSy+D``XO%ljE%Ccw6%X`SaBb zMKXYWBCQ319Z=lTXdKBI4xAUNI9Gdbd{><4&b?5v`uGcs6f^#k1ysU8v!j3Czm8-+ zdP+U$kTkqd2qYTn8^gAX+_pPO6#4e(Dnj{u=R(O55Y2u2Hjmt)>(=9`Ie7(5@^`If zf>o9GHt6(a@9pje^=7cg1Ey2LoHP3i zU}K>WEUYWSoaTlE(VuGZ$I5^`O`k8SZ)JqQ5^{n`jAZK^gz}e-Xd11)hZJ49f3x@C zoJb|0jIdES)0(Zz`JoE+E?1Yzm$=czB_+zJbCV(Bn${`68dfE;MJ96Qt%d&^^>Zez z77G`nk*x;cUO5WTwf%cm!QG8a%Pc8U5Y+bWZ*vck7CRKL5di*v@7`rZcTE-Khq>3g z)<>EfpncV|Z=A2>?fzG1+{ zPtG56#eDY8ph4qlvJv^EZ*a{dAF$*Mt>}>Qtoy~UNp@1+%8-_y(t2<8c4IAVeq5=_ zpu->yog*cgugvvds_wb+0XHVUZzpsQ@fCJLKC-m#Kh0xpa~J*qU(0+YiPB)LLN!OmN=_wJe4`(v(Dcek#{_HF^+Na#%VdXG@krub{uyJDQh6+jal|267^Z% z+BMKx6^PKb)$McFQgt$Ca(I;cN1bC6bny~0MihD81^(8MX1RPieMj`|Qx7W(=jYeN z1yR*WQ{2ceU0(i!-R{dIXnAss%PS;cW%ts@PHH)7X(S39T<+2cwpXkH#4`VF@s z@9Zl7)xucOjHURCe{0prwAtf+dVDqN#6svT*w^lwds^*zz6fvKmnmfB=2%=%V8Su% zzSyXd_$$(5x2w5WY#MEP^yxy-YD;rVU8#7+Q*>!Eg;5WjM(Z>Xr_$Kfrw~M$M_T65 zo@TTLeYnmK+jon6RnvcOe3hnZD+9KrZ1`7nLm;==<4kv#ws8_kU!mGbW-XKK-Nt=q zZZ)ux`bb@JNx~hqMLnL z3=y_=Tt9iM8&A#h#M$9fCAw3`U1anH$j>m zUev@9oAbp$|67gl*=6cpU_IQkgF2V1=h6X$d5a-SiX?>D6HY4~)#*IeNA@mDLk4bZ zWGgud3&?Wyzv}?3ZBEWq?~B;Ymcj4QAwaS9e(Do@gmsUqqtq7PYeH0`sl{-xvAC0>I2=YT8!4+R?y<6Xs_|0m z*U}m<=UqE7zQuqDqA8f>&pc1S$AIys-)|CE3>{fT>|yYb$Z@9;=_4R450Qq_PO3g7beMgzXaV9*!B+$nHW=gcj@mZ*b+EqiS>u>Txt; zYjSer99sjCm9{$flZnzlKqS`0m>B2odzqj7A`ApPDKZEkOcvGKcKUzJ=ncF+Li0;c zt!5)#&ef*gvm*3l6!pd$nVaXAaq%jwvp=h=Nx=6VueY1;7Wakag<2FuxGH%HC0Su9 za~uCCh}%zVolXz2)oTRW8|lIZX-&CUp%wf@ri}VhdLbH&P3cR}>|h&Xl-{wzn~n@N z&12rR%$WxH`d~jElti7CcMQQaGfuj{6x&~yZ(W6d%7^^O3y^(_RwQFh7nYy)4xd*V zI$x`E?j>Ym4W^$El!a05!QB)1=J#&|0R=jPIq^PEt4X$%5K6!KF7Ex-N0b%#Y2rXd zVc#5i*>0Yl%R|U#F3n;0h0K>lTP#?wijiyz3-CNpt z*)lg8LJ|Wg=hvj+Sm%o1;(D2@0mmeB8in2|W|fmN%Nz_9fLm?=r){4eAx2-x zo&OCGh?4^YBR05muOE_#!HPgRp6|btYAkJ44{l+IiiuUo`P=*hS@4$+N=V&c0ym{; zwnjNDPEo3syc0;h9KZMNNp7rfhjFS)e8;iFp#a&qK)MquP9NyScnV-NOha~xIJ4}m zU2u<<5J;*k@g#SdlBaFKK5+Xl@Lt>SsJzWFx=m71(MX6!Ljf!;=UXbbHk}_R2VGN$?%u9vChlTu3QeuiBf&*sQn%mSZ$|-NC6ywR{J(>8uF^2CS_cvi^W91H zY)>DB*gmdfmZ$1c`tlhLh$QGMp2kr?&ojZP)=l;jS~~>mDKz<_|>~YvZc#V}no>`AURz_0qf_P}H!r9Jsx#RNsv9eYx@<|G^X6 z6T^>L4{I10>)j`9NW3v?908$PG5F?4d0$5DY#G$GlEc>&<&OH*KeOMP36X8Y{32#N zxjxn8RU9Pk`u@0v}mkrVfIm^erKl$4c~hz&=9 z=WOk8KR&N~b)0wq#XDDaVi^kSjPI}Ibzn;#@Az=`&$&m*w)N|(?%!Mkoz#5eqqwSx z0zrmUo@#=N&DV{koa;4j#Wxs&{{{tMVABm(9@r&4FU5x>(YH+AhNUhhtrYr%D9g zO8fEybxB;d3F3pGLki=&sjuJY;D*ib(2MooH6M-DQpg1aVNRO3=wl|_&40Rkbbwr- zBH7NHLbXHky=#_Ps;i;+h~tC%Q*pmfO>?9~h99S!2rhGVNn9tL42YRhyph3-bL=vL z&&1yN#^gq^1YfUvZ&aWnTx zz@hv+%e)d(XvLm`*<+nknp)p%Z)(=)-?#WJ6zBv~GztQmct6mirE-HujD9{z^yDJe z3RmkqwKErwuA^~!;$ypn(N@oX!DnT7a_n{!?;cz&dRz4hKDWQc6f3py{ZVr!za7%l ztbi~~-e89b3iZA;?t{Q4CW{CY=HM#lij+jVXmuF*rr);n)Cy*Y8Lp1(w6phUmtPddkKu1{Ug{V%~K zYOJ$YyGFY9*OPta|3)HN((G?X*fa;|@-0h-?ay=k;0gpS_^ST1+5By-O;xNmA`dbi zFhtsR=V#bDK6q^dt;eJ18#RsjH$x8+V0D+?qUU&m#0wm%r>6dhYp*U;E5J>jFg7HgQy!)qgBSW zSf)7-XY;CfWWSBSY~NuV{|K4cKv?!b)U!G3moeKDp-t>s1;yWBtoT;ciJe# z|Nl7bUE~~Me01(GT+L2k9OPk( zqL5h`-yZp7;=zf%rNf4%!B|YJm!iahR;k|m`m2fNIjYxa-!8^=9nH&KMpFOxqMVMx zmvLXDT3tAos3}RuG=))5|8-g7Iqd8utNxDJ0*#x$_HFHqqt7z}gAWg6hQ^3wyN2#ZKaBAto4(Q%IhWVxhux$7Hexu? zifijGcce9Rz2W^#@GaNQ*cdvjz(>0MoWAkwXNwv>X@1c_`(lCllv+^amMFy{O{iB)|$nJ?!S0zIYe zUV`W96{8u709{~@TNDK+`+-6YStKIALaE&#X!Z~2>^0FmAe&gv;OkC?UyyUdXn9>D z7*D(92&^Y{BTgK8w?a%zzd~*IunbI>dRmyfc&UrOGjnl}anEena&b&}gCbK1u%{_V4zF3>4t>;^3r5 z#*_`z1dZ+svg4*Gtnv#4S{yb_@OlD<&hCt$`lCLLlFMBY=uY2JA_jK4BJ`h6$GhG*a|L-!De1Bd*W|(Wt}ZhB)014og!hZl(FzF4B!-Keeh@Z z+%Q0a;~?yo2;fC)qI0q)bc=K#y6DLF_C3hah;`W(de`>12>tIH@9uNrW?t1%#I_mU z%qb^V(D(-%P^=hk3={1hPT2C9@(~>k+wO2@J3}u?6K&f_?eKUGNyU*A4*enWoJ$+x zimVt9&YwSJB!y_8=Q-V>JFpz@K{5&ZGS1gfbYT@av}N4wL53b<9Nu;;dr-a^5KoC^ zL)rCf($GE2etdsSN<`mIZj~6C{Q{68c^;P7_MtsbsO3&h$jg3$5`s*h8!(^Zg3coc zy=o?qt}hV%Ohi8oB4|b+N*RdeNmfg?+8`7meMgw|#nI{wz(pZJLFQSOY)5%1fcKQ) z^XQSVq>|bQGb7Nz{@(>cll9G~O1GDS+1+gRxK)WqFn2KF!=S47ln4iL+)5`U$r+pY z6C`ko=&iTHxhp0Auo3r;rbOOWSDut$S;bVQz%NPi52qqUJlA;##%8r&{wRJ7ap7CG>^p4N?K# zA?pGOg~VgbLv*scmc;iqM+;|UW@iIYzh$t)?X-TG!w=@(tk1pOuRc(tb;x!DvI0Z}-wgkbCvL ztbt(?MuRMBGtSZ)GXmFR!b5YD@2Z7Ghx=7bL|p>9vcE<3a@*web;t_Yn6dnPky;dj z^gCqTt26k>zP0PRN^a?M!aZeZmu>n=B*|MhgM2r>^0$|dmvI8&6CAH>Ru5@1%|JZP zu94m>yz5ZgNrs1?cz}()wx^%i!7Snm=r5PmB>*wlu)cTaKR?rjc{Qta;LXci&XgLi zNIk!w42_$n&Ix+{J)u;90da_YTSZI{V2T?7=exU->bO5VjDAvf{s(ce1Eu%A(X z3UgekrZc-NtJd`AKdI;sX4}n$AyoA){o8~JfcQ7@P8lg8JQhv5H@y5Xgh@Gty^y2! zf3W_$@yYAcvs@dgh}sRqgW9dyeZs_G_pCB4=pziP4ZHsY;&Uyv&V+_&X5eS%Tb#|i zQR?cI1`oTzMF}mdm$z$#3MDwq+@y4OtGma;XSe?2i>_>vkmetjsm>%+4lK)v ze5X6b3E{!}lw}db+4k!^*Y9UP^4sUAhZz0OhpA&`h+}Tx5}*6Rn*aRP;!pVbcooaS zA<@xQ0a9~OTREH>QUY4y^AU^Pm@4hdd-Xs&fHTcF%&W;YCjJ*^_z4X*YV9JFna0Da zTp4KDYE?&z1z%q|JjPvgXCg>EU|KMpCyMJMjV!+;Z z5b1h_#+-f2k~W*#o7Zs{9CZidqxaRl&R?~RBGxu(k;8?9XXlh}<*``j{;J@i>&1!L zI@b< zZ41HSdOfZiH)Df0jdM>ME+qf!e`PYsW-^-TnOhQ=?=QI=30|g*1!?!*JZ&UcK9yc4 zz!5EzEKo7Gn+WaGu#H=>^-cejpTa`sWiKM*)*F`sfK7AR1LbQZY)NTu(jOCYU@Egk zti^u!E%bxOfY9Lc@}iS&r31D`QzBzGwMj=kP04~=^{>^7;ms3udcpcfAuqnYwg#-l zrjjQfe=PhJH8&o-x~1z`6`3AFT>*|!{yUGFty1g8bcgg*mH+VS*+boeM)nDwxByj^}~47X(~zM4VuqK*aAotCmW|JiUjS-eVDeG+5R#;T6~=Y zDVL`sNgD$W{QW{yJ9G146P*QPsKxA!GwS6^Kpo&CutSypo~>_0vA)j-&4w<%krO3xKY1!L@X>em>hKg~pU z=|&X=`g%77iC7@B?v1D`2RQxxLM{YF7=%}`$Ia_UvrBn!;Vu#g{>S69B8ev{@Z%`C zNr#|01X1!Z{l{##_O)Lwf^1WQL35;pwYXG7ecb9B_L|b&PegN(n(Ko1W@Tlo>qr#! zc>$j9w@6>7X#OAunVX%Iu!+Y%hHWd7tndqS!8^Jahp&2eyRB}**n!5 z@1yUfwtc`h(KbLoak(|sQlHpc3C9#>xlJY!_t#*_m(MPZ?T_B-9K3%q9uj)+;b(}Y z@!(4Bt&T&f*wu}+i^py4Ij&I+0{h2VS3tduC7u10^pXKlv*{lGBZa19p;8LZFh<7- zhL&kQz@=yil3pttXkGt7^RX6tPCzq&Mx?nXJ5@Jv<>9#!stEZF0I1m_j!k%RR#|RN zh%Y-g4zhM%sD`K$HDfddWqbe!)@&VYvVfZIYl-S<$r0)Ozg~z($yZyCXfMb(W);<= z*!*9WdjUNx3pYdpR883pXD=NQos_Uf=Nwhhw*?4Z(7&UcA(uE$=X=EYtxUgx~bZaYpH zy3ZxLA%+`G61?ffsIwDwCo0Zk=laEOXft4g-Nj0d7V9-d%bltDn`O6hz?{gq=CY3xpn_^l4sr(<%Djm6Tz1H{Gqv+~yY@o@UOK+knnu<2U^h z)94o75f8jfDvmBcNJ&JU!P7sDALTp_IJN%aR6}nLiMjEhK_GAkcL*cu6VYFK_v4fc z|J>SUJ%A7Eg!=Hrr-LuRh)Q^m@zKM%?q51<6UZQRf5tKTSDI1sGq)=TZ3pw*l$v~= z;k@wy3y0-&baD6a?&Nu`AuIf)`HFEWhjeot@+~B{C1P@(8b?l zerbo%_pDFb$|gt^%Jc^y_cDn1DBgnT+g7%-_xDyBCNpfu&L1q<=P$9dr&g-tOOy6S zv+M*^vXE$@V~)5bBpUajD`523HI4b0o6@H{)89BBh)9ywf=BuEy2%y>op#vIKw{xqL@~(IyzcFZQVPt+I4DNgUC{$}UBhcO_J&jcw4SAe z|HOH85ulMW^`47KDY)Zd?MA>r+X9XE)$@Jx7}Nf;w0|ZF5nTdB;1)BSMCj}UVQW%a zhguasMt?WYdJ6OJuyDNK{>x}Ld7;$PM9FHtb*Ffb;#t1jgk+nhu`VDb4k5dulMRPpi{V-Umi^~3+Mom>kE@Ov?sBth+PMYc zS9J9pp;M?o@Fqv9`lX)u+dP!7oRKkFf);;=`jEf=o*Uq?e+=xcBHmxKGbg|2#WOp7 zgdx7Sd0Jgr?jFQ;KP0z5SU42z#C?ym1XHo;(CRWD;?KacxZ!J@WsRvY$q;?J&P^T{ zMb2BbDu8%775W`weCBhqqW2?elYb^xMEi>PzV%2&)|Owy`dRBwhN#4OmyAH;0aCSn zLXjs-zCWp3RJJt0KLQg+C#60~(kHIz;>Os`_5%e3?pw8oV4_3%1?=UR9kaHW8zYRw zkxeKGO(28fXk_|4Tjjc%tWVqkWk2nwn@3TJa@!;YK(i?->!2M#tC;F-i6F~qVj$Yp zJu``dwz`#&%mA_io0=I@z)U?+Lky`BxfKXr20eKo53mL7 ziQ|e5w*eN>B$-rMT|E@WmOQ-t)@Nz$YH>>leGIm2r{eg^si2kUIi*k2I8y)W)e`wk zrIx})(mi{4m=4_+3V_c~5Xj@E$moBw0PY_}IL1=Dar#=YSuB*bH-v{|X)n_crWDNr zZUWP;dGoQbxg==c+Gv}g-Vo2oL^@OYG&B;p8ITdBj3t7XSPppS2B8}$V=qhE*O(!W zcWRbyJOuUl|Ga&okjs}YDP!hHH!WGx2e>P$DMr)_CuK*j^h80?z>Z`QFQO52#RqOJ z$>nW8pX}Dk*Ie2%nC-D#@bi4}ddZ+gdakRC{2p_Fcvvg7Po~O2^)~>T>7fZH1~EFG zz(YxaJKNWgC4K$Jd*&x-^Z?i*!r)Egn0;u(bC35scYqHk31{|=(=FBf^D>V}Mj{?c z+4(aDA|3ahD%*SE9VkDvdAO6W;jIP6_*`=tGSim&(YZL;XIjww2;H&u zE%4rBc<2!c^hzUwXD=?g`38;l$Vtr&I{^#NDUrBs>CMRF*U_A_0ry*cICG?6e!z`G zJ_VDvvNN~kz-59^loWK8KJxE7k>XGh?YS_r;ai(@=$9Tp>M5s~3&ZYg{Gbh_CyJGD z-0oa#hcg!`my(=PtZQ+I3~v2pD)g85mKHB_15ixHz+PjkX^VMa>-?2ZgyKkK4{lw- zW9QuN`)u^7n7>H3?MDj1L<283Q@-1GF7%j1SVzKZhp6+?D`F!-bm@zzLEO;n7R4~0i9Ffb-QZaJ;KKtY$)fUa-Bon{#PY6^1HDO z?N{vXDk9%2X)})~kxe7&3vN6plfQkIL&&{B2kBX&L{LR@YQ6|?3Qc)G6YoU@||Esi?Fg zaJgkx?*#4jPw53;o!R)Lrli6zdOcy$`s6Bio zGPCkWyGhf>07CF~+13Zwp*LM`Dhe0>*}bcY`vrL` ze*)ds2F)#)+#ORda!;3X`0y{vA-(=T$wZbD^XeE&RuER8w-P~(y?nP%s5-CvW3Ysp zfJnwZ9`>+JM0bDOgDomc)J>@%sKkB8r4&Hng8Fe0Bm6UZ*hx#!=S+ z>4wA>JE(iKZ8*nQ=e|X%$iU61&9gDtIZGf-GjCRYS)O4xf76XiiwT*^KteSwl-s|e z6?%H@p{=Tcm`8u}ka!Lui^`atN3Y`Oh33-T%7$6*wEe3122T)J?Z3IdAP9#vjV-K+ zCSH`&R48KKtIlKB+4mLdA2z_%6MgzkWp-0uo`C11cM5)cFEFlW_ZVTn!<5I*K?`3@ zcV!+0=wca3GkkFuu9#a|X2Z;PoD{JuB#FbJsCb(pz7bu9F^S95t~HW#^0|;*qf>v* znEqxOkIBbPUGIfm`<)gy@R&6|hW?vTS?BvjwSuGS{KoN?hvxr!s4Ibs*5vtvQ0zYq zW+(0a@PFH$klv*AY214rlP~H9mdFwo{TINb(@C2pr`d~%z|2`;zeoQu3;J6dRrN16 zeKloFu?4>UHwFlZH@m=XKLnqudP9eMLi|>hT-|@~u=K!;A>FLb8w*3{?~4gh92N1W z4N2>sA=Yi(u?^)s$dJOp*8Q0dsSmQ=RsX*-7!CsPj(heJJU6ol_LctzF$gU%6J(Nq z-U?%a(p16Ioi`=|pZjNl1Qs(^Bvk{IQBIo&gjE;VF9S=IzrjTtXID{Z`H?zSw0PP1 zoHBd#Vl#6MeL2&wweD>cSO#}-NDh=EeH%!#rv-h}&Nxr`M-eI=`dnH&cumZw^Q4FY zN;T>Jx`9qB%Zno=uM()57>5*9xM_y7>>uzoCUuTj(Fp96T zZGN}10839$Tj7C#Inpr2>Mf3J8cn%P1$dNEE!T_7w{o7Gbr`_Pues17w<)Tq#TPFrCnL87odtq5@4U=<+)Cq<3PY3fX#P0{C<-u-`f~-4keEwT zYPEF9M8VomBK#B=Ah&Z&L2{uv!jDI7bNQ9fe!%ld##o8bZ5V7_@Yw$>o71;__jvp_ zOHeuekE<(fk^5Vn%!$6h#w9gS``UmIV4Y6U&bIX-j6{J^EBnSF%?4Xe^MnyF(Y%j6 zX_&#t)a^FSH2p6KrkN+c(X49ZzAw2O{+aAKT^o@-<@{A6y^D#jh?NKp77-7GnywP_ z$6WgyeQnv28Iu{DC#{Gn1L9I1z9lO0xn~I7Pz6+aF-M#*Uq`?^mV-uFKvnOC6^2sa zp~(s!5L$DKPaFm%Aj>*_+1bmGm(X@*%Nc0 zimq9U1HPk{u?YI_C!bkWlZSaU-9ooC5-*m2q-SAPx!z90@xis>!rx(=&)q*2JbN+D ztS0oAZ%WMbcjnO8!;9Y{?vWK6D$cz2BlNc=che!Ih4T-N>0u*cmx?mp-1LILL_VDV zo_H1aOB4oSl&H}lqE^1Q$-x{OJ9qW#;muzDzuBB>HAn9bt9so>~+vnx9jb4cAcGY-L5r2e;|c7wt;X3ZAgJ>?|Aj#qF( zU3`5bd9Z08*{fwgjrkja}N0huzQ->k3FgE zj_10k9OU9oTdj3%BdhdR+iH#3K?zwtEi=hq3U1Hh8hu+sI8M63c0P@{)1C7wkOCfz z!jk+0pBk&tQFMbWw z^uzb*W>ZtsyW4!OuG0${fXHT z{Mw;z<=sF3oCKk`zU21s!AN>^%>zECMdwjj_tK|PqynXgA+#rIKmBxOWS#4X`gZ+A z3>&{{{oIkbn7Zm>OIkFI92wT%ZJyQhkhZLHvl?K$?<%F^%deZ%#s*f;VcfI$1Jz z>)j$=0aUzT@3kT?C?(}M)U;R@z+R_%3Pr>6Hs9vL)-L@p!i0{Y>1!~dwHP83Tn=|f zJ-^>(8ZOXT+j3!mDLrvghQzu#Ctozr)73Ehldt*)`&C@3+01V;UjI_g^_ts%*GB!* zynEi&ToXTWtbvW`#?g<35hc9#yq>w(M}5q_Xlk@=xF|42LbkG*fifP|zL&a=*T$UZ zNr7O!r2)_3q=2MQlq_a%Z~O3Dt2eE7V8I2A@BQUa6xZ=9$R3n-pYh{x(>Jud4!X{U z&}F3*`=!`bhOjiECj2K4(&^3@!dz6aa|dEcn)d`H2t=WC%A{{YyYD|_F30iM#?r{{ zY9n0O(i|Z_M2JYhFNwHuz{FCR+RA0v+wAclgPt*Zw8l#2hh4zr%f6fw3aiYm+8Wwg z65|!ZxP|AC)-8DCL{zHW5lQI7y2LrQGfu(M2XIZuBy+sj?xIP{RauMl!6mY&VN#FW zmAL(r>G4eSxk*|w9Pu>!2PLcXjRi^0!p#=vl7M-wnf`j#Ur37-2$iqhnehAH1p8`7 zu&$3;zeazh#!yPp+^v`Dm%AJHffM4r&xAj2e2GKnnk`@by#9X&Bh(%Le+47RfW$B@ zL5_iMr=kf^f>g0_%2r@MJWX)M8lL5(U9W7uhvKu{FcZWSCe{R92 zW-RJY)V)6E>;q-z-88wd3r@~-v4Fg- zWbcctbdlqiQ92S*LNKwn;+WzW6|zjJW1A~=N1P4i#@V%a$Y9e#ht#apgHD(hW-Yj4 z&QN)_3FL1I@BAr+6bJLQ&q0T&IAbdHtoQnz?zH?h+y`uZW5omIZmJAf3`^$9?wU`O zh&*a)I&09m3uK_5e#_}@b$^<=#qQ0yyZ>f5wQSQQ)owVb$qwqI7tg@^NV8(*r^x?e z?7gGe{{Q~}*i}`vO6_XZDyb@3D{7BgMQt%lsZl!!QMHv)YKy&hsU2FaO{ftoLT#~$ z5$l`2KiB8;y{_y0e&_f5-^p=aCp@38$K!s#-7XA@(r1uWLD$VLlL5*gCF*zdU!V4hwr!kgt4?oVwB#TzFcMXs{R5-(VW^%`8pSY(aXv_( znmf>x%1qmn02VSql1+SMx~?BP2-u02SHzRDHe`H$dtp7AyKA3v>f^j^(cqStVfF`+-b?uf6*+}JM*lSnfdseJC#S)5Z zK|osxnwO~GKJvQ6n-Mitj}BS`yrN`@&@=eqxgUq5q#P|bABlh|DjGS zy2**e{petp{S&OdpLVc!q@c!EFo(2(1bp4@aJF|vsAsI{^h9&PCbu9(cMyTQw zh(5_4Gn{j=To^U>pF~H;u==-Yi zI{#FRUf%siv!Y9@B%L~7md42Kmx3f^2E6Lpl8GI3--$VclBhO}XP?NQ6Vx;yY3XAb zrz$5cXK_&)vbn&+{ry4#aj9B1E4m)CC4#x5cX2ON-C3PTxG2V^z-Z7)0Wlw9N090+ zA`uLJYuYERP7WP1{sq56lJ=CvBx3#?IV)t{Z&uVQq!&z?z=( z?R?11GdYOKv*o8#z_HOqsbAZN2p^ecght@$KD9!N`;uz6fdtOt*`giWNr?EN=6 zGQz$;TGda&jt=uc9v|WkDhjvV6Th8B7zpN2&2j%q@;HfM^SdkB)tFQitH=(ou1I5A z-y2JBM%d0BQE9#j%GMZ+@^-+-D`IT?M7q`eJo`6Qx*{Nq9@&l`kWcel1q4c2ZNTG? z=!RO5cR9@G>b$OUtL3fWz~)x87@;E2L-bSrdhU(_hI02idpvmXii;PYH(;s;)icA{rP_DRGgJb32PJqeXm6-G^gi3>VuEQkZcc zz#NJOe05F!e2|Xb@fSunz)W&HWy>GyF1+ivd za%dI;95mN0G|2Mos=l}$IHFMrdSl;{VniYx3~#J96ii4T7KYvJxtE-b{t{ z%}H#l8i$)$ff)xMrv1CGaCfzFTdnCRckKHr54XRE(69Ps_PXcC{I1t}?&1rv9@{Oi zH_~qj?-Z$^Y<5E15oa4&i;j7gY_spnUIu_ie6DXlAM%V#g{Tt$)M`Qd<$wVfmHrvC zRJK`V0Gk!6Pm z;t=4g$NE<&_}396=k+7{@9vGXrS_!$w9A8Y_hty4fdVotPyk1~aqLvT|8v&8Qq5Tp z9{7q1qfymtoaA$iPdC<^&$1uAjC{S~twR7UwoBAA@<`^dthi?VJx%|4e?K^)BgEMu z<}^=()Er%B6oxqeW;?_E1Ixb=Dv77e-A;!aj%(-s)9rAM+H)Crm%y=;`m_pxukGDZ zUkgo9ga9N5idcHKxi>A~8171;Y1kCOBNX(}L>xLRCtH<^t7U#xI z?;K+ZVUWjTzcmi&=rr7$JNF<>=COpY2+ean?CYyQkd&+|%Ks*6Z`HqvQ@G~GYq$HL zo@S7ZZ%~Q!>HXQe(2+c?2@DyU&<~6oZ$UE_hx@>f(5m0$#peU2%iAXcD_nmh?o_Gv z<4x+El%!lWHpN!Mv;V>t@mcLo!fHa}|D!a}_POl-qgbC7KJ3^}TpuO39DX1NWGu+4 z{IE9-cNVS_i==dqj|be z`%EDf@p~F*P0@DVq7CIIwkufFxXy1ty`_h#9_%3zkWu64{5qflAvd=@c3X!}&Y}Zt zTFTT}lLB!R>31GzehY;>Tdx*2suJw%{QNvWu)St91%Wxgy9b3c)>d}#x zWb@j1t8R5XiDFPAlv!pLtpPrFXR^aK*s&qW9^|tPigMSS-gDZ%M z3l9+0pvr}kyey)ABSKzWb!{V|hM^QHXnBuzfv6XFs86gTMZ0!~h$DaYqhQAql2RG6 z?DLlqjwS&uOn?kI8Efim{zc);u;m@HgdksAi-^!^l0xM$`5OCt&n5tu-@m2o%I+FWFH5z%lwD#)v>^S{;k!v9=1b zrMUs+Xjea?`IePBMfyQ#w+e2+5U>Y0f^_@{iC_Mj`?D%CH;e0XL*@hEn=8W(|5Ezwhqm{nny^0{ZB4E)2L%nd;LiRSCQx*>f|ufSsf*%0!e|eB3UH z+-1$D-OF2QZ%W(&r_w*~_DSvYYiG9x2nB3k zE{A*)BK$^szxxHxxqqr3_!Qtg&K|g(vU1@_`$Ut)(>QD5R$cPyGv!Pt*s%m?dym)S zI3|Nul}ABDeR-=DCkqh~unJkA^ez2o^OnY?tt%CW`&6JwwP)=o9aS0*p159I@Moh2 z@;;JVVIY4t%Xbqd#LM+6#oA8|f{a7UV;_b6Rwr)(`V(^|#MKxZockot6Up6ax1@Tt z+i~+^mWCsoZtH3IArC5fIzMJJ=B?*FCC-b%v@wa9*9HA~d+{I_?4`&N-B0nnsk)+; znOs4ywb6-QoIqgmEbn=_$%@S5X-b%e|S+vDnh3V9w21KHLz=8_+ZQQ%^ z8&u##NdvpX1qJK-4^ei{aTFVmrxV_W^yh4IQfr;qw9RNLd`T_kKH^=@GlQVIlkVS{ z>hp_ERxk5*4zw~hL!J3$;Oawq^9L%jTR<8!mON#;ZC{uXo1wGDlCT-o4Y-a37i zT~(6RA-0TIEX$I42Np%#9oAjfI`(O5VD%^8FRh}P?T1>>PDc92LEu@gw@9lR!L9r~ zs^m)x{#{zfj!m2`rl1(_vLFJ04M}G$ZxgaD6q}s)Yf&40Ha<9|zK8o7`0*9;yRxJI z!9Ew_&v$6l-q*m>Lm=5}V=`uNjcPvY@hi%)#~df*b6?S?QL8Ctj}A zH$<~moj|s6Ru_I|U!D4;Do3h?{^?v$V=H7`2K`KJ#R%l1x~+c zc(}P@su_gK3GeoM3QjMI(kRA!vAHaqSOy1M%nV`lvQ&;po-j2Q%G(*cBGQDspkRw- z`(i6^9>1HMWkE4tmVDt-rWVWZn=u4-bXf`e%6meb@$8L zF^;cJYDN|&aC{-!scw4NhY0;mE;am_^qmZ3qfDTd7u%l#=~jpHPSP;nwiMqGrA$$) zvsYW_dXzn!DR~R+UCuh@g9iwZ8MWO06u|#ULhdvb*0THC*%r6_z(?72Wtr-bcTXlX zqV7(U3|ECCkl6tyR{&qi(NMO(-S{-OmxQ?t)|`7jn(6Y6j_-CGk6=IPY#@~5BH+|? zi|jYTUxyU?rcPNn9)2p=15x~0K%Mb}D#5k-ZO8AW8!ngjOO_ASkz4svmL?rruzgOR z#dO)D(a(K^>MQL&3*f>?Rz2OW0RLyPiMtEQkb`iK>|zDDIh?V7I(D=r`Fq{Q8wRkN&xTX))%R@Gd5_Jznzzp1CvP z34G*g#H+H16i}KhpFp54Zl0Hh(*de@{W`uYBpDJF66uj3g2p?Ox=)Sf{fGv{oBJ;AkKqtYA14PB=Tj&Kk=(KXMfZ2oS&(u$Gt#nWi_=c=;$w-JvJX(5LeL*|x3|xly|a zy`|imjw`BlpCVOUPD@{dpUy$9?3y?SuWD*Cxy50}ssWArJkA#`-r6gnSO*3L$D*jH z=%IeHy z>62v=xjm|jjUV#BzNJcHm<7;8_2wC4`-GhJm1P^iaW!~8^KG!`X!f zSKNx5f=vxemqe;Y2%7AGOLc<5dNrA|S?<*6wB~X>nPZ@RNv%*eHlXYg_f-G&r+YN) zkq$HxY4vG8a#I{e$tQmIoQW(~?tFVAx)@;l#)v>aL_u@Pt!3+y`n9!s%hqiyUJt)E zz+(GE`2zmrft*b}j%&QAJDZ&i6z81ZWKPU%6k=53c13AO6R2V5tnQ8M*g19dC&5;Te@*>4{Y@VN=MIIZm#r~KjoQPdFkXSoYZjoaz}Uf z+PAY4X6RyLu87w-YI&?FC_QL>5-MGk5l+z^{<2P&WCpzpC`VvEr}k~LarwoH+1H34 z3rzp!*4rO9p@U^IlppdEop9jZvT}qN{z4XbHjme{&&PL_jlDMYoGL+@xWmU+fNl9- z@4NGC()vD+0`D0_PPpqP*~&aN>@kel2;0`trFtnNm3`bJ?9A+grvOtm*x>htuf)ct zlL($8!n*%hD;c#lLMWH>6xY`){lo6H`5Q)e`a2pxeX(ysrzG zw4U>Yi-S-016MN6M@}Bcmr(Y8pwKUi8n)FOt)r;FJKu~IY2V(x7ZpejZ9&Jp@V<0p zN1dn4X!Ch>2u0psi4vO9^KTx3Nal%jvJTEj+t)|_!dv&ff-#&9m=)6$+ zE%wwF^nT(?VBr?sDci767RvF9tVeF+=lWwl{nRDYV{cFZo>NfJ+J4wJ6pkl{zugb! z^0j1+vtZbRiop4MqTf66Rd;PH+SLX4-;oh`+Bce)b-&c9mM$G7&B(Uoe40P6ePxb< zaQ;efGezyY;?jSf@NoAbIV=Rz59?mY7(<%$Z>8Y$QHn*)%E97(EK9xxs{6$Kf<4z! z=IpJZUZHb<6Jv^i#c0+L(cD&b>*Y|;5^O6V)9YQddjIHczFM{Im<~{pB=sydzvC9f-cOcz!y@`S2rnYIBMr z!)%dIb(~c{l>QghT2|Nf$zfyD&(qO2qJbO@VJ~(CAQAPFL`0(dS;+J8`}y5Lsj}{&-#~t zwN9MNYYxu-PX8~n;AKL+H4?Jjdn|3uERyX65tQ~ZgczaavU)B~IO~-)3>#-^APu5h zM?R;a>$+zH+mF~9IHw;R8_Evo$}V~DyUew;k5k8jCRY)QP3H)qDjTp9pp$V1qX50M zZH8KW)mAtV(mk8K$ZWq^KL$OdOS>VAyixIXY0H(-W!V7Xs<2DhQ&enA=AU_08g#F) z7lobMpq68O7J9&U_S2obX9msVc+@#+L+#dLj{lYs`vruc8avIV3W_QfkN5DeU9nbCk1kIRD{DE^#afz zNdfa4TA+JcI!9bYtcX+EucH)fnyjQ6Z}!#tU{A*dCe*d#eD4o4$_YLa5gs&j6X~TY zb^sh!16+ug2z)Oyrtt+W#Z#%NQ0b0Sf+hfChe8jAcxu9gvdD+SIRWDyRvgB=-0v6$ z6i4Vkoxil4CZrGq*+JJ&&fG|hn9(lE$Q@uFJbe{#Df^LgsipcBKal`M&q?=*8do3( zeZP|5WWTpkkc$1GuJles7gY-Lyv(KCP-2Zv5ckPd8?6qQ3kT>EJZuj32cd{jSe}eJ zzz#8vPVA}6?cq2!7O6nR2u`{sP)G0D*V~-AD0;4oSMz>=L%q8Vt5M|_+!n#_Zk|2S zenPt!^FEg15uUnjeAP<8tqot!T?!#yCh7;t+;X;frGBIwEzLbdRX!BQu9w?RbpzSIsJi#;beq==0&+Z&{ja~<&w_isiqf!8gsOWm;10#1Mk}Bffc7fdUP69cC zfdF|F$7 z!-4D(YXxI(rU$yP}>+a!;dGW8=mruDd-$Js^UhX^M zKkaDLBcRmRmv@~GZe-4oL7`)xPS-|kIP_hjIVg-68oxxBbNanwlkomY+jRbO@c?cd z;X1SUbJGUIo5T7w1$oWAoGgwSr{$(OH0@Dpv#+&VwI?;uP0i0=AgVwv8YFSxIQ^E!cdh z67;l2VpfgvNSzn^9zKd`U9@2=e*DU+4cL^-|I#-#y5EOiXqu9Gxc!dAgp792{P`Ou zKJA&w_VFE~lAaim0#{Stg-MU0);HEb_Kg`krdG+!4CmHm;vvy!pv&+Z=# znO#Y3%}yjv=vFrHmGNOkHxhRa6zY(#O?R?ZEn0>~vlbO1A6z2F*W%%rEyRGntT9Wr zbp61QQBy_Xo0y@OW8%j&0u@ZFPL#EAFWXAmhVJlV)HA|IZ)dkMgg8xq-Wmz@Ix6%A zIvyh%ycEAsI4R5obT_XV=a+jum8eLQW((8$m|KxmA*oxBQo*m1Llh- zaJ_UjKuL*Q`z*}f%_>CXP%h01EDN&tXg^%FR4}ENk2!)6U;g_ra%nhEYf3OT-vR%q z&0B8HNqQ>2CNBk&-^dUH9;D|gvzh+F^<62ytqNBWx!4qy+f z{QNe}sz4mcc_0K(;U-4nPhU8q`R$kEJY0YK*s;Z*`Y(sjm6b5>gOSbWw1055)}*S& z8ePgLU(B%D85btV#g*(6e2w4VCf1AnIm&KkRbt!K?|Z~Px&%wz8R#C^{{GeBQgDM7a9`~K;1;(iF}0>|#YQPYBQSi`rpb}}ZRIN>X5hnsOI z%#q*Qv9H0adg5F`HR>*!hvh=(dHsZdxE3WK75+-WcGUhF zOXU{{qNa)e=D1w_$8ni*RMlO%JTb8R??^>cH>7~De(Hn#m)>$ZouId*RDv#a!lO%% zLqFl)higAQdO1b!s2c1*xHN1GZ1Cnk#$i)ok<3sz`run*Z_H zKy{$Ql97c%cv9UUHDJw8WK;tNF^{c!k_$oxjQuH1evNp(2aqiOD8I7Ed^|jM zq$sJVJk!WJ%$9Vl%CYPZAZR_|P3F9k*VuT$8I1$h?gf}6^L_Glfp_0Of4kpj#zAJ^ zdNSFKfbLYe+4!^fi-&)lIPXrpP3PhR0h^&c}e}$X9 zCvT))yPX|CY;;E|_VJgRdF!-mifUl0fSaars9s|hVgbfS;>j$Nig)s365vj!nv%kd z&RNliqm2L%6`Cl=x>Fe^s#NqqUhE|)lsbwdhvu_Iq&F-mKF(s6luOlp?LDGu2N|_? zsh7RlGOvQEmY?_IZX+Q(+xZM4{el`47@->G^w%cNh@AZ>JIe*&V>ShBvD}ZlEiG{5 zs#HPYaL$!~93meh8V0x@RJlsLfh0?0GBN>n>_$}yX;T(+O4462agwzD5D%^*lO!LI z9)EBP;2%1c8VPj&lJH!9C&n^14x>V)gi{6q=4|dZM##}*R?Tszomo?=nn}*Kf8^k} zuV<<3GNAUT9=1UI9YZyFQ&rkU|JEm#TTlQKQJ(@W0gHw!I+T(sGrAl0+wDuQhhuY`eXDz}KZ>(NB9U=5&w8q=v9 z9=W}Kw_TX*_igRVlSgsIN0X#FL6vJqcp|&6=7 zJopi9-Ms1gwT}Z^LX+7Xqj^g*z{wNiUH`> zg1`0b%IjBN?1(Ym%Ht#v!arZ?Tk+&bka|M@z@@P0&eF#CLqkPAZlDNF({rUi9ydk5 z`L$88Q>bR$q2z+*i0y4D_-%-dOa39J7I&Kr%J8Is1c0IvhN#IWz*^7FDdIVJ#5EzXlJo?yZEHb$s2;;k`VjmIEvsOAQz( z7t-*>Ayhrop{0*EsfH@ig*gRt?wrH6N_mr_9+e4k;xp)|rceFp35Ck{ODwP}ek+Ca z;WN_`b9v-JKh18}^GxwdPP8UT2{ZxgDpVRoardXQL+tckbFejho@u@@b6hY_e}3Tc z=}t*fo-ls)w?9_Tg)==5yQv}BA@w>@)_xb{o{AKC>xbRYNU)B zNdm3+Wq(bc)pxina3KOIdztca^Z7fQ$k@D()2}KPuL+kwKRT_8M6z2@2jTBVYeS1p z?zTRDdIZ>V=KS-Wqq{FZraoMlgVXmLq?*EtqW2)l=Jg||Xb*O|was^0b>VT&l&0~l zYVNFq(`^Y5t-TIv3^Eu;LCe@Oe-v52H&|dNS21e|XzO$q(Fwae%x0|vvX2&` zC8iC@R$AgzCUcM0(3;K`=w@$(bBJ9%wxzpn@7$rwoJA)`KYl>*#+IU#OQo!F!l4(G0ipm1|5mMfwbqUjAsLN z`@*2l)*)3zghb|PAI}rFUsH96EZ}paxNbd!(2daFE=&v8H$5d2eOkbB$JE_CW6!iK z2;Nay(t59d+Hy!;0_YI=ZWcpuGt5n64m|1!8}nyEAPn}OCBv%pXr?Y<@m>?;$GN2w zRG3uq*FK5SCfFyB|7D+)zTW-MRz&#X{NMJ;bb@`d;lJ#YH9ZfT!`0BNd|J)G2j}fA6x&h!g^FIonJGm?on+-5c<#M` z1yl;XSl7Tj&TTCnJiX>OATJpTwhw4t^fHq|x1C;?`mcCUsh(On2<`#~VX8uR-!J_%! zy@$!xnM}1R=%r_Z^jW@C2k%m+4E_Nl)2ClRbP{&273b6QKkSp~|JWzL{l`AJIg=%H zN%Z4rl70xTGFYLAT$~-9d2c2|P=-n#=HoyeZWj7k(AP3aG#*JbO_{CfL3RXlH+_5D zv~Kt4>k9~4Y)tTRNt+`zp=^02Q%o3*XgC-pERL)tqn!Uv%V1+vlYLV#5{QJyv3Fn( z_W8}mqY<~iiydFxyx$!VuQgWcl3_TBdLI&>5t_~GOD6BEWWWvX|K7u-GunY7Z>f+ zl%U0N!Rf-1WyCO%S-=|}hYzZSEdE5(fR8T+lpMSR=il&8rG4fd3Hf5g3rL@TRQE_H zFz?#>dyBFp?#FS3@2q5l_ai=3(KWAq1o@KXKLB`7Js<)RH&G4(t-YZQ|^Zfy7M&~S83;B_=D}|F#nEb*rU;O z#oesylP=X);V`AK@BJhAc#==YMY$^^PY_IvrxpO4?>F<%(Q^ApKUy^O!EQ5-bXMCR zPcO}coVQV?8WsVp``<0xiEI@P1T2q`xXHMX1+ZJHt`h@uV{Mp5dU^fOZ%C{ju3kU5 z6sVSt4+msw;}$7F*#X!1u7q!S0hY<;R=Q&;oI#2z;h6NkKi!P{q{9KZgM1So3n!uh ze}G70Q7x~}or~OuTz}5gVaKSZ&09K`Rab@S%G1Y$(AgzWRF+@M-_n69^x^r z`^OT&KZ#t3U3mRubk~wS0GqXXpp>3-Kp)AMAl)Zt$@WSe$(eOYR6lsrKjscnnbE9q zxDl8_Qy~F4vP+R2bz_A3tx|qBh#nmw$8b(P?{{i_kF`+mq9>n~d{@Nl&`P^2HqwPz z2jF{Z9Av_Y-2dLMjqj;6CP}2&ZNIJkKsI>xj-aPiK;$hN9a(ad0D72KQ?3GKVikXG z(+@q;VQn~dlpKiZeHQ01-E7snq^o%)c3JA-GIA$(K}=tJIR#+z#O*MP%WLWL91ka~ z$&9hK4gOP;nS~U#)=JD*)ujDLl)>V+97V4R8NXqY^aWu4A``XVo;*Ij(SRzN+z>gc9? zoZ(Uau;qS$R#ts(`)JnOUy;V-r{DsUuOERC>tIWX}U z__Z0|+8Z7uRQ2VJ=Ah=55zUy>+s2xQ(EL5hrqbdB$nVh^%RXCnV$||iX;ejlA}34e z(OTE)6AO9p;cFrB17U$ui5*~FX9$$?s8Vxio$9=6cHihXC?MAz|H)zT@xBXaxR%l1Jv=?)CPahLJE@tQBP&XYPrY>|< z{``_w^-`&-z#@G(l4Y-If~85Jm#{9@!63(ymn`orx4Zt0%?aZI_;it}i^XkLasNXY z3Hg^Wa?wKy<(1AM;R0nbHAVeDX(KP#;{MS_DsKn=FKuMFD6bQV?ob=_-m7HifN~Q| z@S1GB&(f5=kdNX>PU~6ZwqDEl=8y1KzJz=OYObO!Zsxv!2O$B_ltf4X1jWtqv`9N9 z5AROzd;jB&6bBZ$vAci&`~>%*-_-oLb+ld%wqquU`*Gk0Z;w?0W$paIuXp=1^2uY? zc}EA=s@f;=RLr|=FBYA^SLdhFBVPTHm0-|13&zLX)b!fPr5@@-a^BTRCAJAba4hiH zs<~#>ogRb-!s$8!-4BYLoR9six3CU-djzF)*$7 zN3rw|e%bRIhbBXLfloVQh*8i6)0qP=d_q-ZyxWUK+{o`7d9~O6$zx>c-NTWCqVPyc{mL<8NdTRrQ%Wa7YfiXq%QLu0iSUzT z%}CAA6>#O+<0IU&)^jppV9)mG&+{YQmbrk(|EZj87A$N!J}qqBe>%Z=A4lxjj?{5- zrTUL5@_og-z-uN6K9tWC*8Fb9{bPz;Jy{Wj5-5t@8wWL#-&z0TigXK%5|4i=w7Ll! zJy`LuGm+Hpr(%EklU0t{tZ(sJUtIop>!YBcZTt`QtzjVwiOTcqDraFkba=4oUrct` zYW-#%8+IumvU%`U-OqN5Ksq_-XS2nGSF+5{fE&0}jF~K40-mPstr0WDnd{}VK7|&S z?cBK!c{#QHJdPbg=A#_HwOQtKYB@$sGrDpx%=Cn{*~u~;o>YI2uy)fXM0c9e`%WwB z-cwH9relP?+c88hb(^ytn#PUn-TK!fQ7R$B_Hn?*agNe{mwV7U-@se9u0SJc=MK?5|-=m8r6HyNiv{aQMjKdnn=K=$f*u6Pc_EiR_?7N;tqxBdeLTnqm4J& znjj7!c8O!&BudPa0f@sK06_-#=7reWy173yT|cmwnILW=;o`|X+!Tk$z`}O(TzeYt zCVadb%uhl%xliv&1}M8yoSzj&@7tJXz!jf$cykXCH}L$~R2(VWoBLyK=}+{Au$9md z_JZBf12xi9XYpMC`XOTv?G%v~*E%lQ#LuzY$dN^(xM=DQpry=1J;kgUwMi1@ppvx% zKoY=Co4^R*R=DJelEQf$>ILQYV#+w@WzLnK)jp7aLE@dvve3Sqj(-bipeF;N&e9*S zBUEfWQz!?h*El+4tLi&?S^+Y_R!1xpz8AH*-Dhii7P@0a@A)U>Ai>!aG5$jdQqCN- zjOL3C&p9lef{P$#I~O-}ngiE#?o_4B_$fGV7$y+)WL!8FI6SveN`%k#lkeRvrImwN z)LmQx(NA`N4pR3LgwL<3i_HkU+mXoIAAl(QbGwpa)t&4Iu1}bFsO0eBfVnE-oGL?N zXZl|A3&1J;9`v#lWk&eV87N>%Sk(8>fNlv{j6Ub@_Ah0n21JIthTb%E^A7F@{nUfv zO!^+=4zy##3M97L^m+q*ul47#4YxcEjfn&tpD=biFmwCK(jJa{WLoTzrmzGV{`Bu+ zLGP8EWm9~!mcr_NpD$>bV2j6&liiV41Grsfo>Ytn#s=p4)PBCE*JHI^;YmUYJ2zTQ z_%(Xn_xE@8#imlZ9T-aY!%i}6EEUYXpUfuYJQB?})W1eDY5vGyuQy%y@%7fy@c}u# zS5N#E_y2^&TGCx==>!6f$Je#6GAMqJta>4K+wgo1SttE(2fR}Y<%dt|`|PbRYP*bD znyKaVrSkE=g!3=n6K-@hyl)xwj_Q0giL z#ycP_m^^Zc`}7DvamCIF)3J3;g~Gro;n`tF1q7NiX&RE25GP~EAiJ{ctqZn$zgE## zid#@LRsNd!>3LK$vFPF94L7eA?W0OhLz3ynIj_PouM2th<+n7GLorr|WuiGk7GpQ# z=WSYsdA)50#k%5(fInAN#|yPBc8dj42cLnB{b5_FPQJk`vZ=p$kMe5c_xbrJ`~4Oo zZ#4-!?AV&$AseFot>PEQs_TG!M&?DtZy2ksvuOkFigUAc{;H-%Bhu~t@+_mjmJo_$jk;c;-oVC`uDrHaNcSEY_i}2W7VyFVh35wk(XaCJ_`Rq+#T5ysSVZrpgjLhM? zDavcivg2G0748VNo&ADPSwWX~OShEIt(sXj5mqHkYqDZggFyW;dszS3`fF$rRhD0V z0f+0UW;aG$QD~4BY^OnHB4i8tD~h$!zfq&VjVO5fos zoJ}7O@$;{GMr8Tzv_F;3tbn9L?7O8`a8`FCT`;t?XJW03%xfvT-zfWcWbO#Swy1pJ z`@0Q=`)^g6lrVtwvK^M{XCtd*KPkvHP8H*^>&K;Q;(*JmR(}>~JI|kw9W}&jnv(83(GA&;?J9?UAs2g;64wDI?MyoGo}H?w>&Q5w6aKe}H++Sc zd2=n=Bdte65Jd-c+ zu(@HQ{K>szOFGuOoRf`?nTH+lnyMQa5fFsGRvn-$g1oi?SPsP)at7aGERlvS)~55# zyW+{nszpJT1Fy%3?ibx~QBUZnx%=3zF2z;(AarGlLV}IY?<6xfMbK}=gzpt>L6Pnc z1zpD`4JMN9r``>Kyi?$Secqt_AJK!lHc8CM~SX0A4B#q#)Lo^&(n26FG7hZNpEa77F|^nQz2stmm|@AUu{c#ogg>QQ}t-+w|t z0=26!m1ux`fjWtxvB_VR5!EJ|>As}Ja+s!?4(RZg`&g7iI!*wuh)|d=G@z8p?aS$h zjP=16psqc|Yb(+c2|71<(IuW-1qrOPcM<{YX($itHfZ9e8 zK3x(HtEd@_eO2B&w%fqpL{1S(Z;n0v(rd z8Ov#NL{C7`B#u6z1EoUChy4Z&Z3RGS4Z@o|N-(al`$1N~cZ+4x9dB#dy+5r{DE{8T z3W=8kopvrB5x|RGHHm_)b=GpH13P_N>r6A1;OLyX;JE%`koX8nJPF@1x|)T?k0sZ~ zJ6mfBERJNiR)8+}r5^Ag3+)a^(;+IFyxQpwhF(sb5*d9eYf~=BcZSC=wWmXO)~lGh zo3!J*C0N7+06*3ySKs3BC8>{_n~>EgMR2oXUpx);J#XkfB6bFlw3PYS@!6AQa&62c z-RV-pt0}Vp3ne&FKg#)~p_jhXw2R&m#oM>)>C&6&N2yZBZSh~r2Af)g!Y}R4c7bAA z9N`3-4`JkcF6}~%KB~4eR#**kb#x|#57LsCe4pT#y-c45rEq`>j)#f8^H z-2$rwT{hjh*rQlIdjmTj`PF~1b_!Q9=kpyFYfLSroaJ`Au&peDTn>-Qdd2IHCZ^)G zxNgd@AHY|2TRrV`P|CP#BPX&IMGXY6HYh7Xxyp%n_K~1*&w~Gvd#~4$dLxuiQZL{C zeb%jp#m%2EH9i#Ru^q?OX%-w~KYX`;5nrD56kqC87tm08uTKK~8$6W0Wi?GGp$I$Q z-fvp|4}sJR{km)dx=r#@P_Vz?>+p37l z?pEJ3ft{T7MN9>V8{DGg-13${c=mIKC~REbu|R$EVTNQ;ew#cs_d5@4))qaHY|1=n z|6-D!w$U-8;;?ePY%1BO=}iOFATaep`I5Sej>SELGsTZ$U9va{Lx<7r78XgD4C)F- zo9EhBUl26*KqGzXBDPm1;Vn|lXV9>)#xEJ>+f&w)$A1ltRy;{fZB+S9DcWA~p5i9$ zb8)YTliasx=P9|qkoK*JH1Fpks1fgsVFnI)@A(!rBahgcGamE4wUhZUXaGW`zU-z8 z*_d8`weR)Y<@8lv@MEhG-%wfhtcg55GkbJ5qD)YdqE5s9iELc$E2*>3?wj8%hHdC= ze)VTdbrn*XO;pZ=o~GftZLL+Wsp6-w%Q6EbmIcvn@X zQI)#q<}Tm-xERfx?VFsw* z^;?dwjUooo?;h(~9+U2`Kmy*6qpa@j?~ErGk0s=CvM}5w(2e<`q~-%*`>+l0_)Fb3 zTp3_qy5pyjY;x5r;t17s%~*VIpS()1tpM$|4Bs zb_&k0c{}bQQ1_(64&P29TiHnToC!{D2fa`Y-D1-c*S)r;W^wo??3#}mgo>cYZNHUl%hVr%c}X?G)D%) zwp-D$uc!m=k%3`dBbXTge!5CGe<*j%l^M!#`^xI(=QWIs!lO=vs_`Zu#6v>j(t70M zw3dAu$S($1D?zAJjAT9i9j7uHPKu_d=A0P`F5agPULxuzp`&0x{HBrgxbXckNMl2^ zvBU7>LhG_KHmTzZ)+Z4)dH4Y-y!bkz|zQ83>^f}RsmtA|x%5HfS+E3@h z=$bq3@hR!`c@B4l0U2E;VkG=L!esT;4_uSWgUFVtaJVuN$-qy3Yzf9Y5 z_9iO-L4_J%+9C~3=GgJ%^(7$4Mm&LUys9=SN5bOc^+!hYkRuh*(BqEA5I?!=Y0fj; zJN?s0kc@asHkCM&4{2sBJZ26ujo)_=aG)aqxIJTaD?9q5i}YL*Tz?Q6eYGo#I4*lp z?$Kl&cvJ13L#kq!BJFijV{c%=h^YaceH@?6;rZe+``Ng6H`sg`(9g8?}2*y zT&)e^SgOSa0;RdWa!$lpnVY&|DX_cvpftpLFGpo+YN2&O!bik4Q#54qaJBqQFl?vW zA+vcVY{-3JD9JIR1(fOCY|X*>8E*~s`PG#NLs|~X5I!dM&w4qgPwiS@AUWlh7m8oW3=YH1cPzkaGu3@@_6Mv|<`Z3! z8loM|a|WLrCn6s1y133OEGvMc$hy-qCnVy71$HlDkb8Cni(MCSL_-eX%jlDzburBL zm(q@{M&xK2solqYP?5QWtt5c3 zl>~%DZExJSW`WN`1=Xq(-nOSBkIEW5xD-U8V4zZY(MPX@pOLNtlbjY0j*H(_tQSP7 zeJsf5v)32;lX)`vjlY<^SMQ>LZ@$68nLqj}z|W9CAEer&=^Pu09m)Z}IQWwKMATs( zzxe_6mhBL-wov$;|E3!eBlXr_6LbQS*`>LX@yY*tv&UJm`fnE_B=HHvb;??4^o`8A zeFUF}zrO7rhgiw?HQgBV@@w&)rcWf7UN_)?mGr%PE;nu|+w6L)5-33K2tH60Thq@ncBFI^$Mt8|Jk@799((x zycAipW~6D7c6zjFm09l(Z(cCWwuC(3!*&x~^-Zw!9jQL7aFO@Pm8GawR>b~c=OFTu z%#S^Q_N56Fh7Vfaz7#PwJ!;3AlOk_!tR4ccw5N9JGrBy-;>$4n?h(iCZnsdD&{wUk zJ;DQ@zpQ%aXUr-N(`2ZNO&n`N_winZVwTVNzhXStqb1cQck;YO3ohg@9V~bQ!XZQw zzmC<)L@2FgZok$)1-&p4gM>G4dv9VeUPoFK=;P9P3Z#2@K-!~*)bied;?HB@#oeBe z8Wq25ZLnpL)XvV@Ld#6D(P;O96YQ2C40cKqvfXy)ALau7e=--U_Wl>;?9pc{x@Sa$lYl(d?V-gh+WcQ zQ}>&vAx7Bx0dUJvRVPr))EK2M#c!lX_uP-Q>7poK)zXW&=81d7_E=} zoJly#`zo*m>W}6a1AmQvKh_8rAG zwFT$nT8>REA~{D5GLY4%d{ti39*F8+1L_Bo|n0A0uEBio`vPkx|4kzV9Jg2~LOsRKo0U6+KGL>fk*CI)?^b_H+ zrPmW0s&l4a-!l?dAGb4~+--Edj`!VYw9~LS4J5cmsS#(K>2~v5@yK0TJI|+fCmeqA zJb=UEvyHl`BXo!YI0Juc;!4?7Ftl?6Jm6^C@<^aq&{rl`&O6fsa<27VO$hYM7GC(- zx;d-awzT~|9-Lz<93bp|v>yKbUQcZ(sj1Be=9t*>+;;+jo;bR|MPmCB?{?J3-L1D? z?F6}Wa5wk{%w6K=O=kn$f!+m>f^4b98cxyydQNop=ssYd6YhdDr_;CUL0YtZpn^RvD0m#s< zYkt5rPxjjYLTfj6!BOqzB?Tidmi>>}%0ZxX-fIv(SJx&Gt}Pl6PNDH@gt%SuYa2Hw zWJG`hjs!}UBk*h}1-Fc|96_ir zh4S(e6@G;wa($nD%kt__e9;#zpnV?^Rxv4igmwnp{>=a`fb4lX*A~@bW(XK!cF@tw z0B?jZqa-z|y#Pmmo#hrm}E2c7LGO-F{VS&!eQ?bS=3cPBw_EooL&A$=iM%QJ|544;C8~ z{#&WtmaS?#lo{;3!0SyJB}AIl+J3Qr@$HM@Q$X)3#J@T@4E&5-6dZk}ABVaCO6w%8 zL^wRvFQ@+C&$Dz*&AAL*8>VYRXhUJ}3;3EvqV&^B>}w#(gz)Nf26Hnxz0{t|aFiT; z8Q9xxtCvw3VC;+u@-1_57+)g0#x^B>v`sO!fraX-V}$p5-hhChjUdv8y-MeRzOWyp zpyTg^4y3>bU^QBD83(s4GFPcnvW)dC*q?H}QIu-Gkhc)hF=u0d?aU>%_queCUp?Cb zzCS^*NY#*m+LNHcdEH;?rTN*Ry>~-zncrX+!!(m6Lh7nMy^JAe}{+8|R4Q zH~i;@(Y|{f4-MvX!wp@#76M+HPtNVc)}Dn z_qzgI^N~GU$Q;6<^-<2iH->2Gj`|s8jIb`wr8KCJgCjYbAUJNQ^}C-uqv71j6UDg2dz^ySr4F`%?!FX5Zj&Wbl1!RfHdOe1(&^5Sqr@NxnhHt<47b_b5O zH7~9LM2bhE7#Fyx0<7n&3#X4M>-a|ys#aKlViq5=O>N5-TVjXFBvXaUgs#^g!P+OA z5a-v}#kyO-zZdILh`*p?PaB(giHytc^5Vi8SF8i(FI_Q!z~ILaqV2n1o6;VKy)CA- z){icc4o54-RHV8v z`pwNeaSG(_9IK6a(149KdpF1_6pN$!J3NF$GCo(7WljXs}Sp8K81IgUVKQ++`#MbI$Nq6d_57IG}1q5S#O6ay72HPOy{eU4PLr!I^de|{IhxB z(_8gBGt0ya5#o)R2$?$egT-fN1(?u{FqvBmFxLQ);P0 z9SfMHYg}^+iH`LDY_aZKukxWzoct3>A^x>lC8gLeH1n&!aw$~wq36e5N9a|Xql+u9 zM_8)IKKu|}jk}}>hsTLP^OQ$oP99i~Z?|{HF~V^mCjj`P$80*{v(;MF8XsP;R_ETE zRe?*tBs%VSmg_N7bhX#IuHz8@?2R6GgCnZs&Q3tJ9No@u0YATG1!ljOcP`v6Wf>n8w<9!!u?0FI!}eE z{97``5uqL8Xs*gPz&;>eS@!d=pY(vD_FTJoU@JTEZUhu5Yd~%6kd+Bo3>Q<0 z+rhgKWXB2O@lV^piKBZj;wJs@2|yM%BcK1nF^X8-WXbw^rf)ODcY{IU<9+<;;+q4G z8pvWmq`!lII0%pJ#{8;a7O%zuZ`PRTjPy(jdw-h(`_H4uh9%9s*gSC~o2j0Aa-@ft zsC0T6$fsWb8~rrKFKV_5J4B9%hHGa9kU|a)%lMh~_n|VJ^%WOv%2(P7ZqBV#fG>CY z!*4WM;p3;Vb0OrUXURVf+U}5m$1;14fFJL46h~HPTIT?Ms8D-nx0D~TDP3r@c*Bon zMNA0`Zg{YIfF#)z&TMkHQ~S+QcCr-!<=7QxvmSaX-R=xn()uuI74^mF!903_8S2Yc zV0XjKa}@}pkkEMNJu9Rl0_fC}b;xgHL)?loTz{K#VfBeORU(68V*g+hfKwy9zFf=r zZ2AR%YZF0IoMx)ri~{AQW?-|x#;Bpjd_L6xg}vpO`JuPa#bIF25KcBP4i(gUoivI$ zh||pd#eg}2(iyZQjs{K(-Slr8&h&*5DorbYXTN$fNv1td&Eih|Q}OHMF}-;dN-8Jx&YQ4Bz<6}}rzAZB0UmK@5lVb!~mzq%6(YuIn;n(Ocq8dsv=oasX z%|j0N{@1fH`2y`e8NN_$m~YuFpqV|aw!d3Mcrc#^kTB)ddzTES7dPAUJ8V+YPHWhs z#cfLZcUaFM9JwrPk>0CNVg*MFq&7@`UjLZgfjz-R*=veKpvMiI?>fEVXa<>`XjO^d z9~hnWWty>H+jhrVA6b2_iW1Cp2{!}RIroUl<|rWOMT@LNSOf&VP-R^V%kPg1f(sQ0 z5(_E}F3<7qM(A+<{6M!Y%r>V?dShNa?Tir+Z?F%RJIXJa8EfKu0=_<;%yURi**JUB z_24~Q{Mj#D`4^&ySnC{a#y_q-*IZWpTQ1CoWv@Lj{K3D1Z|t|cC%HFR4H7Cnxayc9 zH_cmm%tgwVbTq!Iab8(24Aku^uM=ld^?#vvjqq!_q5o;{Yb5x7cO$1Wm68GFOo~+; zS~s^ss7Y3FaKHJrOs4cox4|RMAy?Z&*VPtz=#N?x--o$)?~y_~PNR)9Ng@iLP9(P# zKAst2>y$eEV-S~?x)vw>S%2UJ*+*>vY4$Z$Z1__Bl-mqp2yMK8Rn00kVcHwN2V@j1jxmwXyiiwkG^@w-p$-HZo_&Ey|GJMcu=hkru@I&u? z1jhbyhoHH!SpRwpcwlf0>!Q7zXHVt-oFAx?Ad}9DEj?NpjiG+22aUg ziztd0KY{$fPiEgN@!M+#(Bp7`^_o>WM<5BC~kCf8X)^ zUh1*^wg`CFmzu$LQMTARERp$CEK#K~p-lOnkxvxr%$pb!=FjP)qh44~ zi@v>zy8VnF^FU)VE4IAKVKTe$TO5%}R95_o`z7|5@dO&A@*#|cf~c$pJuoMD7=pgC zJA0@1ZFlY8{7<*#{eO9<=2`NZ#=@zMzRrQQ76aDto@+=)d3>m0g4X85khW{yQ*`^oJ~L5dD+V z&yCk`Fz^{KJ9Muv3|7xABI)uJc7>WcmINMN7TUW6AUl|lG7g;k>n)dt3rlB#etY5> zefx80v6GrRf<_uQQnP6a4cDUMQgxpPu`eH6Qr<)=cM`3Fbf2L?bpOZ5f{r7cUWxM6LJC*%B+1A6jz(rYhwk~OI^Z7=iEQUnO35hkg?c{_Y zrG~*~!13_u^e3;2Y}B__)L3m{F+ubEorL`F2gzbfbXS2SXWR6s=|3*SQr)yW-DDzw z3U|VaaGdt{;eQ51V!7Ao zYn{ecTT;Rz&I(5Otg~z=T}7n%1m2mhdvZTb$|~M-@WRHIE*aU3WHw{Syi};UiI-_F z7=Q}BBB`ev1~Ie)!N71|@`KYCBa8M_EU(`a=szgFLRU_w z=jH=Zm24;39*-f)#u)x$f=->>ryO#}h&P5YHvpQeU*-P#`&xL6KIBUw!u88sri zex!n(CxMNLk~r(QtqRYeZWVK=8)Eev$M)kK><}6KeEI4zVTII^cQ)++PS#*jPP#7; zWzyW$c(@$d&`zfDrKB-o5P)37`vE5KGO^c=@OS*u)%MyZA;=JKIzN>SRJtYty*+qH zsaYb|(n9n~jai$W%JnlN?yw&={ZD<>&;1zhsQmKbFMqb?oXb>Ni9U)YNi}H5cL@=R z1NL$KZHE%n?l_C&iRz!XgSadNSP1$dd{3D9d*FJ!0}GI=&3EeRjYAb64sUU4TeZr_ zJj=gC{j5^e(%Ch9%{sC~xGh7(pgg6o1U9LJc$ZVlK%U_RuS-%R>Kf`fTm$YeM!|YJ zWE(kdjncV3;G+}I#>g0_@21fU?YsdK?~db>OK!?+17#elyKOAB`A{#I`6_~%z0tfT z4=z^n@s9OA3x|TX7)1`P{eIkLc~0xr6v;n8j!Sxysk5FOFBEY(`xUAfq#@qK%Njl! zc~PB6`HIBtXTFVNRF>-FW>iP*TQ#3~aTV8QZF&2vYjbGv zklO6Yk#ULK9$OkKN)fU9P;iiD)x4>(b0Irwda)|#>J01;liK>dXW9BDpI*>IRJT!7 zRW0DpamR&hZv&ByucbLYCb;FZE8aSpZ(Wxc7#VQUVpoK%xxPPMrCVS4y<^Jx?M`L0nq6~ywOF!7D=7S(nRTxpzn9M0F zr7FvW>;GmKuWB@YYPQ2P*Za|`-|w{mFW;k24y;RWR;y(`|i>4sI>q zN?E(5R&SN$=XMD>P2l{PE)w4R_(!uFjz{ALAHmkUu(bce>ZCmyVlL^&t{(3v{e72j zfzOUDy*lR*b2MkBP;l ziv(l(AXsE5{BPMJFTpb6FNsRB@Gn`~+6cR?!+tuZ1DM$p6GOzt)f}_)2HDun@pR36 zN<%X?PJiOQPsw-syu2CY^OxO6$tpE?mcgX79;4SJ@|dkI&)rH zs1>l{XCuz-XDQlp2bVU~Je>O^HQXE!zITsiG00go@k7&U6gB{mH@W?!43oND$di&e z{>--lQILF9JA8h3EVADFTKT(WalWU3+#IW*s)n?D%Nj}xwd*vyym=_;COnlIH(geX zH|C+R{6}7%UbCK)9cXdms9tZ0SDT;8XI)Z#%K|@<#x>aNCGNRoL70E$la$Lg3P`|Vu z16)W^v?UFpSGPw~5gKM)#zRkKTQi9tfisD=YAA1~>NbWy5Y9{k+Ue?T(guV01(B#No;Hmma2Gv<(&mO48sFQM@?Ge| z9;Z&V51W_P(DZ_u<56H3bXPi~?8tyHtyRC*5vOjE7f0f&4+1-dq`U~~*+u{H%4P)M z#SuKZDf>~=zPvr*<#t=mv~c?kEcj_mmJ_;PK9qtbJZ~J9tH{PB7At_i5Lagu55-uY z^8)3ka)N_Xy?|V%geA9SUTX+MoCkXvDI>x{rd@2A7p zwaytKL8hBBvaoYp@FA|Yd>LJcA=2(T>vse&oF>W1L^eOO4{_!k#&vd~akm`;fX%ux zLEaTIMN3d%tw>}H`c$X#m{nDhJ#B}D;n>bAVKWK$A)0&EeryY`=}HU}_UZLG$dfKO zC%xc?K16Hbz4Tj!H}k8Z)bGX<7|kpjDX>sAyPQBUZ^m`FPI#$uDaBfFt$|&fM&Gp4 zD)Cn1tKhFI+$6RXB2(B`gJx=gfBcx#X%$|txzILc@(%8>gS5pgYhnwqa2j4d{6Ut; zaR%ZNH~wdLdTcKA{aFi-TkF^(TSh@A4z=7Ghdr~A-ll@L#t*8U#kKTh8xTg5d;M;* z{JUGVyLTokVbK%gA+^){E(Lva7AFMmaafbc%iuN3;)T=NdtO4L2a(*b4|5}8k(z3T zCPz6}NwPv0=!U+=Re`0$x0E8yJuxMVNZMyxB%l+5(&^;0E9A?j9Fti$F-0LmzXGeW z9Cy)V&+4gpc|%NfK(FLnZhZW*TJ^dR|8WojM?#LVy67f<`f~!ss4v;i^{CjOo()mOgd{{-im zm{*?iSVFRk!|VMVG24yP0I0r}PtX4p_2)P><1c^)_eW2>+`FA`|DOo~n~JU`?0M^_ zij8U+$g}3&^PdHND>lN|sX4J*W-2ij5zrXkEEQ}aI&~+M4Xjr5{UvPB@SHdxfBQ4u z_V8y(nv^Krva%P>0}-5-I4M>pzmH$~&15f5p4-2IyQx&&cec?p?vdP71x=R1luG3#I~HFkF96w}P@0m);sBr4Tjk7T30$JetZoJ6#H0QA?3JGM~18azX%JYvAlmOk2_x0-$^X%8gvY( z6x)|=+2)=@qWi`5viA<-ZT|54TvB=%8)e|@pZ`r19=4pEk13*eV)p=<(PXEcpWhBz z`QF5ByWF1lCr8%o9p5)J7DWA&;v=9Le{)j2md5~6()>@7e1)hs$>Mic}T!$_`eNTtVq^4~paWarWmKDK4An!mlv83#Ba9i|s@>->v z>Df0CX$jJ@KsH8tP6j|VsS}TeHe2Ik^YXjXTVyOzYBBlx9-Tt^Ia z@m~5Kp0Ek-EuaohG|Zen9O@|CZN=14VeOs(tfC!oHA(Wl9N@wD!5-Lv)5H0;rbSw) zi+*@t7OAhckh;S*+G3wYV)ng;%~}AzhZF0`^`y))Yu~o3q5H1ijK@aHm2`4dief+4 z`s2l9b@bk?hXQEERrnSk%19OqSi=yvjH}TfF|i+Vl1hw7AL2uTqU(u16f9!P`VmoF zNI(|Q2_mp4523>`2@_u0s)X*=>5Qwf)#C2msU~r{GC>^_wx0uUraFJ|d#U2JXYhoR zY4n5&lA(M#;Ai?8Q~RNS@}BJC`1X+$o-6ua^oQnMyXg|yAy7s+W6qeN)C_ND0qA9p z$#i&m;+M6X3oVbA`J0)2Bl-}yFBQwBG34rzKO#c6XmS3Lg5zp#`vuMp?~`HMZz0ex z{Wst8Eq#3w2g$Zac7~=7kQe9taI_~*>f%7iz4GK766{Z-=jJ)iv`)9GUlY7IdR~iA zKSIb02%w9PynW;L*P=vb?o%M~*Ewy+I<8B7AHdJ#&G}8>J&S8(4lmn1^#?EX?YK)4 zi5wEesg_6?Oc?mr8w+2E+Pb!$UTPknp4ZG4@t){5INl1Ox87Tbh&3her zYR*YQ3r69{d}_h+qwXlIdU-O-fw&$?M6x=~7=nm&fTJ1;17WS?Fa63GMWRJNWVY|l zTL=1{P@SZtZSUN*CeQF52ytXlyWtKeV_`Bq&A&?D1k(uMdPCIcMrF&?morD_zwDFX zptJeI!El2l&a*Wth3w+D6$fs~r_x$+;-mGUjs`Be?ca`>}lXa@O&pPZ3>1_>fem6o*U$-lsYaX zh#2ZUd+)yM^t7u!rDJ~wS7&8aVA3ys!gW%HZ4_%rZ|9icW*F8k)AOxpDUg`&eG4-=a3wa;xl{htdd!y6 zqPzJq$R4qWTRzX7T-QK{tQXcinUQ4P1`IR=v%r}XT^uZ1mX!Scq0@+z z8@_gmgUo3_bSiAXeg(+jXw>rzWPscK-y*t+XfX6=nc ztzzx`|I6$@O6z6y)N%dSjDu&R!VMH^$7^ZLD`Up{Bi*Dl6C8Kc=3j83>pkixg@@wH zLR*QxlNNxpB=qJv8xi7uOQG4^dWlcn{q&}|6Sa(E{l?vqm+D{b5Ub+&Q6uh4!3y{) zBfM>^P9*oUn#xFR#o)H#UtV&R|SQOIe#ZDqd3 zM71B|-Eo#ZN4bBi>%9d9^UVs3vaiw(k|_?%{k8j=k1>~$SPaM3Gnrw^fPkBnXD*E# zrM`kLCga=Vi|-++o^2^gsR{H|5ZUd$(JF*4k1*svR{b6oyJFacBT$3aDd|~eaBJ4g zurco3RY?gmmIMUT#5PEF6HJBle)O4$BeET$TAPPbd);o&cE_l(GtorYhSInszY^cH zbQ%Hl``sKc&i7Wr2au_|2W%Ek-?WH%OH4^C0;KDuY|IFEapGihV~K6lM6YdRh>JwF z-U^UgKx};?Js!-Cc0nJX<_?;bKRd$*-8mT!ddFO_9g7Hv5Z zwomB@9FDEf7LvE$c@ybY62K;hA=m&EC`)Z@=;OCXwaRL6W=q1_e@uV0*V=?=xouaZ zQvOkE!hhIF$Adf17yv+W+?DdgLE~iSF-7ldwi`n`PXWl)L_&$LBaNZ=AR70fCrol~ zu}sG;bS%kI6dw$>4d=DXQc2FfzCe$#ywy<-=Ab~vr-o2y{0@DpCX0O+7LcyM1+?if zL(eO-?@_!?QoMfZD{!t_eN@i@_{$EvV-H!?KF)>O11*RN zIkU}8NeBifVe!>d5t?r%^#L={kore-DSRn(%Z?w=-C6?*e@rMfOh&>SI81?PTz%4l zv;yq?-Bb2@*sye^<)a?(yKB3yHz!*(H6MJ)E|ZtEo`z+xj_|&pmxZR1lnQM*OSlV&?bYE}ID7 zLs%^712(q9k96074uShz{`6y4OF?(wXgiXn?I-LlQTJUxhyx>(mq&`%f5{(f4HSp2 z(=}Gs!ZZOQFDlmaQrcu~tw^gx$b~`Tj(FMxUW4;*Z}@anC9y&YAV9MGa|Ylb`@9Fk zxP)Jj;eQa4&(%Zg;QQ6;?ZD$jy{!&0*uAV~CT7JGy9`lVNpV88PiB6V52s{1HT?!3 z`Ti=)6QvT#uOLwTvi@?1*Y=jyF5XJiRhiT$_~c<}ioWASTAt+flbGi9TsKRs&QH{X zaBGABbdOKW3>8DrLea|=SMov$V|NN8cbNJOiU)@*ke9=iYJ4;F~p0-6y1&G7MwI+ zJZ71A-~_dA%8y6fzKl#!P8evw;`8lMd6T{-S>SE>kkKW9RJHj@yTCiyloM%eiMR zXH$iheBF?(oETVH;=OKFg#gF7;q`c_XH#o5_7epQ!KuGjZ1{MX?e^z3I)V&AtYjwk zeO&BVQ>@fr%I@jOyi3HK)`t1i3vS-{oUqI3{OT$-zT$Dcfs=<9XvuG>T)mQFR!>`@ zWW8zGDzOo7xBoD(!LFnCpAOua5O*&V$>oVWo&?Pm_0evk^G#ESbXR%IjlleTO~U zqi0#5TN#$Vf!xrk4zGQ=_8wMva?71{wHV12HL9JVIFjy6X6vD2GV>~74EqmP1v~C< zoDR*MJCX=|G*9Y$(^$>B04va%66c2m|Gj8!ivBOU!=|d=l0o0G1#Ow$$A9yH8T-~J z|JwHNR&viJUfSk_Sq-1Nd0xZ7*fRCn{}}d1Lg*M_Ad$r90b=%8dhz7&w1%IwnT9w_ zhh_559j4xR+z`;6Mu7~!2?!o01l(Hxm>JNVfc9B*yWkG;f*p(E>sWZ z3vSR6j62*$-Ds$B__3J1ax2X2I(=&)ZmWr)E!`~JXE$3ZpX(S;Uz@+%eq!vl z|L6a&ZT~2Na@Eb8@1skJ3!gKL1mnr^O`4xQWPi0{Ztv(&D8O(8tCu{@nkYLCsA!SP{GiukzDDN2+)o_gT0~zI&(y+^4O1!zTx1HHbJolF5VJy`#o_B0q z7+4p{ukoubmP;jh*%iN2G2pREac-7#!aDW7xcP5gz}9nuSrbtMGoEXW+c@5^`Ff6- zT$EC#f6Q6u`X5UV*U_t|xV)a&XzHWx-Qka6Q=a2aaCB@L*~CRpJ)d7xf79zIn8)ju zp@w!BEaXUF*w2eCIN2dR}*W!FWK_nTS$x>TVJ2NLVs^Aa>W_dDl5a_+6=0*Mi_6@Zcw+P&#Q6X!OaO?zZ0Vl0UYKVBOUb#6N z{g(B7sCgt$F|{bQzM}kKGuewmM4oOW7k4BD*mK8P3Dyg2V`tYIJ?<`UFB8~uUY+D^8URxR6e=+jZ; z_T9HH9$YkRjkxl(;be7Fg=_S46ka^dh|Ks@pz3vC-%F{VaZ!n|ZlOG*YY8yBKszJhK77{;7so z-Ct1_wpTQBV`@P4D2qENeOe(aP zh4L5=4LU(bUO6G?)%|6VcH3O!;50`s* zez&qg--NF#M4ImjA6eeocG2D(EhZM!hHGj)kW2M@MS3tjHPQTS8llR67otP6(^@I7 zJ;U#Kig|p!DrZPq)M-U~GpYMsGBLiTFZPM%nIPGaKbi4TA+B#EGl~-PsaN%j+I@#D zO-6^_gXvM~mL)0)w|)t`xq|oK&zzszel0xC(aZq-D)`|s9dJQ;h1QBPnTMp)PyOgVwjb$mdr&lRNb{+Eqn22WMJ#6}2_|MS) z$^SO=FDUc#XaCroH_~0&3fVT2h(Q~%9e9l7B1|Il;>kit+f2CCgUV9Nj#ms9A{=5` z#*SAC+3H*e&Q2m3?OdNZQrE9_Lt;mwz<2{mo8l|4rX0`)m!2QiZZBNR>=Fxw)NYKN zNIYSXi`t7e1(8(9N)y4emW8YFA;Y1Z%`xdIL%IeIC9$cGz$pP*Dtrryb`y>58JT@* zGvuao*>-p1O<4#O^;v%W@RRz-9KcRFdv9U_>nhCm3Bf70p#JP`!;D}G)#<{?X0K+0 z1#JBoY3$EzYp--f$q=_TZI~Hj737!Rbc`+6?a3O50ns0&yn%D93d2=c{$heF_Czg% zj$I?k4zLo`5r)o6n^#qcfr;&#CtZ7EH%}o~3xb;d;f@#%5x|4^282K zC{h}J*a;PRINK-w1_}2NzjHN0rwk0xB@=; zUF;NwhXnEGRGzL9_!Gy-_flUeY)$y)4pg1|CPcGOqNisvjXic0d|)n*lc%FOk?J-R zLN-7xl%{!zH_s1kgP!$xH($$S8GXywA;rF19N;Xd(pdO2EKTECe1lL9<8tvdDj2p< zy+Cr<`F!XuZBUrfS2(ksP4raFVSp?)q52Ixl^*Zr(6I@5iS7jV9%oL zEM0-oH&@FGIRJQd=reRMECP=1oiFSteTb`X2c3kh!`YBk#9ZJ-)Q8A%?Wtf(d>m>I{XjZX@HZkM?td^HTw9j(ACTo|35h=h8uX0dX7qeEw(Z4YRn~ z;Jbp6rO%gTmW~tKta7F@wLUE2$4uFM9Kgw?YVgldz=^^;x#?m`bOc~>uq(ey5y^+o zx3mur;Kuvj{f-}JleMOSOa9*F$DEMn?XCwW5Vpfr*X%RQX&JZ*aTKT_ACh>xHdX1b z&&D8Lp6gp}^iKAiQ!bA47v(On*cJEVxW>DH49e)Qg~?=xxLX! z591!qo6I_}Ky-b8d#NwKp4h=5l!4B2#}Q0|2!F*xU_#=*%@MP8U*M1T-zPTzV_N2U zZhECfc9l4?Il(n4;0@Fp1Z{B#yt^+3BT+VIZen5{p}7lRiye)LQ;MWcxpUhy={O#Q z-&{i}g`$=#eNkANCmvjwdU1L%y{S&458`bYPxMY43+hBo-$9QA1@bgRVbtqB&?)lY zlRAGLYjMD#qrxNb%x}(pgew)R=#3-YAKx?X_e5`V z=0`bY?$&|B(^ZP)5>qMhv;LJJp@2KdYN=07j6C1k|Kzl!zclnJU--bZvWX7lw`I1?~(Gw+l;3icJeL17$&UK$L!JCJx zQxpBO_4DVe1wQd8XD0tx-CKx{W5UAoA8wnPlyaIX@7B-tCOXn(Nxtoo+a;ZT+j>XE zTB+lDY86BR&kBsddm?QWub_Tszr@v(-0eO6d-%lW8pd0G>MvDb_~)Ogzf=KQ^**~l zqWR5Tf{a)dMCdV?#q_e0Bd-tfHYlqDYfqa_Ebo;g)O``@*L@*Tbo~@66b>+BgeKhJF=tQ&nS+apWUPxvyRmep7!RGmop+| zIh_RR{?EKG%Ag#2&8#O3x0cUMKlTHJ)^3kzV zT~${wpA+r+iLK2_?3>lYQ=@}Hi>)P(Hs{mRMuL(_@3-`un&f3&4{=XmU!_^p?I!hC zwnD}abw!@UU&e6Uv_l%gT)bKsfiO5<%zATM4lVFknQ5uSiSB#^KvzxYrAc0Tph4eD zfSvu0lBukq_0FT72kH{0H3$=u=LJh-9wpji(XbGWX{|pd%pr(*Qp-X;iLu?sh>red z1Lv7OQgv4J$OoG#qVFE|N)UfG33t$t3$()z`dCh(1w*vOwg2$)2F_SB)EdJaLZ+u_ zuYBoV6;4!ljo;X;Bn6bUb>x`^lOe|_vb_`AW!rYvHSYOVUx85V-WZgcW4+Q``q-Jo z&&CP_8H#WBjkGEPUPaQ*iAT|rbn?SPA9~)McaD6|(nf)B@JpgmcO!|Zm|WA93!^?Z zeKVPe_Og5serR3oXCB!y6UcgA5IXwO?fSKcGV^aJ38Yx$1%Z)FD;P+>_~=bC`M@0A zi&nijS;~ir)N#}VCd(f-oDkXb&{Zu7Tg1$3abe)eYZ59>J1N*1KIOfZ3G>iPF{V(<&|{-L07Q$Ga5%N; zgX8%USiu}sf+KxKYwVwU1oVoBQ*qR0-H-&$ue`J0A$h?asz<+KK%t%cY3^Ejl+^cb zfLbQ4IP(oQx#31K7qa`772oA^Zj0PEIkOWso( zssEu6KzNvJz+FMcDjezA~MXThHw^lU^Dg{9#Rk(;JBBZKK7m|fn>76waFy8 zYiBZkC{(0nv9q00N!otxNOMHv}IAWhCvN32aW zPUaDO>gNNdhJz0D^XxdDbpv*$fti20Oha6t9dVSz=$=LDy_aXx|y&<4Ju;F%; zg#+7$MY-`D4ydHAVXIoV!}!CO`%zGzhF!cgqvs=#R_weqH*ns_bX>7!JnSKPTLx0! zwGy~4?4$l&o09kBEy+0D1~c}74N8&Zu`U;2P#-z~o`fh|DZMdBa5*%jI=m)Z23wtq z8i1yAd~NkB*6xZ8eEv`eRFA)ZO{CA0s^trRucE=pS9A!o4QM0%eMqfl3BQ3nh(o(y zvBFe0B>Ke!ejedeJ0+Um)%oG#U1U$b>DSW$5mBt#Tt%j4gi7VfM@IuI8O)?B?Bsgm z%Zhi+3&kbny~R{=ZrPvLPZejyrh0R@nN$m8Wd=JTFyr@T=fy6uvyT>2G1V)LA+R6M zK6_7==k+uVGD@W{o@w7U`J@N!|8C#jFoCC~%ncOU-8Bie#=%0b6A{3YFF#E2{rSWa zO}fKh|50tUjMNWP_HpM{1?gwwGKN26NvZA&pSgkvpQevau^VZbPt93{aCNQ|^HL%O z;@vjMh?k&M`A_CDyEW(AvN&If37#fiq&p_rliK@C-_JmEKGbmP!Xwz!q}K>&`$&6Q z4OaL?ccq%+QLS2bF-)gLXfFY~VR+i!OPHn&vIt{fcuB0_)NwIaoX4-l7NQx(u zPXi}7pFW*i>%Xd(C_~CqS(Ee>ge*j-n&W6e>)`i^27B-IM>P@=;^{wP$g}KfpTi%R ze^>Au4-wN2=c!bEap>Te4_ayc^4T^lF(9ylShw4k>x6a9n*XiTLwPnLoZ=a_jz!Kh zHaRfI`oshExlF5y%il(wA60`)`dog#`+*-3J6};SKCrUVdwLr{s}zUg*!uFC zjw9-AFA_nSwYzQ$^JQljs^ zpRv5JS0?YXMGA5`D!_o#+<|&PBxPpd;|cHdmdB+ssfDQu|2aHMaG z3<}jOM9YnXzSg$bfF%anC3WdkBc_2f2>9*zb655?7J3f}_<3}}{*8-|~ zyGN`M1XZPVbBpe{ScU(W;VaEF; zuRIY#Kda;4Ts74UKH{(w`Brm#8{JgWk^xqD-77G}adP=UTKy=)Q<9Ln@4QD*G*P9k z)QorhwQ<_g)T6D_zNwD8A!~R^C(ym;u=W4I4R+dBef!)eS`9mdr~g+AcUJCSz>T%t zrPowFXri90S4Pk*+?vFk1f70)B9kLfHAXqtnH-&aM$%Y4VLK~03lh;N2%+& zhjwI1T10J=$5HTu0p4r=q(x@Zp_`gsE?&X90g%X(F3}W_Zv|e%%Q|=<`lXEHxI+`OXX>o=@9$RzJA9 zL!zPujBm-asE7=1na?y>Q_zpL3Utps4DGu#IhyS(>-tehNRNqJ`go&3z=hOU}! z;0@c1&~5F891@)iJI?GT*>6&KtSr=(4xiq&C-l{UA0lDpmy)PEYS6-fJvZ3j2CMpy z3C4cFy^wg&h}hrdoR4wNH*?gW=(p7@3nc$?eJnV)#WG!A7Xl!ji=+_BiV9eti10KrL6iLQo^YuyWMrnq&qk6e`MZB?>GU;ToL zV#(#D&$zgf-PG~2*rSaAn8%wj7C*JZA1^W5zTErO0VNAX zl6!fOUvC|!h`cCw4tm{B5}I_O^z7PhYX<_WQzjQEtjB(kaY#BSHeh~AdMlH{#Px>e zg`t(V*A=^rwmCD^)F109P~{kv{V3UWR*3f+LhhCM31#aqNkcCzphTm^8$voBJrS6G z_Z9!a9UzY7)@P)LWE^_eI{zUpEc;&ezQMA?sz{B5M*j1R{mA2M&~br>LEY~kKYEh& zWfia!O`eU}V*10{8w=J`h$b3&P!@3lcnNX6FRgctmloQ;$bdUSk&K^Rp7p7t2Blu< zA~3@N)a5MU^HeQHcZZ&J4jAUk^MpXBShxH?F4&qkdd~!!Ua?*XcxHJzR8fvBkCq%$ z#P4=?jt%zKt-be=AgH-yVxQOFg&Dv$OuTcZe!QAOQ}@q3E+;+xJ!)jrQyp$C@aS%` ze&4g>H(7W{sjYcGbgX#ruv+Od0{1*696ndhNKSJ|LOacV6Z>vxUm4xtj*>5v-Fu4nJ9gWb zuCl-)%%wToi`)cp4ce%JbAq=e|8bLIZl|I1x&#yYd62xJM7`=#udCE?R897E8R_wO zj>Zh>n;DB()s&4Xcthvv#)e_do5-TcPlJzC%!Ac!US=k~G!%u3 zW@`qP*dW+{|MIpOxaEDd*tFk+x{>*oO?szwbp0~Nvx^qEy3rjLUVTRP8`>AaP>wed?_KLRid_G=t)ok&Cxa0fNaAXk zyF*pCKxFS;vN>+4ovnPY3@Ikser8^S3gg(fe&$V@PAl z*8!HaXCq8HBAX?5E*gVB$DrVuk1oy8>4p6>n4MnZAXna_@RcXD-d~NR$ zO#*6~IO1irj<^q+&Y2Tie&z93sthBLDqZVB$6H>uDihzlUZpsM<2=OEd{+V?1DAr;_d1-`J60GPM_WH zmLdyWq=f>@IeQ{rmPxx)T{>fq1=BmSjy8fE-_Pv)RTsWN?{P_{fA5%&U!n?eS+CrF zSyWSJOZ?2UkS6|NnTpm=wU*93)tdNG8dJwvf|b(#Gq;xrn6(8eseq=kKgId0hPj3N zr%Y2xoBPZ@d6k|0TmxBJM7acQ*$3CGI)Pr|*uqKQ$uu{_-nGNdaK+rr5?Umy(#e!@ zG+;R4c~&W<1z!DuAM@!3T@F6dRCJ1{EsWhlO8&{byT7%)ZMVLyIJ~s%E&8vo+|bnK zKktchhNf{g(7?zgE`M)PFXE{pSoZ%He(<_LHRH7pa^d?y#{Xg;VCouv>`|Oe`${KS z)~(oXI#FAFw?6YNs?2(J)*91?x#gHOrGODq6z~SiAn%9t3M=xl!p`7EKgVXXj*I^l22_&ZYi|Nxrd;rFF^R z@oerbf+od6A!bn)Lt4~)$*TPm@Z#5?ShTcr+El$P3kcr{S5z58J|^gel>xO~_0{!(nu-|cC~A+JxS?c9AvMu2DVa--tWMd zCe5lTV$6;a!Ktf}u91FEp1TprEN{YB$|K>dj? zmW14V-13h%xbkYF%qK^z%COEjGj0TVSiC^Y;gmiA2V^99l};HdrC+@rwM-(Nxh~lL zyl6j#)Bb>iYmj-KUssYbFf@3=k=7Ute~QR_dLo55eViUAwHN&SyHDWb;6F-UC;5nd zteX(MuL*(=m_GqD)7s5@+ZS!esQht)I=TvQB%~lxaYF(`cj#R5WKqGCbfDu~+Prc+ zEVrmvNI^-;Q3e8YeGaI2t<=?eHIzmt!>jbF5@R<|jdlk-SE+*1PTi>s*Sk@FB%bs(D^Su>Ef{#& zy_5zRa>7f?Er5G|DM~IG$@(1_h&O*>vXaK9ctLLJo=iw*XQNb3HOWU`f828;T?*H( zU+krjyr*<9mY9SIQ|=_{ITUChH+PWmgt$VNsJL zvgq1`Q&bOhvEERE))ml}RKOA8eXWcgq?FYuKFkl;kp9kq0gmN?X{{q+_A36rVd_y! zSvOvl>#6QUjZ1l&=Y}xT86& zJFtZs!mcPt3v|0_o3SJeX#M)#q;)d$@%{qi$&fx=Szr8otgWg5Mh6^x2!VOoG^^TH zC!HfM-9N6AjIz3X;%=IM`gmviSkoZG<=zZzqzFrpw>;Q*zV&J-@+h6TDwXgE9;+>d zu45e6SM`7|#k$NUJ~h=e!atBvg=LsL?yJ)`7nkvZ1RsRf3e1iV9qDVQOksSc%1pXIG(I+kUoqtW4}|EwyAOKdFI-vHw$m{ z{?UG2DnU?%`SjDYEKs2TNxe<+-rcjFXzWbZWtFw^J)wBljG(^yo?tCLEJ$Bx;CI zF(Zw5eH29>_SHno0Bi+Q&cJZU%r<2+<03B_&_qnxi`w^(&Obe#?L!n)cb5*$7srl_ zbJpB8o7A>4t`$O!MoC6p%FuxG`%hrg&jk8eBrgBKDR`Rb#bI=v>?%av`qxI6Fnhir zM+u88-u{(;^AdDpEFe`_&RqgdwOn0%uSH>W zHxBXc2YvR$N~;|)ohTxXIV?Y!oH58CJGdl3<(^$aeo*5`6& zCp|7~M%!OeWylF{g_cgV{_@dg&Iy~MRdRwYPRO`W`?kb#aj4yVH#-2%Hf#&eh)20c z>{uSoF<2JI3Vb+k{0GC}`7aE^SS&vJe=rQe|Ak>F^fX27sBGYy5rt@xF-&tfB646; zc%O38!uz`MUD+PtO9>yn+6pQFwM&UQ+Px2tB(p?+XX_#ZJV1ZXm>O;o8tS+s>GxwK zj0=>_!Q_X!aT`aO{HoL?4LOyHDi(1b1TWw1rEED$It;HhApOW&NZaXJ+8)Atf~AeW z2>e-h!;4|%Ni2Zi=%=ddnuVcQM=>*!@_`M zIkD!wEaA80p5Aji#J6t66}%_INMU8!HU{XSnpOeJKRsk7 zvK8a%*1Bk#N$g9gecw2b>9bUjX_>2qBQQ*Z-X-=s>2qO6T9ssTcCTDE3)ro)s;(R) zN>QpCCqj&xO$@DweQuyUi9eUZ(c(F*IzF9@lj>`na0Sig;mA4$CAG1}NF6cVR6rHtxS~+pl!I zo4vBN6iLrQ-Hj7L(@KgVz(j_hDFx%H-l#n*Da!2aHayc`8Rb&-Tru# zh8|6X>;3A#E2EJesuEXxRasxTpmhYJPCr-w;@dcN`pP$SFI1@k^MP(?G7rTzn>Uol zIfJ_40*ZW~J1VYFNot6~=ZUtrQ%FiIMC1c->90v2RCsuC5IISA{9QrHxF7-Hwtdv_ zMyD_5xQ5V-*-vrl&^EqzqMvUoTV}&ow=%BW4C14vvpQ!6=?%UvLEg7J1*8|I|JoU> zB711*zOLSvEL7&bN(+I36gaG9X&Lw}3{w>~`iIuA7b-My(rDo$>3i;6b0i|RGb_{M z##ND`P;QeQ#xa5FikqoZfO+!v==z=#3bz(c>t;zS=2?!fQcz>7pl=^w`XpBVZNHV$ zUT5q=x+8d;sQ!F2ZVg9QdaT~{BzL`?pYfvQ?I-mWNOzYo#}=@}>AYmixCtm^L)`Gp zH}&O{9Sn0bzAg+r;TjNJ?I2FfxnMSR?bS1;9y-yHJPLDkzW4a6#@K2y$ly4kRI zupgAn+N{h*3VW15Cm(dG&s+8#@!Pnm>Cv%QB^b1`tV$^xG5_Fp`mJv(ak(~n?=+W` z_A>|L+@4IDiOAOJM`=|(3|rQB!y*6v9p?e6s<$EB7~rdTh9+rHBy+h!Yl%BfPvYxI zdMefiG-T8#)5)V+px?*5ViTyN5au}LL_YmngvHRM|JypqV8&|i3m zv*E&7&hOv_I(N1_W4EM<^EtUU)*r^UhCPcs)1{rPsnfx6sdb|3#Kgg7bXo&v!*+c9 zpu1|~=$K%y18c_O0K1?cHVXuFQS-K0k8qwmbYA5{0b5 zY%(6OKY+@TJ02(5=imz?)IAzjGX+2Q=JY78zZq<~`a^e>amzugS`}8=tT^l6lcsTa zv;T~noD&ZUh(6GDroTiSfLJ|gyyY2|L*Q-Z*b?C@*P z#Lolt+@iVP1~kbyYHyo9Vh0b z1gC#?b~ulvx4i~d-FYSYg_;yg-6{0NV=tJkufQcK-Yo=oO=_%l>*hBNTK%P0ibSH~ z@kn%Vm2sk|*TqCGad&~rad`T%IhY2Pw2J?>d1m6#cz2dqf{-YB{Xqsp5c75kbFE{$ zZxm;@5V~yJzhdY)>xzbEEgUCI2?jho7)U4z2(&dJ?jngriPuT5frb~v zXapW-aeBIT4|ep_7opvS46x37Qrlg+QD~NwWg3iRgRaaB;9nNkCt<(D)e?I$-bmZV z&Y1d&dl+P4|KXR{5m3k^DBvd^rR&KzgmT|rbCItA5x+im|KU@x)f3bMB2F{22U*{P zoYtD{Z+*OV9TV27x>dB~@a>{$n`NCTWz?eP!{6|WWfYx=l@Q_Y-m}LM(>!7l5(rr* zcV2OBd()IwA0TD9(|J9+03X2dgtjK#)A_#`4jxLT3k~f6ny)sFwwt$@MeudZ%D02+ zbzk8-hYsYT^L$sRC3BcMea;z49qu(`TckE!lD&<=jyk@H52zP@a4cyS$r*s$L4>+(}Z}38h2q^#dcT z&t-C(FCa^dVRfdsEv)ZmdN^C*k$4N%Zp9gUR9_da2 z%h%yw7xSL{0Jv}g?gXxXAXgf^e@%91b)*wQ0-OLuay2}(Y9iy`P`mTOLiY@{`jn;l zT8y+V&KH0iHP;YYZn{QRc@=jGuxl8meoOp6a0W1_P1d5t3cSN-Sg}m{_DbmWL7xI; z)pzc>o}?ZhVPUiJRIjL${ac{y#;;t>! z8F4Z@@q6o~$=C~COK$aRV1j@G{JNHub+MJ?p-Dl*N%db0-<^(q%1zc7n8|Z}P>iAy z_cGiM;S}Dp`v`6AoegmA(^i^fmg_iF$@2Rmf35b-{-cSNkt&b~WLyuJ z0ai%qz<|>fyXe(#tJ2UH#!f*8IzKar$mXl_5;n16haLD26h=6@=yCQ=BS#9lWYIp& zru+dg_M_JBo#Mg^qTq`WUo>n&Qe+AD>Wf@$PwhU`qE#+r7DDV(et&OtdUduwSLD61 z)MxxJ9eLO)L|uK3m2 zY)%mseeu1|1syMmd$;YR3a+b?#omIOvMWMY;Id1NnY5tACg&*=b1S&sS2Ia>$#+Tc zneix(<=EV4p2NNe(gSkp9$LFwiCa?*Ip03P>Q?G$SfoYelKFVKB$gr+DbG`y?>Upy zW_i-I;QP~R5`;47l}&;Il~~`c25PlE@N7vbd<1e_=-e9?Q)hevrrn)S8J{+^?J4%^ zSJnEQAz23-sSsL-7%f{!a5?A~aHy|fSXLc>=3@hoTT4FP5+e9`@n1w7Q(dhfs>zdh4FB84b8M1nvQ0`9 zZz4aF0NKn*5CS5n&r^+R?3O!-!o{~mJH4gpJL)YbS8@ZBFy4oPQyD^PrH7Oa+FR_f zqm&i)G+!y*#zrO6{((Sy(hr6G#}%zE=Wypw&h-abdBiY2Yl+~56C}QANFhHYCDz%5 zFuDD1kv@YWx)Wx}?{i<10>)b4U^7?STIwel?8Fry2WwfU1g5iZpTdHIHx#l)#=pId zBb*7T#s`l=t+$Y0qkXutn;`pul|MFICt)axruUx2@@P`UYz>l|{SWHit)BjOGPdWd zkO&rwTMJ4F`Vyx3Rvu(&XeIj>H6zVid9Mzgz zR&@M_1&~4%GTaRKp2HX2Z?vU#y2vtYK7Nq?T$b`^Sc+(4+WP9RP~YbBmlu(J*2gPy z>7k6NszfcUfZZ-$&IaFq*a{!5s8deytx%d-;v0!GKN@!P5oOc2fU(Jm2bpV>HUG^K zz#mLZ!b}vFsFMOS6PGg-2QZ@NY)FkMm;)^9U|_9zM7FYX{Y=*qVFsdU1bqSr9t65< zYs%KtO^>+n9zLu~UB6S|IWx(W)t`oX?|}E$Trz5C+oR0ED9EwfP%znx3ay7qn&J~l z>)1B;E9H-==Op;QS2uZ1x?M+U{Be*N@5VEDr*YVa1vgLML!92P@Ax+nf@&JG6umlA zSr9kFU~`1DpE39M(Y^~_@Qsr$c0SJT{MhtXDzD4uXsj{tq2n8*!vP#i%%iqhCRbnE zZiN!@P@fvSiLXb5)OzAyj^4ZZmnRONd0ueV3C$|#^7Lr@=eXu>==kHNhf>hRF;P6z z8e|mz%Ej?(eMw8;WEt6YXv`H`EdUnSpg&F&ILm09k~A$!LvDAkAl!Gee;l!SR^)QH zJn>>Z&M%9%r-&yi*Idx>{!jks4t(*+`tdTfJX^-Al0c5)Cft(lgHia9xi!5#3f#t=a&5-M^V_sN$OcGXH4Zvi69weS4x}<|-$+!b`lzyxwE#Yl zO@uREr$uMf4={90vZ2LE(ERw&%3|}4uZ+-xsW6h@e2+H2$g7|700>8gs$d)Y)@qi5R;cYqbzIENyt$=tGc9vu^4~a&7K7Q^C20YGV z73aS-XNnkUxC>Of$Rei|Z8Nok0#`ao(mj`!HGOXaenQEfAW7n~umu#Y;>nDam4H&H z*TJ$k?xbih_OgCqH#dzzPj%k=%`DS7`(XVv+Y-scOXX8W<#R&_{M8Kh8$&j+tR#t_ zo^cq!zH4tMnO;t&f`GHP1AvV`oR_55goA@vWj08^TpA8dkUkW;Y`QwyVupS5p=Nc4 z6@rfi>^aSRhk<3zCB{M&7;<@3Czhfh`xE{%m5{A{#lS@Wvo?jH{``YYAb5QN`JMi= zSVTJMTu^|%7uSqi9EyY=rFknwZk+OQZhPnCL8=w#nw9K5hzw^`Z|8}tz~FhWO6(}t z>)fu3lWmhMZXiCZHQM{GY9+_bTXK2*+-mT3*{I`IPcuAQ2$-GKTcdYOjS4&6Tdx~n0qVCGRaZ)f55 ztinyJTq0NGqPuu{l$2*Dv5b7v%_BHfsWiNyMI%qsOk#-A4hAw?5t=fRrAfxrgex$u0FbV z=A*wIYs2@xC5$v-k5n7-+m!v+JBd`Nmri}0ZL*v#juz37{VkAjRt4O0Sodiqg(6oW z-DIEr-98@L2$nb-yzrq)Lef0w+h8)c!9D?bU5lEL}*SiKD(_4zNv97CjxXY!-R z(2kMXHVX6Nyh{Czhv8o67c|p48yIY`qR#vQ%5?#$Cpi z8=azcztZ;gE+LrfRaUd67E}ks1VcP6j5@=MrgXQRd@JPj1pLnTA)8&A*Jy?Wf?8ElLbBj^M#~CwB)DA19R#!N_@`rzeb+ z)ee)Fx{8i}cyk6UPO|?)hPb@$()%cQ1hw1WVy;E(>zg>4CgSZ{HV1AV--;t%h}B#=L{{5(A`7)d1Qw@Xnv9~8uoC>d-FwH@cTr2L z3>fXgzqb(5NCUESN&QzXFNKK3_YNQqykt7Nz!&`naknp8yW<=5z4=^SOaW zm_VK2i6rqr?oGo-EIssIAuk5-fJe-s?$%kZ%?!kimUv-BtAqa5qoepqAy&Z_D$cKlihMqTvp_P^ z%W?KRh{UB7TBC`|(ds#%Y5bXcoR0wvtfS!JBW+!*Ku<@fm6*pb9AdhQ5XThz+L9w)Aj$n`e+MdR< znCj0yMl&2M=BX3;TN*Hn;LMvBGLERs5cD^q;`!f6Mw}@zPw|bH7Is@AvMiaOGiXqG zI0dUxQ*>oj%e_(!jPKz->-*NbevnSZU-=JP%cFFC3a@Y=%yf8rem`122vrs=9cefh z%=qNc&`Qmv%u#X7ijD_-Cj$7kgn#*#jtR4UUap#;Z*b3f4)E}q?)p=vupAo`H0K0s z+o$rh*6IThF6MDf%xrblB-r7zeM>-8L4G1kijGfY)fzJ^DJR zx;IRo$i<0EYikg$ArD2#0UG@^%TD@TK`OpRv|hS#EyJWjKUl4tNmi;<+Fag1!*(Mr z0*hX!*URs6>PR;*IEjf9$oYd|EazGMb3o3EolkNqwBqk3x?2`r9FpUx>>qAk@w#^r zIJl_t>E0_fwEF1)(+mrpRO~VLy0`((f7o&ZGju$$g01WJ!)b=vFXzpr^Xw|*X_I>e z)9GA@-Df|;QO2v>(D4k+J?L=Bt+hn+pTmVy1T2%t-##VY71L9X@C!mMC_9iwh?dG)7 zQ^ayK0%ux5W|Hz|ZoZaWH-D%H@tmmMG@{H7DQMa9Ry zl|-dH9jx>GOcnop>vr9tdQirQ3OSQb&`}Ix4;(ymjYnvg;G9>a)_~6|+5`+F@yR^o zu$VTpzC!07e4n^+q~8iluBHcA=A_eVGfch*%L7mMi|(Lfel)5vftMq&-v{54A66sLJ0{DF08v^-vp?#5vGs+&Y^6b zUJ$urUH-Qdi-*^*;(#%f9m5SD?b>3dG;VQ&Y{$ z*Pn>E4>rm|wBhVw}c?@j>?Ww3zlY zy(i+oNbmhf$<$Q1`I`%j7EE1EMeU3QGAiLdmuSTgcAn;h93Dva9N3`MRMEM0Q+h|S z@0?$8fKBIb+Y%hOChEc+f-NeuI64#Lq?-UY3DGm@sL#K(*0W5AuY@;mJYCc zn16-p_Xb?$)sDDpew@5`G93^gLLIlyX1?^mWaZEfM}{aox(CN5oDSAz7>TJ5AEcaZ zTJ}AaXvBSM3VwfKdp3-U3OYh)q|0T9Ev>jaV{4KBw_b-CY`WK(H!M^+^%LKYJK5WC zv~w}rCJ?m~=3$xoBSh^)hs26S__6Gn*4L59vXeK`mZE{&iS|2TGuO^V9N*i%n#2$U z`{yPlEqmJt7B>=p;2Xa^Zln3~gP2O>{5_7>G-`M?t~{)dOYbRpNoMv=!^j465Ks#e zkJ3IPG@Qe~qZp}M9e-Ard9?C7p6qx)y-&X)YipG#9`!`>*$s?8r!ej9WV-n`pXcID zI=V9E{ji6)30y`cUbV9Wo>47NOE)$`;yd3FNcQ|0Fv}->O`FSwG%#>`@@@whmHka{1(0?8V}AiFf6lN_t6gwodieCEr>e z1m)~89TJqWa5(n*tI+%wW6B*=AHLsV+jw4UuHO9V>@N@E_Fo^Ezg!V_q=W^aWvq?R4-L^Q!Jo3ph#Kii&sF+&9 ze9J{;jsIqJdxDO%5f18}0o83*K6Uvm>rc}wD6qpOwz&jzI3rdOoEs-HoQSWIa+%u| zij|!eD~Vek80|bF60^`cLHUmx+hq{CDA)Xhi6Bp)>#kD zaV2{m>7|}inD?<@d1Iq#1PyFvG{Lkl!2T4sJr0hooXM>WJm;UdW^W9l@O#cta$NT8unf8L00R+ zY7_G1gv67Nl0IR7M)BHglQUeWl(lm8d>iBuB@6NG>Kksyk=sGw9F7XE*GU1jw~n9= z(`Dyh;$#Q5yxqn91A<0Z=U<6b0@4sdlQ#F6iDWU)rRFFHs;NzK*3~R~EUOhY zwdXUVlqIikgkIx&SduH<_<3Jv`A?tSH<>s4cYMhwX|gw-iH7e=r&1BrmtP|)8RZ=r z*&>`7FxR{mLM8U@1Ee5E?$6KCA9Y(o@W-#m)^htjm%J`Xs6<1WiD1t7ay*vpjjx*@1I{i^iYuRfhGAmHd8 zpKdw1u93M%=+!eo%1Fs>*rI8nKm#ujlGHUvFg%efEgYH?LXq^$k?F`LV^QC>?Fe)% z?AZkIH`q>=K#|Y1cN8vWupPj8d(Iw4ru5K#05WV|_U02A;D_+kOU~V4JNAnVHJa=I zz!;#CIecHMwK#WYw`69}M6%)r9Nv60#svD=n1n8?>FP;^djhMG6ENrQTUv1e3)SN} zF(4VY|7n`5VdRYz`+HwT&ogot_)^ajTwNnW<5~^p-f!w$7y{he2$3-2+LCalsT%>h zpz|Z>dg|uh_+>Wl4cG)=D^;RfBcjsV)Kth$06k89l`r2ql9f-XI!O{C4E3y!~P zc-;3NL=ba+S-@eKoA#gQx`eR77PIxC>wgFj8gFnK#D*?&XRyI;A?&v+o!-nEg-=&@ zoeIOhhaKdmX`awoi9?P}6|g_)_`NKepnST5!5vG&R-`LJkMf*>(0i}d%$F`6$&R}Rb$Pxe)~uX0K|g#S{co9t-6 z-6vt?6?;P-d}~_8rY5!=VJy7p`P!I$SGUuh z07-nDL4C01_jd*~0gJ%YQVXXO1I*RjUZ?xmcJVYN{kv^Km^i?8DZJwTxWU_L;326A zH`rxt$9$YewX;0v(=@ek+WEb;^7qMt! z8Y$%Y2;8N9?kx2!qKb=SI4HMkUu#{?J46nc<0 z`}ZI#>b-s~x!LdUnn#7Tt5RMy3j3lhHyHeRL%{RF{HQPV%}1f4LI)}Z805;x%!-b4 zy9#=1NmDNF%)`00x|fGmhQ=?;XZtlfuV*ezT2AL@`^pcZTe#m7x}9LItYB&1X(1=t zOXb%a6RTrel$Pkn6Annwy&inKxSJi1TdqNnf{KWbxdkbOj;yNCVG;VCrC)7J4eo^qq8CuACe@Mm^1r>0gg5TcaP#q`gYh^Agzon;oa zt5ZI*=}F`jCuHTgvJ+9~(sRP#-9Jbf3L*(YZpx|fFBXy3bffFaCb=|sn7f_EQ1#_{tN#g<}tsqOz(CfvOde@&r)dl&AVGL zTD`Sn=H>vnpflRiNZ4t~0~4LMZIIjPexhvh2T(fFJ@F5|L8rOWbKTa@FWKv*^_4RR zfl4k+`u@?nZPsK9aQ|%D>PT_;@e z0#Dr8cObq|6?}#-qZwT4&PqDD8aK;5C%qhCQewtHBepc(MpE2sb2)0x3E4F*#A%ZL zSoVMsD|^oloU`TlZQon<(Voe_BbxsibbM?UPHz(IBwhfJ*~M_ri`nL9;DMG8BesM; zU1zvh;#QCpFF$@x*?y+K(#^doq8O0 zMitwLm9Pr5{2ZzU*VWOMwKlI3=y12{qu89>v>YAA%ZNciILO|jGFX&$YfM&5AerQj_y1w+y`$L<{QuurwTc?0MTMfMTCFXDnx*!pq)P48+MBkjX6#*i)`+dP zmYTI{&rl-vN{oc?OF!TH{oUXF-QT(A{-1Mla^B~i*Lpr5&$^eRC{~X+w}&hmJa_4m z7~RG5?By!~hjX9e$SS^(ej$_;>IBXSGv$5~0pvyS$YVCb_P0aOMA(@v`UD39?+2hV zD;4qv{=5s7ghe7(X7)eCIV#21fFdHBVOlJ+C)7s%y-8~KgC|5=kKLOdj%dSdhlsR_ zS@SAF|NbR%&j!z_Klizye$l{d^7CMxl0!OoG#Xo3b|Uv-w#yYra{Ctgw!3%X zKnDLr+C=j)ZtL3iQO$ugI5hGCP>t+4r%V`X@>bKv&3_R}4&iW~_vfQRd9u zUKgEJBtgxl$PW^R5_!(3gv5O7v$vq?j>RwQesLD8MZ;C>9py*pWry7>)Ha%TC z1~)FmJfmHM|2=KHc=MF@o~00P`fg!2&Yw4Q0DA(RA%1c6Y8Nu!O=eyyCFPr7-V1k|8 zF_H}?li-57`IizwfBTXHAISTSP%iHgaN%DHzdIj-=g3X2jlyFrKn(d(H*6BEQ*j}V z8u%3Gh9lhZo!%_xbr&Mg>R*prC@=0iZ6Nj_x=)nZAlrM$TgR=_S?mVvQvUHDNEHl5 zUzNPNbCaG{Srogu_&JixwbCBFy7auuZo~=T0eVTt?tbgVzIY;4SLDpWzL=Y%e4TAG zG2p)4?eUa%TJr70##aQ*!!nK|e!9Uk(!}Y(oGaGdZSShbvr|S{s-#BcZw;-hj&khc zd0q);)BL0S0}*NHHzP+ncjPg|q#lnx(VXS8WRIIA^U=3Fu_{IqDO{wm1T~DDc|CjZ zT8MA7ZNo+b%rKrkdn_T3T-B+~i}}<)Qv5iIPNUHBiDK05ATY^Z<>rcdz#1)?Z2u;s z95PANv3NRlaVa`f(WwdDs1q4LPnZGEpZMYR&Y3UVpkW2{6;B-Sh;9 z1#>m_|9YAiG?-bk)Tgb6l;TZ9`i^LmUi#X?mb<({3{A)G(MyeEmMt|SXUBA1DqII_ z0@XMmA$eR#sk0Ws`~ALP-z{yOdku7Nx5#qa&m0XIsU3jtHGUh|1vejC1)lJ;xt_IcjsV*l!R#QGk>C&u`m zEb1j7y~stI!mEqIxj=l`CJzL!ovMrD)3C%??0cP5UmvzoBLY&ra3R&`_;R-7-#Hee z8U1G)Z5qR}U}Jv=Kj7pH+q*;j|2@ml#k0rUt-EU_x!j1`g;(FvVpo3I0>wr>b9Qp( zA5d)#qONRXI6Smzs_vELXj>EhFfJFCx>tWb<^Uf{4A9D2XcuyU&m+PCV=;t?=rPFO zKo7hkp)GSL`bXzqDD#|@6T=i)|jnj}PlT-S(CvTd zgx~*9bVA@u-j-j#ygCJS`aN3rf4^Ti^Hs=P;BE{Otmyy_96syc>wNm4uM z3BW@dEHt5SSG{o!7_f72KdTSU=`E<|D_ncIRq6cvin$Tr$Kcilw$AXpO=`K|ro753 zCyj=s^`FH?zu%Z+rlEL=B0Oa4H2Hb7BdXymV5mN1Xr=&46_x*XYCF_gFF8{0U?X^R zGPlmP0P0ttpy7y|KO&j>Wv{=Is$kADb_;n~hTx!FDJ`jK{4)=d6e?iZTiph=FN#l` zqaxu%O39i7$aCKaa+F@+OJB={QVRMftM3jg{>P<{ko=j~G`T z%L{co#5@f>i6@q>qS{4tf9#Y}OSB&FgP)QC zaBk}|%A=OCj6)I7Uk6&N7}Btd7l2uUA^NqrGl zn?J8?8wm5N>*l|1N`0&**2!Vvony2vl&Y3Tz4O>ML@2exw|<1hjw7EbXLhyeb9pJZ zK-6v(DmOd~l%4rVtuz&q=-?!f85xQlAWYZp4cO##I1S{?weNGvF3Egk{0F!QX-Oy~ zB?m;&kFc%EOzgwaYqs?5c5nLZxPLLeJLg*jTp$(h8QpQBw8%9w^Z0|)(xwo;sg1>4 zH)QO_l2E2-u5(rx3eKAiJB5vgWy6=3oLb4yLOPc!PFtD)$(g^No^qKn=%Ua^L^~b! zPwvt1$nPmB+bzp>{9Xq|X1@R|`9*&KT){k!UqKJ5fv4^RK^G)&VxcM~-x|iJ1()ig zV`14P~sfGG% zjdJqD>jMPq+^Kf6n+)^`7%c(y&S~n$#<&ePL4KB~rw5t5)qWIc*S-@L$NHA-(b`gK z{oq+vIqm~gEymQ#aWc>bgcj;t^s9+#EJi&F&U?o*-Clv+n0FU-){3K$#xIQJ+j|Pg94Y;+I$+v`WsBf8dU0ETD}-rc(0jJz%N}e*7@nx3`hdi zQnL1YZ3FXxR;1}0S4ws0nBn!r;6Hmt0oBOwmWo!b#~g3Dl#Ku{y>Q>Ou7*)cmP|<+ z{kvI|Z0ZMN$1*glgn`B~f{JZ}@|acHl)w2-$r~EwoyZ223qcaD8$rug0Y@0PwA=9- zmEo}m{V~}M;1}?sK*=fCXyqyZb+@p!P{v^DgF)`~lS$lXlkZdq`1us6gAYPPj+fzs z5alc_n^p0#N65UHng1&ri32aMuX>;t=VxJ-gTEeF{sZ;2#Q?MJr=MZ2wkJb2&vWI@ z{rawa96UP3eLBnI&vO&@?wYR$E`kGoxqQxZk=h<>CmcBOh_Q1FI`K8rWs&`lEwFeu zV+Iky^!v3Z40Ks36Gn|#K4i+f{ETGX!Alx+#f2>?YG~z971Xq$ADjJhd_3e)}$KvHIlTey7vny@xe87tR3MH z{})Q#6A1Z10dAw^%o27D$McekA{t^-B0PhnG19xX0-5{Ehh*O#B|MLNRuFMgRiX%d zYQzXH?iqY)r`>b)*S=F{^j!H(WUN5bcRnd(LUGEL)J7_vr70KDJABgK5OlMBGE_MG zRb(_IM;!75e0UN4D|2prG$bz5JTf>A1)FHINyASQpZ}Lk4;`qz-f-RL(VK;TegO8& ztlA7iKc?AP7CZ^_opNbMJ&)zA7$jmdfWvH&+wU5GQ-_4km32DI;}OqYV<0@>nGIhR z&EEg#38%Wm{?Afu;(|XJ9E-%IZB0*)V=VlyFrK+Q_^pojsGI(5s(piJc-ueK>7;8& zT5blLSI+!{&+DVnO@p`;8joa}mapwu=Q;45Tm8U25BTw`;N{e`T9{bqTGYwm#HRGn zzMSH|hxyjk+p^+=LgcuOyPvK7Th7CGx@$(3h)XT9P5|akO6BV@6(c8>7bn@U*^X(J z(1U0Fg5`+T?)P%>&21V}d!I}DAMbes@oHC?I3LnqthoDR7h%BuGK}VK5V1UI)4Gp4 z9iSM)oVKhR&5_Rpo}*mQy#T zI!3#Y9-s%X4|U0u#`0Nu0W|1Af_W9!KRDP+2`LDPAD*B!LkAKDc@)6pt?Od-1SAZ1 ze~X1)hTf3;o;g;3?Xf{fO&l1&(!}?-afo1-ZX%O+8W4jIQ?fXs>>zGeg=NSe0+5y@ zHQdbSuU`Af|AG?s!k1qbI&*gi+~dJLigMK?_Ak&EA{MCH1f?uoa!xm96v`VDLM}eLxS3vac6lVNpanDY0piFQo9UoPRjvEW55YX>(eq; zchQ@N1)w~SW9~$3RQIXB=7HKo2w(`lQ=h(z`aK|`U9_kaSjx*u)*jb{l(RfhHLv2ZsTk{&$GI*hDF@2S4R}q^4nZj9{jH_V;^0qgr0x*7={Z}ZaVoM!+{)i3mHw|0keE=gE+WkR@fV{DA*#CCuS;Tu3 z^%#1O%cV#H1!cVfq&*~MznR>9*!S-7eZZJv9BUKamS;^gpt;-een&ryocderuA`dIueOJ1~x3ELQz@ou7G~Er(qdIGY zT{z!PULy zAKtWf`g^Lhr-%Gr$qvua-v@)^It_0D6L^PFTG^{_Tn>qbe1bIKSJnNWr-(Zn>Opb$ zOFMhj*XVtIPNz3HL;#bmU3LpwZ39na@c9b}AUU}5MG^w4ohvUPrb0 zLpt_Q%@D0yCeD)HsBw2-xVxJO$oqWLl{E}^Gi z+#_ZzfB92K^5taJ;V>!e8*I_nBE$GurfaQcp~bI488bM_s2=5!(Fl!P1!aS3t!8m z_@Z6KY6a%LydU=PNQV|B!PfnWG}7A)YG`is%q=0(L-FXZf`Y}(mf5LWQ2ljP=3SSm zr0HJY`VwZD%)lDpg*IpDF-z*FeWGFP{k@^H;#`&>=VPS9vtTv}eT{mR(GUU0eGPPW zYVw9(LuQ5()hiF_(+dQJJ*;1a2sW0y`F{BN|5g?9epOs4_RCoYQ84eEF^qYi7Tt1QL5^vl*_-_l}e`(bJNC`-rRkN67;FW0-T+?ja z1W(d^h^ZpOsY8N&6X$vw+UM%4wDcVpz*W85J^NaDS7=+<`w<`|oQ$gXP1$ej{fEEUCvckjhk|}l6@(`^ttYa=>i*xT1eeiL%LuB|`{Lzd^{RLp z=l?e^fyUxXFOA)F0H=-JdJmJd^5cN#RD5?%N8KjlE(E;dTG*sLI~ok#n3|X9mGMpo zw=hfp&R1rZKQ`(aEfzXa1G~BId}Fg+i&IE#H+!iYksYhL@X_21@80QM$eXs(=<(it z(t<|N@orAjXBqfF;vFu^=Wa+E9sbw9w1$x1f1SgyZjrF50mhzde2RLHI#z1w4;a>S za5#}(tLH4a@JcSD0+u^!ePhhr)qHA${x++B(mL1z&WZ&jz1N_!Oc43`lS00jN{5Qv z{qad4U?MqG^f9$NIjBrRsGVx-BYufM)u!KUGCFYj0hD1Q8mqP@VL60KN?89cSvQU$Z42^ZcVH&nU<0LMz< zOrdPxi<29k}&+@QsUhZxG+zbspGPn>d!cNqz2uZw|7SV%Tg6rHD2e0c@*c@~6hz&u#SNw|sn< zWxmR%M%8I;oH{LEeAngT#CwnSk(6OgNJ2CCRu}-U(Fud^j8aT2+AVLH};~^tC@0cRlB;HI>_d;9X&bu7@_2VOzySiZfR%Mbi zBTGqWr!67qBIHpQL?ePJ9~DVWqjRlEn}7#hhNM3x?CP^4XoXk@REfkjlL~9w5PEo2 z1*3}lGO;84L0QTX9z&`-6n`e?b;H{^9ORGF^tj*%{He%$Wovt| zD?)%Vfaw~6S7JCYc-I_f*h%PIZBpZ7%VYUy0Ge505|1b}!p%k#OAFrmXfcJj%45Qo7#$Vg$~@gnONOx3nTb222Zh`Gdd87&Ht(EC zy^HGy?@WC3A3}%lxR~QJv2a_L2@Gs{@T10ipNhAptZoG?uyXb_d6`U^`p(T9m3>NZ zQz>`FmJ^{7>r>ZSRDM;`%_5DEY-s1u_^;Ns(J7ajkK#d*t=SnV!I{q_vh7Y~hy889 zZLxkA{&9ZK;ewahA*M+*F^0SSx6j4{yA^|efmWFHFSLAocGoagvMfOtD_XKOpYQH7 zNO_@OeN_D&B2i{vU3eAOo+4C()OkZSK_Lr*wwoztsr<;iyFR_Shf$DA?5E8Q`1<+a z@poF^bP)||7r}|sRiN{^natF^#W0R5AEh^CEJt-7gO!5#A|dm*83f8k;+; zZtM_A#S#S!QM@V8n40XnZI=A>A}R042J|9T(QBG(NE<^mwiObp;B)odo3z`qoI4m> zT}&N{ol&RRcRGD8Sa0A$(24Z&2!R6bGwuRug+|j{MlO&}UCRV4?d6UT`-V)d?C%rz z2Aw<-9x{{1Okle_HU84znjUDd><7f;Hilf`)87Vr>Vsj3L;RMw)ojUe%sAj@`>FnA zg7aqF-FpbA+pNF-x0e%^o=UTBQ}31hQW&nrkuYn%| z`;ji*u|2Q;@QfpH4H+hFOk}aydLhG2_^}_~d*QbTqIlNj`6$QXA5chY5Jbb(r}v){ zko5F-4Kf>EQZ0awc<$LyfA5SFrW5?}FTZP1t`h8%zjB(q|K9I^i6IZ7ZW|RGBdomo z*I96Npid`Xoa`kX0CMAL&bQJGoY|uxt^Biy>)i}(>6zA9V`r})d8C&OtOhy}^J9rw zj%ZCl8jWh!uGJVLglUoE?9+d{PnRYaKfL<4<&j1goyv6!=NRH8kh1tyLCSwt1tD)2 z?vG;kRQ!_6s3V{MGo@frtxjdeHhLP({~PU~?EgqRklP53|39$~m|;yny&?$uYmNHi z-u(-XXgO47*HK^jrsm(l9K&eGc?*&EF)5$Mh6Jt0`R$gcu68pct`v1Eh2e8-s>!~ ztCz&bDLPXuK`SkOd1H-$6(wb;8miUdj+2riNoekt+!lGLLt$i-fepK>ZD4>eP?q;; z`|U4h9?BY!EtGH@vn+VPKP>;~Mg?$`Vp)7y!a`?ktqf%14VG56RM90}4Hggv(FT1f z0MFQgfqX+Ud0xtix#h3U74T%_F995PWWiZ0^j2!mlww?qc;y3qWo0SdPtnr;cw2-n zEn=2psmqs+_r?!oCWL+jP^R?1Pz+86b#LGIvk)f-<%9+fPJDe(u+vp#=l}KaCEzS= z0MO0Q8IkP>dPBCdwGlZ z=2WHCL5mCx{xMU|79U?_Eh{X)foBbvz@{Kz;xf4mhit?Rld{x9W?7eXCy-4yYYZa3b(;@WtrRu8hU{*0~Z%S6h9xwb#CoU|ztUQYis4-HUd{s0Y>ocR2`-Go=h$E^F+< zRF<5F?~SPqJkw^gG6$=12-g9yn9Zm?n(?$0YWe$l?Jm@zouL<7-F`&FVp3>hc;hk6 z3fE9i+4$WyKFaY9=loQLKXs;zp4WQeg8ND{b<&0tPj*iG@$>HZJ2d(A{8PXfgAsX$ zSZ_jll7Ur^NcnKZB9DzR$b#wZXkff|(CsnT6ML_qeQzoLrl28aueyT`3s=hv{tF*x z4~RZ$z>Pj-=m&YConTMc7w1582|kT1kpG|0hrYJ%!P>^V`k-|DMPl0!j3v`yV@YSQ zQdFgx;bbn7Xn)TITI%BWGmtG{UJQnNXA z68~WBl@(X^M-5{|qz~ULcZ^EpS%80FOU?hWQyfskpxS-TdUsKZt${*;;`uo<*A8 zINWp|{bwgA^gusA6<-FV@Je{CsRO|YqxxsSh0rwzRL8EHc?fWk%lzO9S=N%Wg_Oik z+<1xH)M)-%F=Bu2HOZ@5AsDVR-EHj-ZVlTG>v%W@p|!Fk(3@j9ke$cW{x=JtI$#Ey zb@m{#;rd&LmdPejzQ1DfnO8qyx6c^qp1ELS2>n~QiL|DmJmB)PrCYrU1?GCrKzg%upik4j(PwC&R@Lncg8qNKsIde#drx=JZ zZ`M>KH4i(=Sgbls;MoUZ2hS?TuZHh_?e7Ffq=j^2A~49AS_`-6r-!d1Tl$6_I~bWZyx|8#!&sYV5<R(PxATL=+h=lF61kLjd~{0gi+C_QhpIIs7eO3SunW`7|<66ATE zFRI_Y;0MNJGo7}gF&Bk?=N08P&AsV34l|#$oaM;@)r+rO+K(4yw`w_ItE0SiUxQ8s zfiY&QRtteZY(PzZ+pQ*ysi{l>UQ<})YEiH#&}Ca~lh)zguDr|^!qK@}X zUTfvO4g9EmVdsLf{q(w%P_~O=amHOeEw09Yi1q2m;Ls+44Pknn_lK_k}--Dd^C6drar%>ZmrVH1UN_EhE&i`@(|& z5vg{Q*L(ziyc499d?U#I9e~=>>OJe1MN|CR0Un#d~@UZUsxtxbG5rC=S#wP%5P zDFOWwESJ!sXS!bQv99;}$_`_wS)wnS$nll)ed2{sFeuK*L%BK^6zf_tc2ZT)<0R;U z2GB`(R!1g=@SC6B0Zg32R}89IK!;ISPnqf1!g&?ltw?vSAd*)2fKTXFi^$#UJL%UJ zx*3);{xw83?R|tDU%vDb0Q|wfIc%r#{)mp#xY$#W;1KbNl4dtxwE=ph4Tw<4f_^Cx?U;q^pLVNs|{f zDg@tTq)wh;V)}Btvh^)RtEcowdpHR?_1T6;BD_8jnernkHsi*>C}{ znWtupnAPaQ?)3>tnNM-nvdM%4jH7eEq!60Gf;srs(kF=(L@9AE9=nvwl^5n!mgRTs zep`G1d_41I8+LWK!=uAGnx2NZD$*Sm(ymKrE*zVhorID6@vNVJ*xYd969_44z8~ze zfS9jd^ttVJQNSYoI;=#minBjim*;Ll9Jv1x+A-t?efrUEZhUt2(|ccz`h9D3|5&;L zMTe4gtMcFh@bZV)8MJ>Kk!>w|a#p+>S3DDOR+)X&T!#A~xcup*^G~B?w^U6~dVWOb z)UFu{t4@=foe3sRPIJDbz*aXF)F*hxvqe3&lRfG{>MdG&HVDL!g04f(R+QV`S*Xr> z33hTDdW<#(?4j=A$n50abRq9AJ5_yC|7$LYyaC|os>b8K4piI3jXb{pkerZRO+5-t zNnsf*DkJq-ueWotuW{NDepr{37Tb|L;vy>bl2k9 zgTsawsz+Nqn`{jZux|n~AV}Hgi1xR7D$k8tZWYwU&d1e>RHaP z-m`$n9u>R2R~)0o^it&MPC$+r%31z?q=&<#-As1VcP%np_M-h5=2cd8hh_0+xt&H} zho1S2MWDrJQ`*_q%q(ebkLCLXYtG)+s>scondtDW@sx)j$lo39-} ztGvga!bh@Z>wgJ+E}F3{RNSep%w!9g2SGA&+Cq>sJ_ohs=R(kmuL3y=z*5+3E_8jy zHu@jxU}koU&tGqH9rdR4Kd1v}=`wx~F3qg^4|OnI(f(LxcZ0e;MFJk_;N)7^k73>y z^tHL-@NR*62XF)57yz+Png+8vrWY9lzkUsJl~xuStvaj$x90$qa)7ca;e%imB01bo7XLg|CKwQe64ieQvRAH(8r{sjdk^eqs-#D6T! z_w5&BRc`kdWx=UU{D-@%(gH>?#QUgEh_tEJWkJ-wzk&F7Lkrmzbe8#Vo>G^aCD;dV zQg*NE8JhEXR}ee!O)t=2plPrT6W?I#4PW9o{c1kba+!v0zXl0hotMc5P~eyK{i8G* z0v#$5)5(7v{r5UPqD@0HXhyPx%0y=vZBD^Z=D<7C4UO_Of^_<8BGo*kq{`@QU?>uh?$Nx9_Ha8{fN+sH0^hL*7ReRqSML&;WI zC{bWB@Vl6+P{8dLsaS5-=b>+jba*Ik%bO6Hlta~o{%Xzz{v09bCXAomKPaO68`3}! zNGYGnI|^|7!m8PD0r>If(mj-+!lK(l8ReV&K2rCED0673KEc2|A-XDX=Ps}5>-NZ@ z7x=irhr4>xwK(PgJQ9J;y&CODwHgura6~Bg@NE)%P}C!uvJ|#Ac!l!W7bUmY8Nm_PnA6YcM1z6n2KZg@nBpw z&&RpjatPD#r2CDt;p=x{^&|>018al_{Bkn|ITp}H^4|ic{Lj-h%~ME zgHQ*o1nooU)}hkTEmmCK>uVaqLikWD+-;(7m_+H4mP}uF43jJ{F&hxO)ob7aHh65Z=S4Eqh=!^`F_G+;x9MnlrSTuXmT zcc423a1grW))lKFflWS8>1omN^e5Rc4wz@}#(%a*_2c^+{XCcX+jnw0e{bXsD$%YO zXH7T?gejT)Q7H;27!147%+`sj+ev% zGoFIHMZF0O}O){~cNAl<6#zeP!5{PYc0D>FpH;Yyh10asc zt0e2*GyEV$bI!7233jacUxBF+B8lSeY9$LBMDn8EDFB zL8Fg0P8KO)HG71u5yBIcxxNHXunF7C>DsiJrg8bg6LYf{yNaKnA5woEu!f(oh)tx6 zAIX2@QEv{Z3HQHbkV>66r|g&2>jG&c^f1>pWfxX|)YE^oo4@3()5j=|&v&ujw}Yfd zw`c#5o@JiOlokztiF?h{Mc!m5UVpv--Y6i&RhPa!gCK49?kH9dUU`B7k0z_(JVQHt zFv@Yd3XSKc=Gl{h4|LtqigE9b?=77DiJL8~6S!~MPzdBYacg`ry4)2cb5CUBvo?!z z(>zun)^P!)zo1~69Q{X*XGlFS@JK9X)9vz+Wm-#6>@8@pV|()a*&NfXd0-W_NUQc5 z&Hc@5Guz?C#TOQf;ev`ra;J!l=AW(8$=(UfJ=tRVnoM47)@RloWmehbd9~V_8AW*n zH9cusO63w!Ckx^TPsESHrck|~ofo>3Dwg*7oe6h?=!Bl}+`OyGn`V65+B8n?&Pq@F zKz%^}GGsd&E9Y3t2o$^0`voo>#f*Nd*PXOH1!{g}+uhw#eH-%m?DTqVY_t#-kezcl zL^I}t2N~>cHGu;98KrMp%B!j-^i3=$*C*zx@Swh{MfB0}uDPuf9%O(lXsTAxc5u+l zRb5Z^AL9;y+{EpalFT1ToMd}^7pp#MPOZinRbrNMB1Y? z z`9^7p^ugI%ee%tdhkvCU3=dsj5h;1^9?H1{<|n}-PCmF*N2_S#S;B(mA6l5eu2jvf(6RvS-*fwCQSf9}cUC+LTG0 z5e&u768vhf*0zz^0AM+S&N5C}GbP~n?OWlbaW1Wgq3_zQ>z^(AH+#Y^Cq2F4XzAEK zl=?E895hO(-8q_P)xCkG-}OqbRn~PGlGMs{iSO0CU4u%udcYaT1313FxIFMe{#Sni zf#HD$!DCg6h*6;Ga;pk7$@89%CbYvN{ga3Lsla>7DW*G}1qX=5e?S9Duj&3+sPUDi z+)}4kjQ3TVS^mt(WrNFsEy;tE)^b>L=K1(uT^l4szSAq(_wvnhpqjsHkmABMnSpo_yqT@i{R z(g!MFsUM%1?*welaWhVC%GFr=%x;nPUT>CEGWk#4E@d?`kAOk9T+i8FDiK8(^Qk9UlDJ!uLh|#FqDlf(9XI7$-b3vvFRl=(KAQWCTJQSDG)_SM8NWzja zI3&SH4~!*9&scZ&Cbw;39}?|*?$aG2u9nMu-d%r7dU;=rtu*IfP~J)G-sBbiov(MFCQQ(GsNMOlOVBd&2X&;eUP;O; z(F|C^6ba!BbBU#q%Ac}Ww!3siap8fSH~=E|ZWTFBBC1`fmvd%ZWi{yG;v`#0oF9RL z2k|QE>kyDF=dMenHsQL@2&)SV#_jlyuzPI&X3Ef!h>*c+30yX0OjTkQgO0SUw3#%s z`b?BmRm(vE#`%v^65O;Khal=}a|C0(gb~H$eKwqhY}`p@+nGNyty|7A)+#kS(ZUao zBW-3RcNIHlSxKJIJjx|~iQ0|a+=XA)-A_TN@$Z{K)GwJ_TwQ01_bjvOdl(#`do zz{^_15P^{#_(kxCMs#H%72xE{Jn+=-YHjPdvP}1CU72t}!1JYH-py1yI5wvMoR_4w>AfDGo1=C7)o+q7aGHQrL-b0; ztvBsI1g>g4+sjki&z1RFIvN?Yft;8qZsTi}^1f*8#so*}F>!vzSq0=Chl1+tqrYw` zGm7i+eykT~LRx3mJuaOHR(S1?p%VB{?gOrz3YNM(rwPEg9-Yj{fvr zUF00k|A7np2BxDJeq|W3JN^ zDnrNleJ6|*XDQL&=Ax3EL ze$Jn}uX^7&>Y=rrKDQ>n3|Em!wlPOM`Gxf+dq+-fESdKRR?u0 zL!3r#%#jM6r471L{RQIr!#gy2YxIp{mwR-uGl7~rEvCYNMvMHsJN#~+g3%?JANPGq zm&g89Bcf#q)}Hc1)_82Xwbby?l`cK!qbda3^JSLve+awc*{zyPJu`g4IQAL$i30B> zVM1_`KG_*z07=e>s=z4$EOOyma@!vE|ndU#Rd)z8g`By z{wf#KY8Z=mpd`7s5Q&$jxd}lGfQ9+kLfEqvHWiESMIVeH`N(8!WwZJ|{i2-w%0ZQG zG%#@njc!9Vbp}V{%c-0G@{Il+E)o)gfocF7Wzc?NmqtsH#B`cmDPf29Y3Z@SIe!as z_~qhObVle(t`TbD0t1_v9*(V^^g6^mH{Lh)aSVhFoM;zrXYbx*gNJ{GA6V_Q;(LW% zWXRTTivF_9V;`G8D^kjnR

4%^V~=KC(AsH!z*I!)%ZYyj$vY7id>&0tU;6 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