From 2230d633349ff27dcdee74dfc24f2430086fe359 Mon Sep 17 00:00:00 2001 From: Olga Kunyavskaya Date: Mon, 24 Oct 2022 02:59:22 +0300 Subject: [PATCH] Eth2Near-relay: split relay on a few crates, many improvements (#825) * Separate `logger`, `eth_rpc_client`, and `Eth2OnNearClient` contract initialization into separate crates * Check configuration setup for Mainnet: add a verification on init args that it can't be executed in the trustless mode without `bls` verification on Mainnet (#767). * Improve config file usage on contract initialization: `validate_updates`, `verify_bls_signatures`, `hashes_gc_threshold`, `max_submitted_blocks_by_account`, `trusted_signer_account_id` fields are set through the config file instead of hardcoded values (#769). * Improve configuration of some args: `network`, `contract_type`, and `near_network_id` now use `enum`s instead of `String`s (#811). * Add messages for unhandled `unwraps()` on relay start-up (#816). Co-authored-by: Kirill Co-authored-by: Karim --- .github/workflows/contracts-near.yml | 12 + .../src/dao_eth_client_contract.rs | 10 +- .../src/eth_client_contract.rs | 20 +- eth2near/contract_wrapper/src/eth_network.rs | 58 + eth2near/contract_wrapper/src/lib.rs | 5 +- eth2near/contract_wrapper/src/near_network.rs | 52 + .../src/near_rpc_client.rs | 0 eth2near/eth2-contract-init/Cargo.lock | 4833 +++++++++++++++++ eth2near/eth2-contract-init/Cargo.toml | 34 + .../eth2-contract-init/config_for_tests.toml | 4 + eth2near/eth2-contract-init/src/config.rs | 112 + .../src/config_for_tests.rs | 28 + .../eth2-contract-init/src/init_contract.rs | 214 + eth2near/eth2-contract-init/src/lib.rs | 3 + eth2near/eth2-contract-init/src/main.rs | 61 + eth2near/eth2-contract-init/test.sh | 8 + eth2near/eth2near-block-relay-rs/Cargo.lock | 397 +- eth2near/eth2near-block-relay-rs/Cargo.toml | 4 +- .../config_for_tests.toml | 10 +- .../eth2near-block-relay-rs/src/config.rs | 62 +- .../src/config_for_tests.rs | 11 +- .../src/contract_type.rs | 55 + .../src/eth2near_relay.rs | 45 +- .../src/init_contract.rs | 130 - .../src/last_slot_searcher.rs | 8 +- eth2near/eth2near-block-relay-rs/src/lib.rs | 11 +- eth2near/eth2near-block-relay-rs/src/main.rs | 43 +- .../src/prometheus_metrics.rs | 2 +- .../eth2near-block-relay-rs/src/test_utils.rs | 54 +- eth2near/eth_rpc_client/Cargo.lock | 4758 ++++++++++++++++ eth2near/eth_rpc_client/Cargo.toml | 45 + eth2near/eth_rpc_client/config_for_tests.toml | 9 + eth2near/eth_rpc_client/data/.gitattributes | 2 + .../beacon_block_body_kiln_slot_741888.json | 0 .../beacon_block_goerli_slot_3885632.json | 1 + ...lock_header_response_kiln_slot_741888.json | 0 ..._block_header_struct_kiln_slot_741888.json | 0 .../data/beacon_block_kiln_slot_741888.json | 0 .../beacon_header_goerli_slot_3885632.json | 1 + ...light_client_update_goerli_period_474.json | 1 + .../beacon_state_goerli_slot_3887616.json | 3 + .../beacon_state_goerli_slot_3887699.json | 3 + .../src/beacon_block_body_merkle_tree.rs | 2 +- .../src/beacon_rpc_client.rs | 12 +- .../eth_rpc_client/src/config_for_tests.rs | 32 + .../src/errors.rs} | 68 +- .../src/eth1_rpc_client.rs | 0 .../src/execution_block_proof.rs | 4 +- .../hand_made_finality_light_client_update.rs | 37 +- eth2near/eth_rpc_client/src/lib.rs | 9 + .../src/light_client_snapshot_with_proof.rs | 0 eth2near/eth_rpc_client/src/utils.rs | 20 + eth2near/eth_rpc_client/test.sh | 5 + eth2near/finality-update-verify/Cargo.lock | 45 + eth2near/logger/Cargo.lock | 39 + eth2near/logger/Cargo.toml | 8 + .../src/logger.rs => logger/src/lib.rs} | 2 +- 57 files changed, 10913 insertions(+), 479 deletions(-) create mode 100644 eth2near/contract_wrapper/src/eth_network.rs create mode 100644 eth2near/contract_wrapper/src/near_network.rs rename eth2near/{eth2near-block-relay-rs => contract_wrapper}/src/near_rpc_client.rs (100%) create mode 100644 eth2near/eth2-contract-init/Cargo.lock create mode 100644 eth2near/eth2-contract-init/Cargo.toml create mode 100644 eth2near/eth2-contract-init/config_for_tests.toml create mode 100644 eth2near/eth2-contract-init/src/config.rs create mode 100644 eth2near/eth2-contract-init/src/config_for_tests.rs create mode 100644 eth2near/eth2-contract-init/src/init_contract.rs create mode 100644 eth2near/eth2-contract-init/src/lib.rs create mode 100644 eth2near/eth2-contract-init/src/main.rs create mode 100755 eth2near/eth2-contract-init/test.sh create mode 100644 eth2near/eth2near-block-relay-rs/src/contract_type.rs delete mode 100644 eth2near/eth2near-block-relay-rs/src/init_contract.rs create mode 100644 eth2near/eth_rpc_client/Cargo.lock create mode 100644 eth2near/eth_rpc_client/Cargo.toml create mode 100644 eth2near/eth_rpc_client/config_for_tests.toml create mode 100644 eth2near/eth_rpc_client/data/.gitattributes rename eth2near/{eth2near-block-relay-rs => eth_rpc_client}/data/beacon_block_body_kiln_slot_741888.json (100%) create mode 100644 eth2near/eth_rpc_client/data/beacon_block_goerli_slot_3885632.json rename eth2near/{eth2near-block-relay-rs => eth_rpc_client}/data/beacon_block_header_response_kiln_slot_741888.json (100%) rename eth2near/{eth2near-block-relay-rs => eth_rpc_client}/data/beacon_block_header_struct_kiln_slot_741888.json (100%) rename eth2near/{eth2near-block-relay-rs => eth_rpc_client}/data/beacon_block_kiln_slot_741888.json (100%) create mode 100644 eth2near/eth_rpc_client/data/beacon_header_goerli_slot_3885632.json create mode 100644 eth2near/eth_rpc_client/data/beacon_light_client_update_goerli_period_474.json create mode 100644 eth2near/eth_rpc_client/data/beacon_state_goerli_slot_3887616.json create mode 100644 eth2near/eth_rpc_client/data/beacon_state_goerli_slot_3887699.json rename eth2near/{eth2near-block-relay-rs => eth_rpc_client}/src/beacon_block_body_merkle_tree.rs (99%) rename eth2near/{eth2near-block-relay-rs => eth_rpc_client}/src/beacon_rpc_client.rs (99%) create mode 100644 eth2near/eth_rpc_client/src/config_for_tests.rs rename eth2near/{eth2near-block-relay-rs/src/relay_errors.rs => eth_rpc_client/src/errors.rs} (89%) rename eth2near/{eth2near-block-relay-rs => eth_rpc_client}/src/eth1_rpc_client.rs (100%) rename eth2near/{eth2near-block-relay-rs => eth_rpc_client}/src/execution_block_proof.rs (98%) rename eth2near/{eth2near-block-relay-rs => eth_rpc_client}/src/hand_made_finality_light_client_update.rs (94%) create mode 100644 eth2near/eth_rpc_client/src/lib.rs rename eth2near/{eth2near-block-relay-rs => eth_rpc_client}/src/light_client_snapshot_with_proof.rs (100%) create mode 100644 eth2near/eth_rpc_client/src/utils.rs create mode 100755 eth2near/eth_rpc_client/test.sh create mode 100644 eth2near/logger/Cargo.lock create mode 100644 eth2near/logger/Cargo.toml rename eth2near/{eth2near-block-relay-rs/src/logger.rs => logger/src/lib.rs} (94%) diff --git a/.github/workflows/contracts-near.yml b/.github/workflows/contracts-near.yml index ba00a3a7a..5023c8f7a 100644 --- a/.github/workflows/contracts-near.yml +++ b/.github/workflows/contracts-near.yml @@ -58,6 +58,18 @@ jobs: ./test.sh timeout-minutes: 20 + - job-name: test eth2near/eth2-contract-init + cmd: | + cd eth2near/eth2-contract-init + ./test.sh + timeout-minutes: 20 + + - job-name: test eth2near/eth_rpc_client + cmd: | + cd eth2near/eth_rpc_client + ./test.sh + timeout-minutes: 20 + name: ${{ matrix.job-name }} steps: - name: Clone the repository diff --git a/eth2near/contract_wrapper/src/dao_eth_client_contract.rs b/eth2near/contract_wrapper/src/dao_eth_client_contract.rs index 912dedb85..7b5cbbe6a 100644 --- a/eth2near/contract_wrapper/src/dao_eth_client_contract.rs +++ b/eth2near/contract_wrapper/src/dao_eth_client_contract.rs @@ -134,9 +134,7 @@ impl EthClientContractTrait for DaoEthClientContract { mod tests { use crate::eth_client_contract_trait::EthClientContractTrait; use crate::near_contract_wrapper::NearContractWrapper; - use crate::{ - dao_contract, dao_eth_client_contract, eth_client_contract, near_contract_wrapper, utils, - }; + use crate::{dao_contract, dao_eth_client_contract, eth_client_contract, eth_network, near_contract_wrapper, utils}; use eth_types::eth2::{ExtendedBeaconBlockHeader, LightClientUpdate, SyncCommittee}; use eth_types::BlockHeader; use std::path::PathBuf; @@ -180,8 +178,6 @@ mod tests { const CONTRACT_ACCOUNT_ID: &str = "dev-1660212590113-35162107482173"; const DAO_CONTRACT_ACCOUNT_ID: &str = "eth2-test.sputnikv2.testnet"; - const ETH_NETWORK: &str = "kiln"; - let near_contract_wrapper = Box::new(NearContractWrapper::new_with_raw_secret_key( NEAR_ENDPOINT, &signer_account_id, @@ -232,11 +228,13 @@ mod tests { } eth_client.init_contract( - ETH_NETWORK.to_string(), + eth_network::EthNetwork::Kiln, finalized_execution_header.unwrap(), finalized_beacon_header, current_sync_committee, next_sync_committee, + Some(true), + Some(false), None, None, Some(eth_client.contract_wrapper.get_signer_account_id()), diff --git a/eth2near/contract_wrapper/src/eth_client_contract.rs b/eth2near/contract_wrapper/src/eth_client_contract.rs index b0b2e3e9a..dfd4f9456 100644 --- a/eth2near/contract_wrapper/src/eth_client_contract.rs +++ b/eth2near/contract_wrapper/src/eth_client_contract.rs @@ -13,6 +13,7 @@ use serde_json::json; use std::error::Error; use std::option::Option; use std::string::String; +use crate::eth_network::EthNetwork; use serde::Serialize; /// Implementation for interaction with Ethereum Light Client Contract on NEAR. @@ -46,11 +47,13 @@ impl EthClientContract { /// * `trusted_signer` - the account address of the trusted signer which is allowed to submit light client updates. pub fn init_contract( &self, - ethereum_network: String, + ethereum_network: EthNetwork, finalized_execution_header: BlockHeader, finalized_beacon_header: ExtendedBeaconBlockHeader, current_sync_committee: SyncCommittee, next_sync_committee: SyncCommittee, + validate_updates: Option, + verify_bls_signatures: Option, hashes_gc_threshold: Option, max_submitted_blocks_by_account: Option, trusted_signer: Option, @@ -70,13 +73,13 @@ impl EthClientContract { } let init_input = InitInput { - network: ethereum_network, + network: ethereum_network.to_string(), finalized_execution_header, finalized_beacon_header, current_sync_committee, next_sync_committee, - validate_updates: true, - verify_bls_signatures: false, + validate_updates: validate_updates.unwrap_or(true), + verify_bls_signatures: verify_bls_signatures.unwrap_or(false), hashes_gc_threshold: hashes_gc_threshold.unwrap_or(51_000), max_submitted_blocks_by_account: max_submitted_blocks_by_account.unwrap_or(8000), trusted_signer, @@ -102,7 +105,9 @@ impl EthClientContract { self.contract_wrapper.get_account_id() } - pub fn get_signature_account_id(&self) -> AccountId { self.contract_wrapper.get_signer_account_id() } + pub fn get_signer_account_id(&self) -> AccountId { + self.contract_wrapper.get_signer_account_id() + } } impl EthClientContractTrait for EthClientContract { @@ -328,7 +333,6 @@ mod tests { const PATH_TO_CURRENT_SYNC_COMMITTEE: &str = "./data/next_sync_committee_kiln_period_133.json"; const PATH_TO_NEXT_SYNC_COMMITTEE: &str = "./data/next_sync_committee_kiln_period_134.json"; - const ETH_NETWORK: &str = "kiln"; let current_sync_committee: SyncCommittee = serde_json::from_str( &std::fs::read_to_string(PATH_TO_CURRENT_SYNC_COMMITTEE).expect("Unable to read file"), @@ -361,11 +365,13 @@ mod tests { } eth_client_contract.init_contract( - ETH_NETWORK.to_string(), + eth_client_contract::EthNetwork::Kiln, finalized_execution_header.unwrap(), finalized_beacon_header, current_sync_committee, next_sync_committee, + Some(true), + Some(false), None, None, Option::::Some(trusted_signer.parse().unwrap()), diff --git a/eth2near/contract_wrapper/src/eth_network.rs b/eth2near/contract_wrapper/src/eth_network.rs new file mode 100644 index 000000000..8c4527541 --- /dev/null +++ b/eth2near/contract_wrapper/src/eth_network.rs @@ -0,0 +1,58 @@ +use std::error::Error; +use std::fmt; +use std::fmt::{Display, Formatter}; +use std::str::FromStr; +use serde::Deserialize; + +#[derive(Debug, Clone, Deserialize)] +pub enum EthNetwork { + Mainnet, + Kiln, + Ropsten, + Goerli, +} + +#[derive(Debug, Clone, Deserialize)] +pub struct IncorrectEthNetwork; + +impl Display for IncorrectEthNetwork { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + write!( + f, + "Unknown Ethereum network. Possible networks: 'Mainnet', 'Kiln', 'Goerli', 'Ropsten'" + ) + } +} + +impl Error for IncorrectEthNetwork {} + +impl Display for EthNetwork { + fn fmt(&self, f: &mut Formatter<'_>) -> fmt::Result { + write!(f, "{}", self.as_str()) + } +} + +impl EthNetwork { + pub fn as_str(&self) -> &str { + match self { + EthNetwork::Mainnet => "mainnet", + EthNetwork::Kiln => "kiln", + EthNetwork::Goerli => "goerli", + EthNetwork::Ropsten => "ropsten" + } + } +} + +impl FromStr for EthNetwork { + type Err = IncorrectEthNetwork; + + fn from_str(s: &str) -> Result { + match s.to_lowercase().as_str() { + "mainnet" => Ok(EthNetwork::Mainnet), + "kiln" => Ok(EthNetwork::Kiln), + "goerli" => Ok(EthNetwork::Goerli), + "ropsten" => Ok(EthNetwork::Ropsten), + _ => Err(IncorrectEthNetwork), + } + } +} diff --git a/eth2near/contract_wrapper/src/lib.rs b/eth2near/contract_wrapper/src/lib.rs index 57690aaab..7f399b0bf 100644 --- a/eth2near/contract_wrapper/src/lib.rs +++ b/eth2near/contract_wrapper/src/lib.rs @@ -8,4 +8,7 @@ pub mod eth_client_contract_trait; pub mod file_eth_client_contract; pub mod near_contract_wrapper; pub mod sandbox_contract_wrapper; -pub mod utils; \ No newline at end of file +pub mod utils; +pub mod eth_network; +pub mod near_network; +pub mod near_rpc_client; diff --git a/eth2near/contract_wrapper/src/near_network.rs b/eth2near/contract_wrapper/src/near_network.rs new file mode 100644 index 000000000..542c45bf0 --- /dev/null +++ b/eth2near/contract_wrapper/src/near_network.rs @@ -0,0 +1,52 @@ +use std::error::Error; +use std::fmt; +use std::fmt::{Display, Formatter}; +use std::str::FromStr; +use serde::Deserialize; + +#[derive(Debug, Clone, Deserialize)] +pub enum NearNetwork { + Mainnet, + Testnet, +} + +#[derive(Debug, Clone, Deserialize)] +pub struct IncorrectNearNetwork; + +impl Display for IncorrectNearNetwork { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + write!( + f, + "Unknown NEAR network id. Possible networks: 'Mainnet', 'Testnet'" + ) + } +} + +impl Error for IncorrectNearNetwork {} + +impl Display for NearNetwork { + fn fmt(&self, f: &mut Formatter<'_>) -> fmt::Result { + write!(f, "{}", self.as_str()) + } +} + +impl NearNetwork { + pub fn as_str(&self) -> &str { + match self { + NearNetwork::Mainnet => "mainnet", + NearNetwork::Testnet => "testnet", + } + } +} + +impl FromStr for NearNetwork { + type Err = IncorrectNearNetwork; + + fn from_str(s: &str) -> Result { + match s.to_lowercase().as_str() { + "mainnet" => Ok(NearNetwork::Mainnet), + "testnet" => Ok(NearNetwork::Testnet), + _ => Err(IncorrectNearNetwork), + } + } +} diff --git a/eth2near/eth2near-block-relay-rs/src/near_rpc_client.rs b/eth2near/contract_wrapper/src/near_rpc_client.rs similarity index 100% rename from eth2near/eth2near-block-relay-rs/src/near_rpc_client.rs rename to eth2near/contract_wrapper/src/near_rpc_client.rs diff --git a/eth2near/eth2-contract-init/Cargo.lock b/eth2near/eth2-contract-init/Cargo.lock new file mode 100644 index 000000000..ce32e0f74 --- /dev/null +++ b/eth2near/eth2-contract-init/Cargo.lock @@ -0,0 +1,4833 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 3 + +[[package]] +name = "Inflector" +version = "0.11.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fe438c63458706e03479442743baae6c88256498e6431708f6dfc520a26515d3" + +[[package]] +name = "actix" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f728064aca1c318585bf4bb04ffcfac9e75e508ab4e8b1bd9ba5dfe04e2cbed5" +dependencies = [ + "actix-rt", + "actix_derive", + "bitflags", + "bytes 1.2.1", + "crossbeam-channel", + "futures-core", + "futures-sink", + "futures-task", + "futures-util", + "log", + "once_cell", + "parking_lot", + "pin-project-lite 0.2.9", + "smallvec", + "tokio 1.21.1", + "tokio-util 0.7.4", +] + +[[package]] +name = "actix-rt" +version = "2.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ea16c295198e958ef31930a6ef37d0fb64e9ca3b6116e6b93a8bdae96ee1000" +dependencies = [ + "futures-core", + "tokio 1.21.1", +] + +[[package]] +name = "actix_derive" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d44b8fee1ced9671ba043476deddef739dd0959bf77030b26b738cc591737a7" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "addr2line" +version = "0.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9ecd88a8c8378ca913a680cd98f0f13ac67383d35993f86c90a70e3f137816b" +dependencies = [ + "gimli", +] + +[[package]] +name = "adler" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" + +[[package]] +name = "adler32" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aae1277d39aeec15cb388266ecc24b11c80469deae6067e17a1a7aa9e5c1f234" + +[[package]] +name = "ahash" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fcb51a0695d8f838b1ee009b3fbf66bda078cd64590202a864a8f3e8c4315c47" +dependencies = [ + "getrandom 0.2.7", + "once_cell", + "version_check", +] + +[[package]] +name = "aho-corasick" +version = "0.7.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4f55bd91a0978cbfd91c457a164bab8b4001c833b7f323132c0a4e1922dd44e" +dependencies = [ + "memchr", +] + +[[package]] +name = "android_system_properties" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311" +dependencies = [ + "libc", +] + +[[package]] +name = "anyhow" +version = "1.0.65" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "98161a4e3e2184da77bb14f02184cdd111e83bbbcc9979dfee3c44b9a85f5602" + +[[package]] +name = "arrayref" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4c527152e37cf757a3f78aae5a06fbeefdb07ccc535c980a3208ee3060dd544" + +[[package]] +name = "arrayvec" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23b62fc65de8e4e7f52534fb52b0f3ed04746ae267519eef2a83941e8085068b" + +[[package]] +name = "arrayvec" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8da52d66c7071e2e3fa2a1e5c6d088fec47b593032b254f5e980de8ea54454d6" + +[[package]] +name = "async-channel" +version = "1.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e14485364214912d3b19cc3435dde4df66065127f05fa0d75c712f36f12c2f28" +dependencies = [ + "concurrent-queue", + "event-listener", + "futures-core", +] + +[[package]] +name = "async-executor" +version = "1.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "871f9bb5e0a22eeb7e8cf16641feb87c9dc67032ccf8ff49e772eb9941d3a965" +dependencies = [ + "async-task", + "concurrent-queue", + "fastrand", + "futures-lite", + "once_cell", + "slab", +] + +[[package]] +name = "async-global-executor" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0da5b41ee986eed3f524c380e6d64965aea573882a8907682ad100f7859305ca" +dependencies = [ + "async-channel", + "async-executor", + "async-io", + "async-lock", + "blocking", + "futures-lite", + "once_cell", +] + +[[package]] +name = "async-io" +version = "1.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "83e21f3a490c72b3b0cf44962180e60045de2925d8dff97918f7ee43c8f637c7" +dependencies = [ + "autocfg", + "concurrent-queue", + "futures-lite", + "libc", + "log", + "once_cell", + "parking", + "polling", + "slab", + "socket2 0.4.7", + "waker-fn", + "winapi 0.3.9", +] + +[[package]] +name = "async-lock" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e97a171d191782fba31bb902b14ad94e24a68145032b7eedf871ab0bc0d077b6" +dependencies = [ + "event-listener", +] + +[[package]] +name = "async-process" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "02111fd8655a613c25069ea89fc8d9bb89331fa77486eb3bc059ee757cfa481c" +dependencies = [ + "async-io", + "autocfg", + "blocking", + "cfg-if 1.0.0", + "event-listener", + "futures-lite", + "libc", + "once_cell", + "signal-hook", + "winapi 0.3.9", +] + +[[package]] +name = "async-std" +version = "1.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62565bb4402e926b29953c785397c6dc0391b7b446e45008b0049eb43cec6f5d" +dependencies = [ + "async-channel", + "async-global-executor", + "async-io", + "async-lock", + "crossbeam-utils", + "futures-channel", + "futures-core", + "futures-io", + "futures-lite", + "gloo-timers", + "kv-log-macro", + "log", + "memchr", + "once_cell", + "pin-project-lite 0.2.9", + "pin-utils", + "slab", + "wasm-bindgen-futures", +] + +[[package]] +name = "async-task" +version = "4.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a40729d2133846d9ed0ea60a8b9541bccddab49cd30f0715a1da672fe9a2524" + +[[package]] +name = "async-trait" +version = "0.1.57" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76464446b8bc32758d7e88ee1a804d9914cd9b1cb264c029899680b0be29826f" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "atomic-waker" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "065374052e7df7ee4047b1160cca5e1467a12351a40b3da123c870ba0b8eda2a" + +[[package]] +name = "atomic_refcell" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "73b5e5f48b927f04e952dedc932f31995a65a0bf65ec971c74436e51bf6e970d" + +[[package]] +name = "atty" +version = "0.2.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8" +dependencies = [ + "hermit-abi", + "libc", + "winapi 0.3.9", +] + +[[package]] +name = "autocfg" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" + +[[package]] +name = "backtrace" +version = "0.3.66" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cab84319d616cfb654d03394f38ab7e6f0919e181b1b57e1fd15e7fb4077d9a7" +dependencies = [ + "addr2line", + "cc", + "cfg-if 1.0.0", + "libc", + "miniz_oxide", + "object", + "rustc-demangle", +] + +[[package]] +name = "base64" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b41b7ea54a0c9d92199de89e20e58d49f02f8e699814ef3fdf266f6f748d15c7" + +[[package]] +name = "base64" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3441f0f7b02788e948e47f457ca01f1d7e6d92c693bc132c22b087d3141c03ff" + +[[package]] +name = "base64" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "904dfeac50f3cdaba28fc6f57fdcddb75f49ed61346676a78c4ffe55877802fd" + +[[package]] +name = "binary-install" +version = "0.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7b5bc5f8c50dd6a80d0b303ddab79f42ddcb52fd43d68107ecf622c551fd4cd4" +dependencies = [ + "curl", + "dirs 1.0.5", + "failure", + "flate2", + "hex 0.3.2", + "is_executable", + "siphasher", + "tar", + "zip", +] + +[[package]] +name = "bitflags" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" + +[[package]] +name = "bitvec" +version = "0.17.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41262f11d771fd4a61aa3ce019fca363b4b6c282fca9da2a31186d3965a47a5c" +dependencies = [ + "either", + "radium 0.3.0", +] + +[[package]] +name = "bitvec" +version = "0.20.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7774144344a4faa177370406a7ff5f1da24303817368584c6206c8303eb07848" +dependencies = [ + "funty 1.1.0", + "radium 0.6.2", + "tap", + "wyz 0.2.0", +] + +[[package]] +name = "bitvec" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bc2832c24239b0141d5674bb9174f9d68a8b5b3f2753311927c172ca46f7e9c" +dependencies = [ + "funty 2.0.0", + "radium 0.7.0", + "tap", + "wyz 0.5.0", +] + +[[package]] +name = "blake2" +version = "0.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0a4e37d16930f5459780f5621038b6382b9bb37c19016f39fb6b5808d831f174" +dependencies = [ + "crypto-mac", + "digest 0.9.0", + "opaque-debug", +] + +[[package]] +name = "blake2b_simd" +version = "0.5.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "afa748e348ad3be8263be728124b24a24f268266f6f5d58af9d75f6a40b5c587" +dependencies = [ + "arrayref", + "arrayvec 0.5.2", + "constant_time_eq", +] + +[[package]] +name = "block-buffer" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4152116fd6e9dadb291ae18fc1ec3575ed6d84c29642d97890f4b4a3417297e4" +dependencies = [ + "generic-array", +] + +[[package]] +name = "block-buffer" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "69cce20737498f97b993470a6e536b8523f0af7892a4f928cceb1ac5e52ebe7e" +dependencies = [ + "generic-array", +] + +[[package]] +name = "blocking" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c6ccb65d468978a086b69884437ded69a90faab3bbe6e67f242173ea728acccc" +dependencies = [ + "async-channel", + "async-task", + "atomic-waker", + "fastrand", + "futures-lite", + "once_cell", +] + +[[package]] +name = "bls" +version = "0.2.0" +source = "git+https://github.com/aurora-is-near/lighthouse.git?rev=b624c3f0d3c5bc9ea46faa14c9cb2d90ee1e1dec#b624c3f0d3c5bc9ea46faa14c9cb2d90ee1e1dec" +dependencies = [ + "blst", + "eth2_hashing", + "eth2_serde_utils", + "eth2_ssz", + "ethereum-types", + "getrandom 0.2.7", + "hex 0.4.3", + "rand 0.7.3", + "serde", + "serde_derive", + "tree_hash", + "zeroize", +] + +[[package]] +name = "blst" +version = "0.3.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a30d0edd9dd1c60ddb42b80341c7852f6f985279a5c1a83659dcb65899dec99" +dependencies = [ + "cc", + "glob", + "threadpool", + "which", + "zeroize", +] + +[[package]] +name = "borsh" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "15bf3650200d8bffa99015595e10f1fbd17de07abbc25bb067da79e769939bfa" +dependencies = [ + "borsh-derive", + "hashbrown 0.11.2", +] + +[[package]] +name = "borsh-derive" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6441c552f230375d18e3cc377677914d2ca2b0d36e52129fe15450a2dce46775" +dependencies = [ + "borsh-derive-internal", + "borsh-schema-derive-internal", + "proc-macro-crate 0.1.5", + "proc-macro2", + "syn", +] + +[[package]] +name = "borsh-derive-internal" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5449c28a7b352f2d1e592a8a28bf139bc71afb0764a14f3c02500935d8c44065" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "borsh-schema-derive-internal" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cdbd5696d8bfa21d53d9fe39a714a18538bad11492a42d066dbbc395fb1951c0" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "bs58" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "771fe0050b883fcc3ea2359b1a96bcfbc090b7116eae7c3c512c7a083fdf23d3" + +[[package]] +name = "buf_redux" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b953a6887648bb07a535631f2bc00fbdb2a2216f135552cb3f534ed136b9c07f" +dependencies = [ + "memchr", + "safemem", +] + +[[package]] +name = "bumpalo" +version = "3.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c1ad822118d20d2c234f427000d5acc36eabe1e29a348c89b63dd60b13f28e5d" + +[[package]] +name = "byte-slice-cast" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b0a5e3906bcbf133e33c1d4d95afc664ad37fbdb9f6568d8043e7ea8c27d93d3" + +[[package]] +name = "byte-slice-cast" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87c5fdd0166095e1d463fc6cc01aa8ce547ad77a4e84d42eb6762b084e28067e" + +[[package]] +name = "byteorder" +version = "1.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610" + +[[package]] +name = "bytes" +version = "0.5.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0e4cec68f03f32e44924783795810fa50a7035d8c8ebe78580ad7e6c703fba38" + +[[package]] +name = "bytes" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec8a7b6a70fde80372154c65702f00a0f56f3e1c36abbc6c440484be248856db" + +[[package]] +name = "bytesize" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c58ec36aac5066d5ca17df51b3e70279f5670a72102f5752cb7e7c856adfc70" + +[[package]] +name = "bzip2" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6afcd980b5f3a45017c57e57a2fcccbb351cc43a356ce117ef760ef8052b89b0" +dependencies = [ + "bzip2-sys", + "libc", +] + +[[package]] +name = "bzip2-sys" +version = "0.1.11+1.0.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "736a955f3fa7875102d57c82b8cac37ec45224a07fd32d58f9f7a186b6cd4cdc" +dependencies = [ + "cc", + "libc", + "pkg-config", +] + +[[package]] +name = "c2-chacha" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d27dae93fe7b1e0424dc57179ac396908c26b035a87234809f5c4dfd1b47dc80" +dependencies = [ + "cipher", + "ppv-lite86", +] + +[[package]] +name = "cache-padded" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c1db59621ec70f09c5e9b597b220c7a2b43611f4710dc03ceb8748637775692c" + +[[package]] +name = "cached_tree_hash" +version = "0.1.0" +source = "git+https://github.com/aurora-is-near/lighthouse.git?rev=b624c3f0d3c5bc9ea46faa14c9cb2d90ee1e1dec#b624c3f0d3c5bc9ea46faa14c9cb2d90ee1e1dec" +dependencies = [ + "eth2_hashing", + "eth2_ssz", + "eth2_ssz_derive 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "eth2_ssz_types", + "ethereum-types", + "smallvec", + "tree_hash", +] + +[[package]] +name = "cc" +version = "1.0.73" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2fff2a6927b3bb87f9595d67196a70493f627687a71d87a0d692242c33f58c11" + +[[package]] +name = "cfg-if" +version = "0.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822" + +[[package]] +name = "cfg-if" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" + +[[package]] +name = "chrono" +version = "0.4.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfd4d1b31faaa3a89d7934dbded3111da0d2ef28e3ebccdb4f0179f5929d1ef1" +dependencies = [ + "iana-time-zone", + "js-sys", + "num-integer", + "num-traits", + "serde", + "time", + "wasm-bindgen", + "winapi 0.3.9", +] + +[[package]] +name = "cipher" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "12f8e7987cbd042a63249497f41aed09f8e65add917ea6566effbc56578d6801" +dependencies = [ + "generic-array", +] + +[[package]] +name = "clap" +version = "3.2.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "86447ad904c7fb335a790c9d7fe3d0d971dc523b8ccd1561a520de9a85302750" +dependencies = [ + "atty", + "bitflags", + "clap_derive", + "clap_lex", + "indexmap", + "once_cell", + "strsim", + "termcolor", + "textwrap", +] + +[[package]] +name = "clap_derive" +version = "3.2.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ea0c8bce528c4be4da13ea6fead8965e95b6073585a2f05204bd8f4119f82a65" +dependencies = [ + "heck", + "proc-macro-error", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "clap_lex" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2850f2f5a82cbf437dd5af4d49848fbdfc27c157c3d010345776f952765261c5" +dependencies = [ + "os_str_bytes", +] + +[[package]] +name = "compare_fields" +version = "0.2.0" +source = "git+https://github.com/aurora-is-near/lighthouse.git?rev=b624c3f0d3c5bc9ea46faa14c9cb2d90ee1e1dec#b624c3f0d3c5bc9ea46faa14c9cb2d90ee1e1dec" + +[[package]] +name = "compare_fields_derive" +version = "0.2.0" +source = "git+https://github.com/aurora-is-near/lighthouse.git?rev=b624c3f0d3c5bc9ea46faa14c9cb2d90ee1e1dec#b624c3f0d3c5bc9ea46faa14c9cb2d90ee1e1dec" +dependencies = [ + "quote", + "syn", +] + +[[package]] +name = "concurrent-queue" +version = "1.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af4780a44ab5696ea9e28294517f1fffb421a83a25af521333c838635509db9c" +dependencies = [ + "cache-padded", +] + +[[package]] +name = "constant_time_eq" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "245097e9a4535ee1e3e3931fcfcd55a796a44c643e8596ff6566d68f09b87bbc" + +[[package]] +name = "contract_wrapper" +version = "0.1.0" +dependencies = [ + "anyhow", + "async-std", + "borsh", + "eth-types", + "futures", + "near-chain-configs", + "near-crypto 0.14.0", + "near-jsonrpc-client", + "near-jsonrpc-primitives", + "near-primitives 0.14.0", + "near-sdk", + "reqwest", + "serde", + "serde_json", + "tokio 1.21.1", + "workspaces", +] + +[[package]] +name = "convert_case" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6245d59a3e82a7fc217c5828a6692dbc6dfb63a0c8c90495621f7b9d79704a0e" + +[[package]] +name = "core-foundation" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "194a7a9e6de53fa55116934067c844d9d749312f75c6f6d0980e8c252f8c2146" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "core-foundation-sys" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5827cebf4670468b8772dd191856768aedcb1b0278a04f989f7766351917b9dc" + +[[package]] +name = "cpufeatures" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "28d997bd5e24a5928dd43e46dc529867e207907fe0b239c3477d924f7f2ca320" +dependencies = [ + "libc", +] + +[[package]] +name = "crc32fast" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b540bd8bc810d3885c6ea91e2018302f68baba2129ab3e88f32389ee9370880d" +dependencies = [ + "cfg-if 1.0.0", +] + +[[package]] +name = "crossbeam-channel" +version = "0.5.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c2dd04ddaf88237dc3b8d8f9a3c1004b506b54b3313403944054d23c0870c521" +dependencies = [ + "cfg-if 1.0.0", + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-deque" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "715e8152b692bba2d374b53d4875445368fdf21a94751410af607a5ac677d1fc" +dependencies = [ + "cfg-if 1.0.0", + "crossbeam-epoch", + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-epoch" +version = "0.9.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "045ebe27666471bb549370b4b0b3e51b07f56325befa4284db65fc89c02511b1" +dependencies = [ + "autocfg", + "cfg-if 1.0.0", + "crossbeam-utils", + "memoffset", + "once_cell", + "scopeguard", +] + +[[package]] +name = "crossbeam-utils" +version = "0.8.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "51887d4adc7b564537b15adcfb307936f8075dfcd5f00dde9a9f1d29383682bc" +dependencies = [ + "cfg-if 1.0.0", + "once_cell", +] + +[[package]] +name = "crunchy" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7" + +[[package]] +name = "crypto-common" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" +dependencies = [ + "generic-array", + "typenum", +] + +[[package]] +name = "crypto-mac" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b584a330336237c1eecd3e94266efb216c56ed91225d634cb2991c5f3fd1aeab" +dependencies = [ + "generic-array", + "subtle", +] + +[[package]] +name = "ctor" +version = "0.1.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cdffe87e1d521a10f9696f833fe502293ea446d7f256c06128293a4119bdf4cb" +dependencies = [ + "quote", + "syn", +] + +[[package]] +name = "curl" +version = "0.4.44" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "509bd11746c7ac09ebd19f0b17782eae80aadee26237658a6b4808afb5c11a22" +dependencies = [ + "curl-sys", + "libc", + "openssl-probe", + "openssl-sys", + "schannel", + "socket2 0.4.7", + "winapi 0.3.9", +] + +[[package]] +name = "curl-sys" +version = "0.4.56+curl-7.83.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6093e169dd4de29e468fa649fbae11cdcd5551c81fe5bf1b0677adad7ef3d26f" +dependencies = [ + "cc", + "libc", + "libz-sys", + "openssl-sys", + "pkg-config", + "vcpkg", + "winapi 0.3.9", +] + +[[package]] +name = "curve25519-dalek" +version = "3.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b9fdf9972b2bd6af2d913799d9ebc165ea4d2e65878e329d9c6b372c4491b61" +dependencies = [ + "byteorder", + "digest 0.9.0", + "rand_core 0.5.1", + "subtle", + "zeroize", +] + +[[package]] +name = "darling" +version = "0.13.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a01d95850c592940db9b8194bc39f4bc0e89dee5c4265e4b1807c34a9aba453c" +dependencies = [ + "darling_core", + "darling_macro", +] + +[[package]] +name = "darling_core" +version = "0.13.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "859d65a907b6852c9361e3185c862aae7fafd2887876799fa55f5f99dc40d610" +dependencies = [ + "fnv", + "ident_case", + "proc-macro2", + "quote", + "strsim", + "syn", +] + +[[package]] +name = "darling_macro" +version = "0.13.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c972679f83bdf9c42bd905396b6c3588a843a17f0f16dfcfa3e2c5d57441835" +dependencies = [ + "darling_core", + "quote", + "syn", +] + +[[package]] +name = "derivative" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fcc3dd5e9e9c0b295d6e1e4d811fb6f157d5ffd784b8d202fc62eac8035a770b" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "derive_more" +version = "0.99.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4fb810d30a7c1953f91334de7244731fc3f3c10d7fe163338a35b9f640960321" +dependencies = [ + "convert_case", + "proc-macro2", + "quote", + "rustc_version", + "syn", +] + +[[package]] +name = "digest" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3dd60d1080a57a05ab032377049e0591415d2b31afd7028356dbf3cc6dcb066" +dependencies = [ + "generic-array", +] + +[[package]] +name = "digest" +version = "0.10.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "adfbc57365a37acbd2ebf2b64d7e69bb766e2fea813521ed536f5d0520dcf86c" +dependencies = [ + "block-buffer 0.10.3", + "crypto-common", +] + +[[package]] +name = "dirs" +version = "1.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3fd78930633bd1c6e35c4b42b1df7b0cbc6bc191146e512bb3bedf243fcc3901" +dependencies = [ + "libc", + "redox_users 0.3.5", + "winapi 0.3.9", +] + +[[package]] +name = "dirs" +version = "3.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "30baa043103c9d0c2a57cf537cc2f35623889dc0d405e6c3cccfadbc81c71309" +dependencies = [ + "dirs-sys", +] + +[[package]] +name = "dirs-sys" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b1d1d91c932ef41c0f2663aa8b0ca0342d444d842c06914aa0a7e352d0bada6" +dependencies = [ + "libc", + "redox_users 0.4.3", + "winapi 0.3.9", +] + +[[package]] +name = "dtoa" +version = "0.4.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56899898ce76aaf4a0f24d914c97ea6ed976d42fec6ad33fcbb0a1103e07b2b0" + +[[package]] +name = "easy-ext" +version = "0.2.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53aff6fdc1b181225acdcb5b14c47106726fd8e486707315b1b138baed68ee31" + +[[package]] +name = "ed25519" +version = "1.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e9c280362032ea4203659fc489832d0204ef09f247a0506f170dafcac08c369" +dependencies = [ + "signature", +] + +[[package]] +name = "ed25519-dalek" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c762bae6dcaf24c4c84667b8579785430908723d5c889f469d76a41d59cc7a9d" +dependencies = [ + "curve25519-dalek", + "ed25519", + "rand 0.7.3", + "serde", + "sha2 0.9.9", + "zeroize", +] + +[[package]] +name = "either" +version = "1.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "90e5c1c8368803113bf0c9584fc495a58b86dc8a29edbf8fe877d21d9507e797" + +[[package]] +name = "encoding_rs" +version = "0.8.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9852635589dc9f9ea1b6fe9f05b50ef208c85c834a562f0c6abb1c475736ec2b" +dependencies = [ + "cfg-if 1.0.0", +] + +[[package]] +name = "env_logger" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c90bf5f19754d10198ccb95b70664fc925bd1fc090a0fd9a6ebc54acc8cd6272" +dependencies = [ + "atty", + "humantime", + "log", + "regex", + "termcolor", +] + +[[package]] +name = "eth-types" +version = "0.1.0" +dependencies = [ + "borsh", + "derive_more", + "eth2_serde_utils", + "eth2_ssz", + "eth2_ssz_derive 0.3.0 (git+https://github.com/aurora-is-near/lighthouse.git?rev=b624c3f0d3c5bc9ea46faa14c9cb2d90ee1e1dec)", + "ethereum-types", + "hex 0.4.3", + "near-sdk", + "rlp", + "rlp-derive", + "serde", + "serde-big-array", + "tree_hash", + "tree_hash_derive 0.4.0 (git+https://github.com/aurora-is-near/lighthouse.git?rev=b624c3f0d3c5bc9ea46faa14c9cb2d90ee1e1dec)", +] + +[[package]] +name = "eth2-contract-init" +version = "0.1.0" +dependencies = [ + "clap", + "contract_wrapper", + "eth-types", + "eth2-utility", + "eth2_to_near_relay", + "eth2near-logger", + "eth_rpc_client", + "log", + "merkle_proof", + "near-primitives 0.14.0", + "near-sdk", + "reqwest", + "serde", + "serde_json", + "tokio 1.21.1", + "toml", + "tree_hash", + "workspaces", +] + +[[package]] +name = "eth2-utility" +version = "0.1.0" +dependencies = [ + "bitvec 1.0.1", + "borsh", + "eth-types", + "ethereum-types", + "merkle_proof", + "near-sdk", + "tree_hash", +] + +[[package]] +name = "eth2_hashing" +version = "0.3.0" +source = "git+https://github.com/aurora-is-near/lighthouse.git?rev=b624c3f0d3c5bc9ea46faa14c9cb2d90ee1e1dec#b624c3f0d3c5bc9ea46faa14c9cb2d90ee1e1dec" +dependencies = [ + "cpufeatures", + "lazy_static", + "ring", + "sha2 0.10.6", +] + +[[package]] +name = "eth2_interop_keypairs" +version = "0.2.0" +source = "git+https://github.com/aurora-is-near/lighthouse.git?rev=b624c3f0d3c5bc9ea46faa14c9cb2d90ee1e1dec#b624c3f0d3c5bc9ea46faa14c9cb2d90ee1e1dec" +dependencies = [ + "bls", + "eth2_hashing", + "hex 0.4.3", + "lazy_static", + "num-bigint 0.4.3", + "serde", + "serde_derive", + "serde_yaml", +] + +[[package]] +name = "eth2_serde_utils" +version = "0.1.1" +source = "git+https://github.com/aurora-is-near/lighthouse.git?rev=b624c3f0d3c5bc9ea46faa14c9cb2d90ee1e1dec#b624c3f0d3c5bc9ea46faa14c9cb2d90ee1e1dec" +dependencies = [ + "ethereum-types", + "hex 0.4.3", + "serde", + "serde_derive", + "serde_json", +] + +[[package]] +name = "eth2_ssz" +version = "0.4.1" +source = "git+https://github.com/aurora-is-near/lighthouse.git?rev=b624c3f0d3c5bc9ea46faa14c9cb2d90ee1e1dec#b624c3f0d3c5bc9ea46faa14c9cb2d90ee1e1dec" +dependencies = [ + "ethereum-types", + "smallvec", +] + +[[package]] +name = "eth2_ssz_derive" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "635b86d2c941bb71e7419a571e1763d65c93e51a1bafc400352e3bef6ff59fc9" +dependencies = [ + "darling", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "eth2_ssz_derive" +version = "0.3.0" +source = "git+https://github.com/aurora-is-near/lighthouse.git?rev=b624c3f0d3c5bc9ea46faa14c9cb2d90ee1e1dec#b624c3f0d3c5bc9ea46faa14c9cb2d90ee1e1dec" +dependencies = [ + "darling", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "eth2_ssz_types" +version = "0.2.2" +source = "git+https://github.com/aurora-is-near/lighthouse.git?rev=b624c3f0d3c5bc9ea46faa14c9cb2d90ee1e1dec#b624c3f0d3c5bc9ea46faa14c9cb2d90ee1e1dec" +dependencies = [ + "derivative", + "eth2_serde_utils", + "eth2_ssz", + "serde", + "serde_derive", + "smallvec", + "tree_hash", + "typenum", +] + +[[package]] +name = "eth2_to_near_relay" +version = "0.1.0" +dependencies = [ + "async-std", + "atomic_refcell", + "bitvec 1.0.1", + "borsh", + "clap", + "contract_wrapper", + "env_logger", + "eth-types", + "eth2-utility", + "eth2_hashing", + "eth2_ssz", + "eth2near-logger", + "eth_rpc_client", + "ethereum-types", + "finality-update-verify", + "futures", + "hex 0.4.3", + "lazy_static", + "log", + "merkle_proof", + "near-chain-configs", + "near-crypto 0.14.0", + "near-jsonrpc-client", + "near-jsonrpc-primitives", + "near-primitives 0.14.0", + "near-sdk", + "primitive-types 0.7.3", + "prometheus", + "reqwest", + "serde", + "serde_json", + "thread", + "tokio 1.21.1", + "toml", + "tree_hash", + "types", + "warp", +] + +[[package]] +name = "eth2near-logger" +version = "0.1.0" +dependencies = [ + "atomic_refcell", + "log", +] + +[[package]] +name = "eth_rpc_client" +version = "0.1.0" +dependencies = [ + "async-std", + "atomic_refcell", + "bitvec 0.17.4", + "borsh", + "clap", + "contract_wrapper", + "env_logger", + "eth-types", + "eth2_hashing", + "eth2_ssz", + "ethereum-types", + "finality-update-verify", + "futures", + "hex 0.3.2", + "lazy_static", + "log", + "merkle_proof", + "prometheus", + "reqwest", + "serde", + "serde_json", + "thread", + "tokio 1.21.1", + "toml", + "tree_hash", + "types", + "warp", +] + +[[package]] +name = "ethbloom" +version = "0.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "71a6567e6fd35589fea0c63b94b4cf2e55573e413901bdbe60ab15cf0e25e5df" +dependencies = [ + "crunchy", + "fixed-hash 0.6.1", + "impl-rlp", + "impl-serde", + "tiny-keccak", +] + +[[package]] +name = "ethereum-types" +version = "0.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "473aecff686bd8e7b9db0165cbbb53562376b39bf35b427f0c60446a9e1634b0" +dependencies = [ + "ethbloom", + "fixed-hash 0.6.1", + "impl-rlp", + "impl-serde", + "primitive-types 0.7.3", + "uint 0.8.5", +] + +[[package]] +name = "event-listener" +version = "2.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0206175f82b8d6bf6652ff7d71a1e27fd2e4efde587fd368662814d6ec1d9ce0" + +[[package]] +name = "failure" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d32e9bd16cc02eae7db7ef620b392808b89f6a5e16bb3497d159c6b92a0f4f86" +dependencies = [ + "backtrace", + "failure_derive", +] + +[[package]] +name = "failure_derive" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aa4da3c766cd7a0db8242e326e9e4e081edd567072893ed320008189715366a4" +dependencies = [ + "proc-macro2", + "quote", + "syn", + "synstructure", +] + +[[package]] +name = "fallible-iterator" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4443176a9f2c162692bd3d352d745ef9413eec5782a80d8fd6f8a1ac692a07f7" + +[[package]] +name = "fallible-streaming-iterator" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7360491ce676a36bf9bb3c56c1aa791658183a54d2744120f27285738d90465a" + +[[package]] +name = "fastrand" +version = "1.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7a407cfaa3385c4ae6b23e84623d48c2798d06e3e6a1878f7f59f17b3f86499" +dependencies = [ + "instant", +] + +[[package]] +name = "filetime" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e94a7bbaa59354bc20dd75b67f23e2797b4490e9d6928203fb105c79e448c86c" +dependencies = [ + "cfg-if 1.0.0", + "libc", + "redox_syscall 0.2.16", + "windows-sys", +] + +[[package]] +name = "finality-update-verify" +version = "0.1.0" +dependencies = [ + "bitvec 1.0.1", + "bls", + "eth-types", + "eth2-utility", + "tree_hash", + "types", +] + +[[package]] +name = "fixed-hash" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "11498d382790b7a8f2fd211780bec78619bba81cdad3a283997c0c41f836759c" +dependencies = [ + "byteorder", + "rand 0.7.3", + "rustc-hex", + "static_assertions", +] + +[[package]] +name = "fixed-hash" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cfcf0ed7fe52a17a03854ec54a9f76d6d84508d1c0e66bc1793301c73fc8493c" +dependencies = [ + "byteorder", + "rand 0.8.5", + "rustc-hex", + "static_assertions", +] + +[[package]] +name = "flate2" +version = "1.0.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f82b0f4c27ad9f8bfd1f3208d882da2b09c301bc1c828fd3a00d0216d2fbbff6" +dependencies = [ + "crc32fast", + "miniz_oxide", +] + +[[package]] +name = "fnv" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" + +[[package]] +name = "foreign-types" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" +dependencies = [ + "foreign-types-shared", +] + +[[package]] +name = "foreign-types-shared" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" + +[[package]] +name = "form_urlencoded" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a9c384f161156f5260c24a097c56119f9be8c798586aecc13afbcbe7b7e26bf8" +dependencies = [ + "percent-encoding", +] + +[[package]] +name = "fuchsia-zircon" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2e9763c69ebaae630ba35f74888db465e49e259ba1bc0eda7d06f4a067615d82" +dependencies = [ + "bitflags", + "fuchsia-zircon-sys", +] + +[[package]] +name = "fuchsia-zircon-sys" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3dcaa9ae7725d12cdb85b3ad99a434db70b468c09ded17e012d86b5c1010f7a7" + +[[package]] +name = "funty" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fed34cd105917e91daa4da6b3728c47b068749d6a62c59811f06ed2ac71d9da7" + +[[package]] +name = "funty" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6d5a32815ae3f33302d95fdcb2ce17862f8c65363dcfd29360480ba1001fc9c" + +[[package]] +name = "futures" +version = "0.3.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f21eda599937fba36daeb58a22e8f5cee2d14c4a17b5b7739c7c8e5e3b8230c" +dependencies = [ + "futures-channel", + "futures-core", + "futures-executor", + "futures-io", + "futures-sink", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-channel" +version = "0.3.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "30bdd20c28fadd505d0fd6712cdfcb0d4b5648baf45faef7f852afb2399bb050" +dependencies = [ + "futures-core", + "futures-sink", +] + +[[package]] +name = "futures-core" +version = "0.3.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4e5aa3de05362c3fb88de6531e6296e85cde7739cccad4b9dfeeb7f6ebce56bf" + +[[package]] +name = "futures-executor" +version = "0.3.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ff63c23854bee61b6e9cd331d523909f238fc7636290b96826e9cfa5faa00ab" +dependencies = [ + "futures-core", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-io" +version = "0.3.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbf4d2a7a308fd4578637c0b17c7e1c7ba127b8f6ba00b29f717e9655d85eb68" + +[[package]] +name = "futures-lite" +version = "1.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7694489acd39452c77daa48516b894c153f192c3578d5a839b62c58099fcbf48" +dependencies = [ + "fastrand", + "futures-core", + "futures-io", + "memchr", + "parking", + "pin-project-lite 0.2.9", + "waker-fn", +] + +[[package]] +name = "futures-macro" +version = "0.3.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42cd15d1c7456c04dbdf7e88bcd69760d74f3a798d6444e16974b505b0e62f17" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "futures-sink" +version = "0.3.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "21b20ba5a92e727ba30e72834706623d94ac93a725410b6a6b6fbc1b07f7ba56" + +[[package]] +name = "futures-task" +version = "0.3.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a6508c467c73851293f390476d4491cf4d227dbabcd4170f3bb6044959b294f1" + +[[package]] +name = "futures-util" +version = "0.3.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "44fb6cb1be61cc1d2e43b262516aafcf63b241cffdb1d3fa115f91d9c7b09c90" +dependencies = [ + "futures-channel", + "futures-core", + "futures-io", + "futures-macro", + "futures-sink", + "futures-task", + "memchr", + "pin-project-lite 0.2.9", + "pin-utils", + "slab", +] + +[[package]] +name = "generic-array" +version = "0.14.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bff49e947297f3312447abdca79f45f4738097cc82b06e72054d2223f601f1b9" +dependencies = [ + "typenum", + "version_check", +] + +[[package]] +name = "getrandom" +version = "0.1.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8fc3cb4d91f53b50155bdcfd23f6a4c39ae1969c2ae85982b135750cccaf5fce" +dependencies = [ + "cfg-if 1.0.0", + "libc", + "wasi 0.9.0+wasi-snapshot-preview1", +] + +[[package]] +name = "getrandom" +version = "0.2.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4eb1a864a501629691edf6c15a593b7a51eebaa1e8468e9ddc623de7c9b58ec6" +dependencies = [ + "cfg-if 1.0.0", + "js-sys", + "libc", + "wasi 0.11.0+wasi-snapshot-preview1", + "wasm-bindgen", +] + +[[package]] +name = "gimli" +version = "0.26.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "22030e2c5a68ec659fde1e949a745124b48e6fa8b045b7ed5bd1fe4ccc5c4e5d" + +[[package]] +name = "glob" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b919933a397b79c37e33b77bb2aa3dc8eb6e165ad809e58ff75bc7db2e34574" + +[[package]] +name = "gloo-timers" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5fb7d06c1c8cc2a29bee7ec961009a0b2caa0793ee4900c2ffb348734ba1c8f9" +dependencies = [ + "futures-channel", + "futures-core", + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "h2" +version = "0.2.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e4728fd124914ad25e99e3d15a9361a879f6620f63cb56bbb08f95abb97a535" +dependencies = [ + "bytes 0.5.6", + "fnv", + "futures-core", + "futures-sink", + "futures-util", + "http", + "indexmap", + "slab", + "tokio 0.2.25", + "tokio-util 0.3.1", + "tracing", + "tracing-futures", +] + +[[package]] +name = "h2" +version = "0.3.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5ca32592cf21ac7ccab1825cd87f6c9b3d9022c44d086172ed0966bec8af30be" +dependencies = [ + "bytes 1.2.1", + "fnv", + "futures-core", + "futures-sink", + "futures-util", + "http", + "indexmap", + "slab", + "tokio 1.21.1", + "tokio-util 0.7.4", + "tracing", +] + +[[package]] +name = "hashbrown" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ab5ef0d4909ef3724cc8cce6ccc8572c5c817592e9285f5464f8e86f8bd3726e" +dependencies = [ + "ahash", +] + +[[package]] +name = "hashbrown" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" + +[[package]] +name = "hashlink" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7249a3129cbc1ffccd74857f81464a323a152173cdb134e0fd81bc803b29facf" +dependencies = [ + "hashbrown 0.11.2", +] + +[[package]] +name = "headers" +version = "0.3.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f3e372db8e5c0d213e0cd0b9be18be2aca3d44cf2fe30a9d46a65581cd454584" +dependencies = [ + "base64 0.13.0", + "bitflags", + "bytes 1.2.1", + "headers-core", + "http", + "httpdate 1.0.2", + "mime", + "sha1", +] + +[[package]] +name = "headers-core" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e7f66481bfee273957b1f20485a4ff3362987f85b2c236580d81b4eb7a326429" +dependencies = [ + "http", +] + +[[package]] +name = "heck" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2540771e65fc8cb83cd6e8a237f70c319bd5c29f78ed1084ba5d50eeac86f7f9" + +[[package]] +name = "hermit-abi" +version = "0.1.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33" +dependencies = [ + "libc", +] + +[[package]] +name = "hex" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "805026a5d0141ffc30abb3be3173848ad46a1b1664fe632428479619a3644d77" + +[[package]] +name = "hex" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" + +[[package]] +name = "home" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2456aef2e6b6a9784192ae780c0f15bc57df0e918585282325e8c8ac27737654" +dependencies = [ + "winapi 0.3.9", +] + +[[package]] +name = "http" +version = "0.2.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75f43d41e26995c17e71ee126451dd3941010b0514a81a9d11f3b341debc2399" +dependencies = [ + "bytes 1.2.1", + "fnv", + "itoa 1.0.3", +] + +[[package]] +name = "http-body" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13d5ff830006f7646652e057693569bfe0d51760c0085a071769d142a205111b" +dependencies = [ + "bytes 0.5.6", + "http", +] + +[[package]] +name = "http-body" +version = "0.4.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d5f38f16d184e36f2408a55281cd658ecbd3ca05cce6d6510a176eca393e26d1" +dependencies = [ + "bytes 1.2.1", + "http", + "pin-project-lite 0.2.9", +] + +[[package]] +name = "httparse" +version = "1.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d897f394bad6a705d5f4104762e116a75639e470d80901eed05a860a95cb1904" + +[[package]] +name = "httpdate" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "494b4d60369511e7dea41cf646832512a94e542f68bb9c49e54518e0f468eb47" + +[[package]] +name = "httpdate" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c4a1e36c821dbe04574f602848a19f742f4fb3c98d40449f11bcad18d6b17421" + +[[package]] +name = "humantime" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4" + +[[package]] +name = "hyper" +version = "0.13.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a6f157065790a3ed2f88679250419b5cdd96e714a0d65f7797fd337186e96bb" +dependencies = [ + "bytes 0.5.6", + "futures-channel", + "futures-core", + "futures-util", + "h2 0.2.7", + "http", + "http-body 0.3.1", + "httparse", + "httpdate 0.3.2", + "itoa 0.4.8", + "pin-project 1.0.12", + "socket2 0.3.19", + "tokio 0.2.25", + "tower-service", + "tracing", + "want", +] + +[[package]] +name = "hyper" +version = "0.14.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "02c929dc5c39e335a03c405292728118860721b10190d98c2a0f0efd5baafbac" +dependencies = [ + "bytes 1.2.1", + "futures-channel", + "futures-core", + "futures-util", + "h2 0.3.14", + "http", + "http-body 0.4.5", + "httparse", + "httpdate 1.0.2", + "itoa 1.0.3", + "pin-project-lite 0.2.9", + "socket2 0.4.7", + "tokio 1.21.1", + "tower-service", + "tracing", + "want", +] + +[[package]] +name = "hyper-tls" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d6183ddfa99b85da61a140bea0efc93fdf56ceaa041b37d553518030827f9905" +dependencies = [ + "bytes 1.2.1", + "hyper 0.14.20", + "native-tls", + "tokio 1.21.1", + "tokio-native-tls", +] + +[[package]] +name = "iana-time-zone" +version = "0.1.48" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "237a0714f28b1ee39ccec0770ccb544eb02c9ef2c82bb096230eefcffa6468b0" +dependencies = [ + "android_system_properties", + "core-foundation-sys", + "js-sys", + "once_cell", + "wasm-bindgen", + "winapi 0.3.9", +] + +[[package]] +name = "ident_case" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" + +[[package]] +name = "idna" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e14ddfc70884202db2244c223200c204c2bda1bc6e0998d11b5e024d657209e6" +dependencies = [ + "unicode-bidi", + "unicode-normalization", +] + +[[package]] +name = "impl-codec" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1be51a921b067b0eaca2fad532d9400041561aa922221cc65f95a85641c6bf53" +dependencies = [ + "parity-scale-codec 1.3.7", +] + +[[package]] +name = "impl-codec" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "161ebdfec3c8e3b52bf61c4f3550a1eea4f9579d10dc1b936f3171ebdcd6c443" +dependencies = [ + "parity-scale-codec 2.3.1", +] + +[[package]] +name = "impl-rlp" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f7a72f11830b52333f36e3b09a288333888bf54380fd0ac0790a3c31ab0f3c5" +dependencies = [ + "rlp", +] + +[[package]] +name = "impl-serde" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4551f042f3438e64dbd6226b20527fc84a6e1fe65688b58746a2f53623f25f5c" +dependencies = [ + "serde", +] + +[[package]] +name = "impl-trait-for-tuples" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "11d7a9f6330b71fea57921c9b61c47ee6e84f72d394754eff6163ae67e7395eb" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "indexmap" +version = "1.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "10a35a97730320ffe8e2d410b5d3b69279b98d2c14bdb8b70ea89ecf7888d41e" +dependencies = [ + "autocfg", + "hashbrown 0.12.3", +] + +[[package]] +name = "input_buffer" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "19a8a95243d5a0398cae618ec29477c6e3cb631152be5c19481f80bc71559754" +dependencies = [ + "bytes 0.5.6", +] + +[[package]] +name = "instant" +version = "0.1.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c" +dependencies = [ + "cfg-if 1.0.0", +] + +[[package]] +name = "int_to_bytes" +version = "0.2.0" +source = "git+https://github.com/aurora-is-near/lighthouse.git?rev=b624c3f0d3c5bc9ea46faa14c9cb2d90ee1e1dec#b624c3f0d3c5bc9ea46faa14c9cb2d90ee1e1dec" +dependencies = [ + "bytes 1.2.1", +] + +[[package]] +name = "iovec" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b2b3ea6ff95e175473f8ffe6a7eb7c00d054240321b84c57051175fe3c1e075e" +dependencies = [ + "libc", +] + +[[package]] +name = "ipnet" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "879d54834c8c76457ef4293a689b2a8c59b076067ad77b15efafbb05f92a592b" + +[[package]] +name = "is_executable" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "302d553b8abc8187beb7d663e34c065ac4570b273bc9511a50e940e99409c577" +dependencies = [ + "winapi 0.3.9", +] + +[[package]] +name = "itertools" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d8bf247779e67a9082a4790b45e71ac7cfd1321331a5c856a74a9faebdab78d0" +dependencies = [ + "either", +] + +[[package]] +name = "itoa" +version = "0.4.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b71991ff56294aa922b450139ee08b3bfc70982c6b2c7562771375cf73542dd4" + +[[package]] +name = "itoa" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c8af84674fe1f223a982c933a0ee1086ac4d4052aa0fb8060c12c6ad838e754" + +[[package]] +name = "js-sys" +version = "0.3.60" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49409df3e3bf0856b916e2ceaca09ee28e6871cf7d9ce97a692cacfdb2a25a47" +dependencies = [ + "wasm-bindgen", +] + +[[package]] +name = "keccak" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f9b7d56ba4a8344d6be9729995e6b06f928af29998cdf79fe390cbf6b1fee838" + +[[package]] +name = "kernel32-sys" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7507624b29483431c0ba2d82aece8ca6cdba9382bff4ddd0f7490560c056098d" +dependencies = [ + "winapi 0.2.8", + "winapi-build", +] + +[[package]] +name = "kv-log-macro" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0de8b303297635ad57c9f5059fd9cee7a47f8e8daa09df0fcd07dd39fb22977f" +dependencies = [ + "log", +] + +[[package]] +name = "lazy_static" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" + +[[package]] +name = "libc" +version = "0.2.133" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c0f80d65747a3e43d1596c7c5492d95d5edddaabd45a7fcdb02b95f644164966" + +[[package]] +name = "libflate" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05605ab2bce11bcfc0e9c635ff29ef8b2ea83f29be257ee7d730cac3ee373093" +dependencies = [ + "adler32", + "crc32fast", + "libflate_lz77", +] + +[[package]] +name = "libflate_lz77" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "39a734c0493409afcd49deee13c006a04e3586b9761a03543c6272c9c51f2f5a" +dependencies = [ + "rle-decode-fast", +] + +[[package]] +name = "libsqlite3-sys" +version = "0.22.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "290b64917f8b0cb885d9de0f9959fe1f775d7fa12f1da2db9001c1c8ab60f89d" +dependencies = [ + "cc", + "pkg-config", + "vcpkg", +] + +[[package]] +name = "libz-sys" +version = "1.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9702761c3935f8cc2f101793272e202c72b99da8f4224a19ddcf1279a6450bbf" +dependencies = [ + "cc", + "libc", + "pkg-config", + "vcpkg", +] + +[[package]] +name = "linked-hash-map" +version = "0.5.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0717cef1bc8b636c6e1c1bbdefc09e6322da8a9321966e8928ef80d20f7f770f" + +[[package]] +name = "lock_api" +version = "0.4.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9f80bf5aacaf25cbfc8210d1cfb718f2bf3b11c4c54e5afe36c236853a8ec390" +dependencies = [ + "autocfg", + "scopeguard", +] + +[[package]] +name = "log" +version = "0.4.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "abb12e687cfb44aa40f41fc3978ef76448f9b6038cad6aef4259d3c095a2382e" +dependencies = [ + "cfg-if 1.0.0", + "serde", + "value-bag", +] + +[[package]] +name = "memchr" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d" + +[[package]] +name = "memoffset" +version = "0.6.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5aa361d4faea93603064a027415f07bd8e1d5c88c9fbf68bf56a285428fd79ce" +dependencies = [ + "autocfg", +] + +[[package]] +name = "memory_units" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8452105ba047068f40ff7093dd1d9da90898e63dd61736462e9cdda6a90ad3c3" + +[[package]] +name = "merkle_proof" +version = "0.2.0" +source = "git+https://github.com/aurora-is-near/lighthouse.git?rev=b624c3f0d3c5bc9ea46faa14c9cb2d90ee1e1dec#b624c3f0d3c5bc9ea46faa14c9cb2d90ee1e1dec" +dependencies = [ + "eth2_hashing", + "ethereum-types", + "lazy_static", + "safe_arith", +] + +[[package]] +name = "mime" +version = "0.3.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2a60c7ce501c71e03a9c9c0d35b861413ae925bd979cc7a4e30d060069aaac8d" + +[[package]] +name = "mime_guess" +version = "2.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4192263c238a5f0d0c6bfd21f336a313a4ce1c450542449ca191bb657b4642ef" +dependencies = [ + "mime", + "unicase", +] + +[[package]] +name = "miniz_oxide" +version = "0.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96590ba8f175222643a85693f33d26e9c8a015f599c216509b1a6894af675d34" +dependencies = [ + "adler", +] + +[[package]] +name = "mio" +version = "0.6.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4afd66f5b91bf2a3bc13fad0e21caedac168ca4c707504e75585648ae80e4cc4" +dependencies = [ + "cfg-if 0.1.10", + "fuchsia-zircon", + "fuchsia-zircon-sys", + "iovec", + "kernel32-sys", + "libc", + "log", + "miow", + "net2", + "slab", + "winapi 0.2.8", +] + +[[package]] +name = "mio" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57ee1c23c7c63b0c9250c339ffdc69255f110b298b901b9f6c82547b7b87caaf" +dependencies = [ + "libc", + "log", + "wasi 0.11.0+wasi-snapshot-preview1", + "windows-sys", +] + +[[package]] +name = "miow" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ebd808424166322d4a38da87083bfddd3ac4c131334ed55856112eb06d46944d" +dependencies = [ + "kernel32-sys", + "net2", + "winapi 0.2.8", + "ws2_32-sys", +] + +[[package]] +name = "multipart" +version = "0.17.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d050aeedc89243f5347c3e237e3e13dc76fbe4ae3742a57b94dc14f69acf76d4" +dependencies = [ + "buf_redux", + "httparse", + "log", + "mime", + "mime_guess", + "quick-error", + "rand 0.7.3", + "safemem", + "tempfile", + "twoway", +] + +[[package]] +name = "native-tls" +version = "0.2.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fd7e2f3618557f980e0b17e8856252eee3c97fa12c54dff0ca290fb6266ca4a9" +dependencies = [ + "lazy_static", + "libc", + "log", + "openssl", + "openssl-probe", + "openssl-sys", + "schannel", + "security-framework", + "security-framework-sys", + "tempfile", +] + +[[package]] +name = "near-account-id" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "de83d74a9241be8cc4eb3055216966b58bf8c463e8e285c0dc553925acdd19fa" +dependencies = [ + "borsh", + "serde", +] + +[[package]] +name = "near-account-id" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "71d258582a1878e6db67400b0504a5099db85718d22c2e07f747fe1706ae7150" +dependencies = [ + "borsh", + "serde", +] + +[[package]] +name = "near-chain-configs" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3632a1c691603cb32dd9944c95d8eadbf2c09f45abd95350ea6848c649036a0b" +dependencies = [ + "anyhow", + "chrono", + "derive_more", + "near-crypto 0.14.0", + "near-primitives 0.14.0", + "num-rational", + "serde", + "serde_json", + "sha2 0.10.6", + "smart-default", + "tracing", +] + +[[package]] +name = "near-chain-primitives" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a734353027698b21633a49d478e564c61ae0171c32f6912bb8844add15d72ebe" +dependencies = [ + "chrono", + "near-crypto 0.14.0", + "near-primitives 0.14.0", + "thiserror", + "tracing", +] + +[[package]] +name = "near-chunks-primitives" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c17f6f22f1ab710731dfba4101f12a99cac120d6af80b99899bd335bb8971477" +dependencies = [ + "near-chain-primitives", + "near-primitives 0.14.0", +] + +[[package]] +name = "near-client-primitives" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e1065d86012eeea838661434549f33bb6267c9950fd2aadd2af617fe773def38" +dependencies = [ + "actix", + "chrono", + "near-chain-configs", + "near-chain-primitives", + "near-chunks-primitives", + "near-crypto 0.14.0", + "near-network-primitives", + "near-primitives 0.14.0", + "serde", + "serde_json", + "strum", + "thiserror", +] + +[[package]] +name = "near-crypto" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8ecf0b8b31aa7f4e60f629f72213a2617ca4a5f45cd1ae9ed2cf7cecfebdbb7" +dependencies = [ + "arrayref", + "blake2", + "borsh", + "bs58", + "c2-chacha", + "curve25519-dalek", + "derive_more", + "ed25519-dalek", + "libc", + "near-account-id 0.13.0", + "once_cell", + "parity-secp256k1", + "primitive-types 0.10.1", + "rand 0.7.3", + "rand_core 0.5.1", + "serde", + "serde_json", + "subtle", + "thiserror", +] + +[[package]] +name = "near-crypto" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e75673d69fd7365508f3d32483669fe45b03bfb34e4d9363e90adae9dfb416c" +dependencies = [ + "arrayref", + "blake2", + "borsh", + "bs58", + "c2-chacha", + "curve25519-dalek", + "derive_more", + "ed25519-dalek", + "near-account-id 0.14.0", + "once_cell", + "parity-secp256k1", + "primitive-types 0.10.1", + "rand 0.7.3", + "rand_core 0.5.1", + "serde", + "serde_json", + "subtle", + "thiserror", +] + +[[package]] +name = "near-jsonrpc-client" +version = "0.4.0-beta.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bba462f54bc35289a1013ed3a2ebfa67cc8b12699f81c12dd67687f200c7b871" +dependencies = [ + "borsh", + "lazy_static", + "log", + "near-chain-configs", + "near-crypto 0.14.0", + "near-jsonrpc-primitives", + "near-primitives 0.14.0", + "reqwest", + "serde", + "serde_json", + "thiserror", + "uuid", +] + +[[package]] +name = "near-jsonrpc-primitives" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34a14ee8ca393c0140cb232789259ebc61b13b4cceb177267d0131f50d0eda6c" +dependencies = [ + "near-chain-configs", + "near-client-primitives", + "near-crypto 0.14.0", + "near-primitives 0.14.0", + "near-rpc-error-macro 0.14.0", + "serde", + "serde_json", + "thiserror", + "uuid", +] + +[[package]] +name = "near-network-primitives" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5aa998a1e70ebf8cf3efa76c4562ef36038cc88b4aee60efb708d14273910357" +dependencies = [ + "actix", + "anyhow", + "borsh", + "chrono", + "near-crypto 0.14.0", + "near-primitives 0.14.0", + "serde", + "strum", + "tokio 1.21.1", + "tracing", +] + +[[package]] +name = "near-primitives" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0a2ba19282e79a4485a77736b679d276b09870bbf8042a18e0f0ae36347489c5" +dependencies = [ + "borsh", + "byteorder", + "bytesize", + "chrono", + "derive_more", + "easy-ext", + "hex 0.4.3", + "near-crypto 0.13.0", + "near-primitives-core 0.13.0", + "near-rpc-error-macro 0.13.0", + "near-vm-errors 0.13.0", + "num-rational", + "once_cell", + "primitive-types 0.10.1", + "rand 0.7.3", + "reed-solomon-erasure", + "serde", + "serde_json", + "smart-default", + "strum", + "thiserror", +] + +[[package]] +name = "near-primitives" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ad1a9a1640539c81f065425c31bffcfbf6b31ef1aeaade59ce905f5df6ac860" +dependencies = [ + "borsh", + "byteorder", + "bytesize", + "chrono", + "derive_more", + "easy-ext", + "hex 0.4.3", + "near-crypto 0.14.0", + "near-primitives-core 0.14.0", + "near-rpc-error-macro 0.14.0", + "near-vm-errors 0.14.0", + "num-rational", + "once_cell", + "primitive-types 0.10.1", + "rand 0.7.3", + "reed-solomon-erasure", + "serde", + "serde_json", + "smart-default", + "strum", + "thiserror", +] + +[[package]] +name = "near-primitives-core" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb561feb392bb8c4f540256073446e6689af087bf6356e8dddcf75fc279f201f" +dependencies = [ + "base64 0.11.0", + "borsh", + "bs58", + "derive_more", + "near-account-id 0.13.0", + "num-rational", + "serde", + "sha2 0.10.6", + "strum", +] + +[[package]] +name = "near-primitives-core" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91d508f0fc340f6461e4e256417685720d3c4c00bb5a939b105160e49137caba" +dependencies = [ + "base64 0.11.0", + "borsh", + "bs58", + "derive_more", + "near-account-id 0.14.0", + "num-rational", + "serde", + "sha2 0.10.6", + "strum", +] + +[[package]] +name = "near-rpc-error-core" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77fdd7ea8d8f786878651c37691515d5053f827ae60894aa40c16882b78f77c9" +dependencies = [ + "quote", + "serde", + "syn", +] + +[[package]] +name = "near-rpc-error-core" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93ee0b41c75ef859c193a8ff1dadfa0c8207bc0ac447cc22259721ad769a1408" +dependencies = [ + "quote", + "serde", + "syn", +] + +[[package]] +name = "near-rpc-error-macro" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e521842b6ae864dfe5391afbbe2df9e9d8427c26e9333b2e0b65cd42094f7607" +dependencies = [ + "near-rpc-error-core 0.13.0", + "serde", + "syn", +] + +[[package]] +name = "near-rpc-error-macro" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e837bd4bacd807073ec5ceb85708da7f721b46a4c2a978de86027fb0034ce31" +dependencies = [ + "near-rpc-error-core 0.14.0", + "serde", + "syn", +] + +[[package]] +name = "near-sandbox-utils" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e4cf1e2b801709b9fe36806a3895ff63e85b37746b562bb8e4d266c7286b94d6" +dependencies = [ + "anyhow", + "async-process", + "binary-install", + "chrono", + "hex 0.3.2", + "home", +] + +[[package]] +name = "near-sdk" +version = "4.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bda34e06e28fb9a09ac54efbdc49f0c9308780fc932aaa81c49c493fde974045" +dependencies = [ + "base64 0.13.0", + "borsh", + "bs58", + "near-crypto 0.13.0", + "near-primitives 0.13.0", + "near-primitives-core 0.13.0", + "near-sdk-macros", + "near-sys", + "near-vm-logic", + "serde", + "serde_json", + "wee_alloc", +] + +[[package]] +name = "near-sdk-macros" +version = "4.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72064fcc15a623a0d40a6c199ea5cbdc30a83cae4816889d46f218acf31bfba8" +dependencies = [ + "Inflector", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "near-sys" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e307313276eaeced2ca95740b5639e1f3125b7c97f0a1151809d105f1aa8c6d3" + +[[package]] +name = "near-vm-errors" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0e02faf2bc1f6ef82b965cfe44389808fb5594f7aca4b596766117f4ce74df20" +dependencies = [ + "borsh", + "near-account-id 0.13.0", + "near-rpc-error-macro 0.13.0", + "serde", +] + +[[package]] +name = "near-vm-errors" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d0da466a30f0446639cbd788c30865086fac3e8dcb07a79e51d2b0775ed4261e" +dependencies = [ + "borsh", + "near-account-id 0.14.0", + "near-rpc-error-macro 0.14.0", + "serde", +] + +[[package]] +name = "near-vm-logic" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f024d90451cd3c24d7a0a5cabf3636b192a60eb8e3ff0456f6c18b91152c346d" +dependencies = [ + "base64 0.13.0", + "borsh", + "bs58", + "byteorder", + "near-account-id 0.13.0", + "near-crypto 0.13.0", + "near-primitives 0.13.0", + "near-primitives-core 0.13.0", + "near-vm-errors 0.13.0", + "ripemd", + "serde", + "sha2 0.10.6", + "sha3", +] + +[[package]] +name = "net2" +version = "0.2.37" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "391630d12b68002ae1e25e8f974306474966550ad82dac6886fb8910c19568ae" +dependencies = [ + "cfg-if 0.1.10", + "libc", + "winapi 0.3.9", +] + +[[package]] +name = "num-bigint" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f6f7833f2cbf2360a6cfd58cd41a53aa7a90bd4c202f5b1c7dd2ed73c57b2c3" +dependencies = [ + "autocfg", + "num-integer", + "num-traits", +] + +[[package]] +name = "num-bigint" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f93ab6289c7b344a8a9f60f88d80aa20032336fe78da341afc91c8a2341fc75f" +dependencies = [ + "autocfg", + "num-integer", + "num-traits", +] + +[[package]] +name = "num-integer" +version = "0.1.45" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "225d3389fb3509a24c93f5c29eb6bde2586b98d9f016636dff58d7c6f7569cd9" +dependencies = [ + "autocfg", + "num-traits", +] + +[[package]] +name = "num-rational" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "12ac428b1cb17fce6f731001d307d351ec70a6d202fc2e60f7d4c5e42d8f4f07" +dependencies = [ + "autocfg", + "num-bigint 0.3.3", + "num-integer", + "num-traits", + "serde", +] + +[[package]] +name = "num-traits" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "578ede34cf02f8924ab9447f50c28075b4d3e5b269972345e7e0372b38c6cdcd" +dependencies = [ + "autocfg", +] + +[[package]] +name = "num_cpus" +version = "1.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "19e64526ebdee182341572e50e9ad03965aa510cd94427a4549448f285e957a1" +dependencies = [ + "hermit-abi", + "libc", +] + +[[package]] +name = "object" +version = "0.29.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "21158b2c33aa6d4561f1c0a6ea283ca92bc54802a93b263e910746d679a7eb53" +dependencies = [ + "memchr", +] + +[[package]] +name = "once_cell" +version = "1.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2f7254b99e31cad77da24b08ebf628882739a608578bb1bcdfc1f9c21260d7c0" + +[[package]] +name = "opaque-debug" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "624a8340c38c1b80fd549087862da4ba43e08858af025b236e509b6649fc13d5" + +[[package]] +name = "openssl" +version = "0.10.41" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "618febf65336490dfcf20b73f885f5651a0c89c64c2d4a8c3662585a70bf5bd0" +dependencies = [ + "bitflags", + "cfg-if 1.0.0", + "foreign-types", + "libc", + "once_cell", + "openssl-macros", + "openssl-sys", +] + +[[package]] +name = "openssl-macros" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b501e44f11665960c7e7fcf062c7d96a14ade4aa98116c004b2e37b5be7d736c" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "openssl-probe" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" + +[[package]] +name = "openssl-sys" +version = "0.9.75" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5f9bd0c2710541a3cda73d6f9ac4f1b240de4ae261065d309dbe73d9dceb42f" +dependencies = [ + "autocfg", + "cc", + "libc", + "pkg-config", + "vcpkg", +] + +[[package]] +name = "os_str_bytes" +version = "6.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ff7415e9ae3fff1225851df9e0d9e4e5479f947619774677a63572e55e80eff" + +[[package]] +name = "parity-scale-codec" +version = "1.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4b26b16c7687c3075982af47719e481815df30bc544f7a6690763a25ca16e9d" +dependencies = [ + "arrayvec 0.5.2", + "bitvec 0.17.4", + "byte-slice-cast 0.3.5", + "serde", +] + +[[package]] +name = "parity-scale-codec" +version = "2.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "373b1a4c1338d9cd3d1fa53b3a11bdab5ab6bd80a20f7f7becd76953ae2be909" +dependencies = [ + "arrayvec 0.7.2", + "bitvec 0.20.4", + "byte-slice-cast 1.2.1", + "impl-trait-for-tuples", + "parity-scale-codec-derive", + "serde", +] + +[[package]] +name = "parity-scale-codec-derive" +version = "2.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1557010476e0595c9b568d16dcfb81b93cdeb157612726f5170d31aa707bed27" +dependencies = [ + "proc-macro-crate 1.2.1", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "parity-secp256k1" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4fca4f82fccae37e8bbdaeb949a4a218a1bbc485d11598f193d2a908042e5fc1" +dependencies = [ + "arrayvec 0.5.2", + "cc", + "cfg-if 0.1.10", + "rand 0.7.3", +] + +[[package]] +name = "parking" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "427c3892f9e783d91cc128285287e70a59e206ca452770ece88a76f7a3eddd72" + +[[package]] +name = "parking_lot" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f" +dependencies = [ + "lock_api", + "parking_lot_core", +] + +[[package]] +name = "parking_lot_core" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09a279cbf25cb0757810394fbc1e359949b59e348145c643a939a525692e6929" +dependencies = [ + "cfg-if 1.0.0", + "libc", + "redox_syscall 0.2.16", + "smallvec", + "windows-sys", +] + +[[package]] +name = "percent-encoding" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "478c572c3d73181ff3c2539045f6eb99e5491218eae919370993b890cdbdd98e" + +[[package]] +name = "pin-project" +version = "0.4.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3ef0f924a5ee7ea9cbcea77529dba45f8a9ba9f622419fe3386ca581a3ae9d5a" +dependencies = [ + "pin-project-internal 0.4.30", +] + +[[package]] +name = "pin-project" +version = "1.0.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ad29a609b6bcd67fee905812e544992d216af9d755757c05ed2d0e15a74c6ecc" +dependencies = [ + "pin-project-internal 1.0.12", +] + +[[package]] +name = "pin-project-internal" +version = "0.4.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "851c8d0ce9bebe43790dedfc86614c23494ac9f423dd618d3a61fc693eafe61e" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "pin-project-internal" +version = "1.0.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "069bdb1e05adc7a8990dce9cc75370895fbe4e3d58b9b73bf1aee56359344a55" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "pin-project-lite" +version = "0.1.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "257b64915a082f7811703966789728173279bdebb956b143dbcd23f6f970a777" + +[[package]] +name = "pin-project-lite" +version = "0.2.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e0a7ae3ac2f1173085d398531c705756c94a4c56843785df85a60c1a0afac116" + +[[package]] +name = "pin-utils" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" + +[[package]] +name = "pkg-config" +version = "0.3.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1df8c4ec4b0627e53bdf214615ad287367e482558cf84b109250b37464dc03ae" + +[[package]] +name = "polling" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "899b00b9c8ab553c743b3e11e87c5c7d423b2a2de229ba95b24a756344748011" +dependencies = [ + "autocfg", + "cfg-if 1.0.0", + "libc", + "log", + "wepoll-ffi", + "winapi 0.3.9", +] + +[[package]] +name = "portpicker" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "be97d76faf1bfab666e1375477b23fde79eccf0276e9b63b92a39d676a889ba9" +dependencies = [ + "rand 0.8.5", +] + +[[package]] +name = "ppv-lite86" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eb9f9e6e233e5c4a35559a617bf40a4ec447db2e84c20b55a6f83167b7e57872" + +[[package]] +name = "primitive-types" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7dd39dcacf71411ba488570da7bbc89b717225e46478b30ba99b92db6b149809" +dependencies = [ + "fixed-hash 0.6.1", + "impl-codec 0.4.2", + "impl-rlp", + "impl-serde", + "uint 0.8.5", +] + +[[package]] +name = "primitive-types" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05e4722c697a58a99d5d06a08c30821d7c082a4632198de1eaa5a6c22ef42373" +dependencies = [ + "fixed-hash 0.7.0", + "impl-codec 0.5.1", + "uint 0.9.3", +] + +[[package]] +name = "proc-macro-crate" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d6ea3c4595b96363c13943497db34af4460fb474a95c43f4446ad341b8c9785" +dependencies = [ + "toml", +] + +[[package]] +name = "proc-macro-crate" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eda0fc3b0fb7c975631757e14d9049da17374063edb6ebbcbc54d880d4fe94e9" +dependencies = [ + "once_cell", + "thiserror", + "toml", +] + +[[package]] +name = "proc-macro-error" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" +dependencies = [ + "proc-macro-error-attr", + "proc-macro2", + "quote", + "syn", + "version_check", +] + +[[package]] +name = "proc-macro-error-attr" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" +dependencies = [ + "proc-macro2", + "quote", + "version_check", +] + +[[package]] +name = "proc-macro2" +version = "1.0.43" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0a2ca2c61bc9f3d74d2886294ab7b9853abd9c1ad903a3ac7815c58989bb7bab" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "procfs" +version = "0.7.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c434e93ef69c216e68e4f417c927b4f31502c3560b72cfdb6827e2321c5c6b3e" +dependencies = [ + "bitflags", + "byteorder", + "hex 0.4.3", + "lazy_static", + "libc", + "libflate", +] + +[[package]] +name = "prometheus" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd0ced56dee39a6e960c15c74dc48849d614586db2eaada6497477af7c7811cd" +dependencies = [ + "cfg-if 0.1.10", + "fnv", + "lazy_static", + "libc", + "procfs", + "protobuf", + "spin", + "thiserror", +] + +[[package]] +name = "protobuf" +version = "2.27.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf7e6d18738ecd0902d30d1ad232c9125985a3422929b16c65517b38adc14f96" + +[[package]] +name = "quick-error" +version = "1.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0" + +[[package]] +name = "quote" +version = "1.0.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbe448f377a7d6961e30f5955f9b8d106c3f5e449d493ee1b125c1d43c2b5179" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "radium" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "def50a86306165861203e7f84ecffbbdfdea79f0e51039b33de1e952358c47ac" + +[[package]] +name = "radium" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "643f8f41a8ebc4c5dc4515c82bb8abd397b527fc20fd681b7c011c2aee5d44fb" + +[[package]] +name = "radium" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc33ff2d4973d518d823d61aa239014831e521c75da58e3df4840d3f47749d09" + +[[package]] +name = "rand" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03" +dependencies = [ + "getrandom 0.1.16", + "libc", + "rand_chacha 0.2.2", + "rand_core 0.5.1", + "rand_hc", +] + +[[package]] +name = "rand" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" +dependencies = [ + "libc", + "rand_chacha 0.3.1", + "rand_core 0.6.4", +] + +[[package]] +name = "rand_chacha" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4c8ed856279c9737206bf725bf36935d8666ead7aa69b52be55af369d193402" +dependencies = [ + "ppv-lite86", + "rand_core 0.5.1", +] + +[[package]] +name = "rand_chacha" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" +dependencies = [ + "ppv-lite86", + "rand_core 0.6.4", +] + +[[package]] +name = "rand_core" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19" +dependencies = [ + "getrandom 0.1.16", +] + +[[package]] +name = "rand_core" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" +dependencies = [ + "getrandom 0.2.7", +] + +[[package]] +name = "rand_hc" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c" +dependencies = [ + "rand_core 0.5.1", +] + +[[package]] +name = "rand_xorshift" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d25bf25ec5ae4a3f1b92f929810509a2f53d7dca2f50b794ff57e3face536c8f" +dependencies = [ + "rand_core 0.6.4", +] + +[[package]] +name = "rayon" +version = "1.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd99e5772ead8baa5215278c9b15bf92087709e9c1b2d1f97cdb5a183c933a7d" +dependencies = [ + "autocfg", + "crossbeam-deque", + "either", + "rayon-core", +] + +[[package]] +name = "rayon-core" +version = "1.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "258bcdb5ac6dad48491bb2992db6b7cf74878b0384908af124823d118c99683f" +dependencies = [ + "crossbeam-channel", + "crossbeam-deque", + "crossbeam-utils", + "num_cpus", +] + +[[package]] +name = "redox_syscall" +version = "0.1.57" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41cc0f7e4d5d4544e8861606a285bb08d3e70712ccc7d2b84d7c0ccfaf4b05ce" + +[[package]] +name = "redox_syscall" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fb5a58c1855b4b6819d59012155603f0b22ad30cad752600aadfcb695265519a" +dependencies = [ + "bitflags", +] + +[[package]] +name = "redox_users" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "de0737333e7a9502c789a36d7c7fa6092a49895d4faa31ca5df163857ded2e9d" +dependencies = [ + "getrandom 0.1.16", + "redox_syscall 0.1.57", + "rust-argon2", +] + +[[package]] +name = "redox_users" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b033d837a7cf162d7993aded9304e30a83213c648b6e389db233191f891e5c2b" +dependencies = [ + "getrandom 0.2.7", + "redox_syscall 0.2.16", + "thiserror", +] + +[[package]] +name = "reed-solomon-erasure" +version = "4.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a415a013dd7c5d4221382329a5a3482566da675737494935cbbbcdec04662f9d" +dependencies = [ + "smallvec", +] + +[[package]] +name = "regex" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c4eb3267174b8c6c2f654116623910a0fef09c4753f8dd83db29c48a0df988b" +dependencies = [ + "aho-corasick", + "memchr", + "regex-syntax", +] + +[[package]] +name = "regex-syntax" +version = "0.6.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a3f87b73ce11b1619a3c6332f45341e0047173771e8b8b73f87bfeefb7b56244" + +[[package]] +name = "remove_dir_all" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3acd125665422973a33ac9d3dd2df85edad0f4ae9b00dafb1a05e43a9f5ef8e7" +dependencies = [ + "winapi 0.3.9", +] + +[[package]] +name = "reqwest" +version = "0.11.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b75aa69a3f06bbcc66ede33af2af253c6f7a86b1ca0033f60c580a27074fbf92" +dependencies = [ + "base64 0.13.0", + "bytes 1.2.1", + "encoding_rs", + "futures-core", + "futures-util", + "h2 0.3.14", + "http", + "http-body 0.4.5", + "hyper 0.14.20", + "hyper-tls", + "ipnet", + "js-sys", + "lazy_static", + "log", + "mime", + "native-tls", + "percent-encoding", + "pin-project-lite 0.2.9", + "serde", + "serde_json", + "serde_urlencoded 0.7.1", + "tokio 1.21.1", + "tokio-native-tls", + "tower-service", + "url", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", + "winreg", +] + +[[package]] +name = "ring" +version = "0.16.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3053cf52e236a3ed746dfc745aa9cacf1b791d846bdaf412f60a8d7d6e17c8fc" +dependencies = [ + "cc", + "libc", + "once_cell", + "spin", + "untrusted", + "web-sys", + "winapi 0.3.9", +] + +[[package]] +name = "ripemd" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "74e2ee464e763f6527991a6d532142e3c2016eb9907cc081401c11862c26a840" +dependencies = [ + "digest 0.10.5", +] + +[[package]] +name = "rle-decode-fast" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3582f63211428f83597b51b2ddb88e2a91a9d52d12831f9d08f5e624e8977422" + +[[package]] +name = "rlp" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1190dcc8c3a512f1eef5d09bb8c84c7f39e1054e174d1795482e18f5272f2e73" +dependencies = [ + "rustc-hex", +] + +[[package]] +name = "rlp-derive" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e33d7b2abe0c340d8797fe2907d3f20d3b5ea5908683618bfe80df7f621f672a" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "rusqlite" +version = "0.25.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c4b1eaf239b47034fb450ee9cdedd7d0226571689d8823030c4b6c2cb407152" +dependencies = [ + "bitflags", + "fallible-iterator", + "fallible-streaming-iterator", + "hashlink", + "libsqlite3-sys", + "memchr", + "smallvec", +] + +[[package]] +name = "rust-argon2" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4b18820d944b33caa75a71378964ac46f58517c92b6ae5f762636247c09e78fb" +dependencies = [ + "base64 0.13.0", + "blake2b_simd", + "constant_time_eq", + "crossbeam-utils", +] + +[[package]] +name = "rustc-demangle" +version = "0.1.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ef03e0a2b150c7a90d01faf6254c9c48a41e95fb2a8c2ac1c6f0d2b9aefc342" + +[[package]] +name = "rustc-hex" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3e75f6a532d0fd9f7f13144f392b6ad56a32696bfcd9c78f797f16bbb6f072d6" + +[[package]] +name = "rustc_version" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366" +dependencies = [ + "semver", +] + +[[package]] +name = "rustversion" +version = "1.0.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97477e48b4cf8603ad5f7aaf897467cf42ab4218a38ef76fb14c2d6773a6d6a8" + +[[package]] +name = "ryu" +version = "1.0.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4501abdff3ae82a1c1b477a17252eb69cee9e66eb915c1abaa4f44d873df9f09" + +[[package]] +name = "safe_arith" +version = "0.1.0" +source = "git+https://github.com/aurora-is-near/lighthouse.git?rev=b624c3f0d3c5bc9ea46faa14c9cb2d90ee1e1dec#b624c3f0d3c5bc9ea46faa14c9cb2d90ee1e1dec" + +[[package]] +name = "safemem" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef703b7cb59335eae2eb93ceb664c0eb7ea6bf567079d843e09420219668e072" + +[[package]] +name = "schannel" +version = "0.1.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "88d6731146462ea25d9244b2ed5fd1d716d25c52e4d54aa4fb0f3c4e9854dbe2" +dependencies = [ + "lazy_static", + "windows-sys", +] + +[[package]] +name = "scoped-tls" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ea6a9290e3c9cf0f18145ef7ffa62d68ee0bf5fcd651017e586dc7fd5da448c2" + +[[package]] +name = "scopeguard" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd" + +[[package]] +name = "security-framework" +version = "2.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2bc1bb97804af6631813c55739f771071e0f2ed33ee20b68c86ec505d906356c" +dependencies = [ + "bitflags", + "core-foundation", + "core-foundation-sys", + "libc", + "security-framework-sys", +] + +[[package]] +name = "security-framework-sys" +version = "2.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0160a13a177a45bfb43ce71c01580998474f556ad854dcbca936dd2841a5c556" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "semver" +version = "1.0.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e25dfac463d778e353db5be2449d1cce89bd6fd23c9f1ea21310ce6e5a1b29c4" + +[[package]] +name = "serde" +version = "1.0.144" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0f747710de3dcd43b88c9168773254e809d8ddbdf9653b84e2554ab219f17860" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde-big-array" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3323f09a748af288c3dc2474ea6803ee81f118321775bffa3ac8f7e65c5e90e7" +dependencies = [ + "serde", +] + +[[package]] +name = "serde_derive" +version = "1.0.144" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94ed3a816fb1d101812f83e789f888322c34e291f894f19590dc310963e87a00" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "serde_json" +version = "1.0.85" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e55a28e3aaef9d5ce0506d0a14dbba8054ddc7e499ef522dd8b26859ec9d4a44" +dependencies = [ + "itoa 1.0.3", + "ryu", + "serde", +] + +[[package]] +name = "serde_urlencoded" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ec5d77e2d4c73717816afac02670d5c4f534ea95ed430442cad02e7a6e32c97" +dependencies = [ + "dtoa", + "itoa 0.4.8", + "serde", + "url", +] + +[[package]] +name = "serde_urlencoded" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" +dependencies = [ + "form_urlencoded", + "itoa 1.0.3", + "ryu", + "serde", +] + +[[package]] +name = "serde_with" +version = "1.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "678b5a069e50bf00ecd22d0cd8ddf7c236f68581b03db652061ed5eb13a312ff" +dependencies = [ + "serde", + "serde_with_macros", +] + +[[package]] +name = "serde_with_macros" +version = "1.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e182d6ec6f05393cc0e5ed1bf81ad6db3a8feedf8ee515ecdd369809bcce8082" +dependencies = [ + "darling", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "serde_yaml" +version = "0.8.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "578a7433b776b56a35785ed5ce9a7e777ac0598aac5a6dd1b4b18a307c7fc71b" +dependencies = [ + "indexmap", + "ryu", + "serde", + "yaml-rust", +] + +[[package]] +name = "sha-1" +version = "0.9.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "99cd6713db3cf16b6c84e06321e049a9b9f699826e16096d23bbcc44d15d51a6" +dependencies = [ + "block-buffer 0.9.0", + "cfg-if 1.0.0", + "cpufeatures", + "digest 0.9.0", + "opaque-debug", +] + +[[package]] +name = "sha1" +version = "0.10.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f04293dc80c3993519f2d7f6f511707ee7094fe0c6d3406feb330cdb3540eba3" +dependencies = [ + "cfg-if 1.0.0", + "cpufeatures", + "digest 0.10.5", +] + +[[package]] +name = "sha2" +version = "0.9.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4d58a1e1bf39749807d89cf2d98ac2dfa0ff1cb3faa38fbb64dd88ac8013d800" +dependencies = [ + "block-buffer 0.9.0", + "cfg-if 1.0.0", + "cpufeatures", + "digest 0.9.0", + "opaque-debug", +] + +[[package]] +name = "sha2" +version = "0.10.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "82e6b795fe2e3b1e845bafcb27aa35405c4d47cdfc92af5fc8d3002f76cebdc0" +dependencies = [ + "cfg-if 1.0.0", + "cpufeatures", + "digest 0.10.5", +] + +[[package]] +name = "sha3" +version = "0.10.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2904bea16a1ae962b483322a1c7b81d976029203aea1f461e51cd7705db7ba9" +dependencies = [ + "digest 0.10.5", + "keccak", +] + +[[package]] +name = "signal-hook" +version = "0.3.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a253b5e89e2698464fc26b545c9edceb338e18a89effeeecfea192c3025be29d" +dependencies = [ + "libc", + "signal-hook-registry", +] + +[[package]] +name = "signal-hook-registry" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e51e73328dc4ac0c7ccbda3a494dfa03df1de2f46018127f60c693f2648455b0" +dependencies = [ + "libc", +] + +[[package]] +name = "signature" +version = "1.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "deb766570a2825fa972bceff0d195727876a9cdf2460ab2e52d455dc2de47fd9" + +[[package]] +name = "siphasher" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b8de496cf83d4ed58b6be86c3a275b8602f6ffe98d3024a869e124147a9a3ac" + +[[package]] +name = "slab" +version = "0.4.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4614a76b2a8be0058caa9dbbaf66d988527d86d003c11a94fbd335d7661edcef" +dependencies = [ + "autocfg", +] + +[[package]] +name = "slog" +version = "2.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8347046d4ebd943127157b94d63abb990fcf729dc4e9978927fdf4ac3c998d06" + +[[package]] +name = "smallvec" +version = "1.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2fd0db749597d91ff862fd1d55ea87f7855a744a8425a64695b6fca237d1dad1" + +[[package]] +name = "smart-default" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "133659a15339456eeeb07572eb02a91c91e9815e9cbc89566944d2c8d3efdbf6" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "socket2" +version = "0.3.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "122e570113d28d773067fab24266b66753f6ea915758651696b6e35e49f88d6e" +dependencies = [ + "cfg-if 1.0.0", + "libc", + "winapi 0.3.9", +] + +[[package]] +name = "socket2" +version = "0.4.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "02e2d2db9033d13a1567121ddd7a095ee144db4e1ca1b1bda3419bc0da294ebd" +dependencies = [ + "libc", + "winapi 0.3.9", +] + +[[package]] +name = "spin" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042d" + +[[package]] +name = "static_assertions" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" + +[[package]] +name = "strsim" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623" + +[[package]] +name = "strum" +version = "0.24.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "063e6045c0e62079840579a7e47a355ae92f60eb74daaf156fb1e84ba164e63f" +dependencies = [ + "strum_macros", +] + +[[package]] +name = "strum_macros" +version = "0.24.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e385be0d24f186b4ce2f9982191e7101bb737312ad61c1f2f984f34bcf85d59" +dependencies = [ + "heck", + "proc-macro2", + "quote", + "rustversion", + "syn", +] + +[[package]] +name = "subtle" +version = "2.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6bdef32e8150c2a081110b42772ffe7d7c9032b606bc226c8260fd97e0976601" + +[[package]] +name = "superstruct" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95a99807a055ff4ff5d249bb84c80d9eabb55ca3c452187daae43fd5b51ef695" +dependencies = [ + "darling", + "itertools", + "proc-macro2", + "quote", + "smallvec", + "syn", +] + +[[package]] +name = "swap_or_not_shuffle" +version = "0.2.0" +source = "git+https://github.com/aurora-is-near/lighthouse.git?rev=b624c3f0d3c5bc9ea46faa14c9cb2d90ee1e1dec#b624c3f0d3c5bc9ea46faa14c9cb2d90ee1e1dec" +dependencies = [ + "eth2_hashing", + "ethereum-types", +] + +[[package]] +name = "syn" +version = "1.0.100" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "52205623b1b0f064a4e71182c3b18ae902267282930c6d5462c91b859668426e" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "synstructure" +version = "0.12.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f36bdaa60a83aca3921b5259d5400cbf5e90fc51931376a9bd4a0eb79aa7210f" +dependencies = [ + "proc-macro2", + "quote", + "syn", + "unicode-xid", +] + +[[package]] +name = "tap" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" + +[[package]] +name = "tar" +version = "0.4.38" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4b55807c0344e1e6c04d7c965f5289c39a8d94ae23ed5c0b57aabac549f871c6" +dependencies = [ + "filetime", + "libc", + "xattr", +] + +[[package]] +name = "tempfile" +version = "3.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5cdb1ef4eaeeaddc8fbd371e5017057064af0911902ef36b39801f67cc6d79e4" +dependencies = [ + "cfg-if 1.0.0", + "fastrand", + "libc", + "redox_syscall 0.2.16", + "remove_dir_all", + "winapi 0.3.9", +] + +[[package]] +name = "termcolor" +version = "1.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bab24d30b911b2376f3a13cc2cd443142f0c81dda04c118693e35b3835757755" +dependencies = [ + "winapi-util", +] + +[[package]] +name = "test_random_derive" +version = "0.2.0" +source = "git+https://github.com/aurora-is-near/lighthouse.git?rev=b624c3f0d3c5bc9ea46faa14c9cb2d90ee1e1dec#b624c3f0d3c5bc9ea46faa14c9cb2d90ee1e1dec" +dependencies = [ + "quote", + "syn", +] + +[[package]] +name = "textwrap" +version = "0.15.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "949517c0cf1bf4ee812e2e07e08ab448e3ae0d23472aee8a06c985f0c8815b16" + +[[package]] +name = "thiserror" +version = "1.0.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c53f98874615aea268107765aa1ed8f6116782501d18e53d08b471733bea6c85" +dependencies = [ + "thiserror-impl", +] + +[[package]] +name = "thiserror-impl" +version = "1.0.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8b463991b4eab2d801e724172285ec4195c650e8ec79b149e6c2a8e6dd3f783" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "thread" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "afe9c0e959dd1e7b871071b51bc674380d1889cd4fed9f4b3b1f5c1772d9f796" + +[[package]] +name = "threadpool" +version = "1.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d050e60b33d41c19108b32cea32164033a9013fe3b46cbd4457559bfbf77afaa" +dependencies = [ + "num_cpus", +] + +[[package]] +name = "time" +version = "0.1.44" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6db9e6914ab8b1ae1c260a4ae7a49b6c5611b40328a735b21862567685e73255" +dependencies = [ + "libc", + "wasi 0.10.0+wasi-snapshot-preview1", + "winapi 0.3.9", +] + +[[package]] +name = "tiny-keccak" +version = "2.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2c9d3793400a45f954c52e73d068316d76b6f4e36977e3fcebb13a2721e80237" +dependencies = [ + "crunchy", +] + +[[package]] +name = "tinyvec" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50" +dependencies = [ + "tinyvec_macros", +] + +[[package]] +name = "tinyvec_macros" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cda74da7e1a664f795bb1f8a87ec406fb89a02522cf6e50620d016add6dbbf5c" + +[[package]] +name = "tokio" +version = "0.2.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6703a273949a90131b290be1fe7b039d0fc884aa1935860dfcbe056f28cd8092" +dependencies = [ + "bytes 0.5.6", + "fnv", + "futures-core", + "iovec", + "lazy_static", + "memchr", + "mio 0.6.23", + "pin-project-lite 0.1.12", + "slab", +] + +[[package]] +name = "tokio" +version = "1.21.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0020c875007ad96677dcc890298f4b942882c5d4eb7cc8f439fc3bf813dc9c95" +dependencies = [ + "autocfg", + "bytes 1.2.1", + "libc", + "memchr", + "mio 0.8.4", + "num_cpus", + "once_cell", + "parking_lot", + "pin-project-lite 0.2.9", + "signal-hook-registry", + "socket2 0.4.7", + "tokio-macros", + "winapi 0.3.9", +] + +[[package]] +name = "tokio-macros" +version = "1.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9724f9a975fb987ef7a3cd9be0350edcbe130698af5b8f7a631e23d42d052484" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "tokio-native-tls" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f7d995660bd2b7f8c1568414c1126076c13fbb725c40112dc0120b78eb9b717b" +dependencies = [ + "native-tls", + "tokio 1.21.1", +] + +[[package]] +name = "tokio-retry" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f57eb36ecbe0fc510036adff84824dd3c24bb781e21bfa67b69d556aa85214f" +dependencies = [ + "pin-project 1.0.12", + "rand 0.8.5", + "tokio 1.21.1", +] + +[[package]] +name = "tokio-tungstenite" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d9e878ad426ca286e4dcae09cbd4e1973a7f8987d97570e2469703dd7f5720c" +dependencies = [ + "futures-util", + "log", + "pin-project 0.4.30", + "tokio 0.2.25", + "tungstenite", +] + +[[package]] +name = "tokio-util" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "be8242891f2b6cbef26a2d7e8605133c2c554cd35b3e4948ea892d6d68436499" +dependencies = [ + "bytes 0.5.6", + "futures-core", + "futures-sink", + "log", + "pin-project-lite 0.1.12", + "tokio 0.2.25", +] + +[[package]] +name = "tokio-util" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0bb2e075f03b3d66d8d8785356224ba688d2906a371015e225beeb65ca92c740" +dependencies = [ + "bytes 1.2.1", + "futures-core", + "futures-sink", + "pin-project-lite 0.2.9", + "tokio 1.21.1", + "tracing", +] + +[[package]] +name = "toml" +version = "0.5.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8d82e1a7758622a465f8cee077614c73484dac5b836c02ff6a40d5d1010324d7" +dependencies = [ + "serde", +] + +[[package]] +name = "tower-service" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6bc1c9ce2b5135ac7f93c72918fc37feb872bdc6a5533a8b85eb4b86bfdae52" + +[[package]] +name = "tracing" +version = "0.1.36" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2fce9567bd60a67d08a16488756721ba392f24f29006402881e43b19aac64307" +dependencies = [ + "cfg-if 1.0.0", + "log", + "pin-project-lite 0.2.9", + "tracing-attributes", + "tracing-core", +] + +[[package]] +name = "tracing-attributes" +version = "0.1.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "11c75893af559bc8e10716548bdef5cb2b983f8e637db9d0e15126b61b484ee2" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "tracing-core" +version = "0.1.29" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5aeea4303076558a00714b823f9ad67d58a3bbda1df83d8827d21193156e22f7" +dependencies = [ + "once_cell", +] + +[[package]] +name = "tracing-futures" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97d095ae15e245a057c8e8451bab9b3ee1e1f68e9ba2b4fbc18d0ac5237835f2" +dependencies = [ + "pin-project 1.0.12", + "tracing", +] + +[[package]] +name = "tree_hash" +version = "0.4.1" +source = "git+https://github.com/aurora-is-near/lighthouse.git?rev=b624c3f0d3c5bc9ea46faa14c9cb2d90ee1e1dec#b624c3f0d3c5bc9ea46faa14c9cb2d90ee1e1dec" +dependencies = [ + "eth2_hashing", + "ethereum-types", + "smallvec", +] + +[[package]] +name = "tree_hash_derive" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3cd22d128157837a4434bb51119aef11103f17bfe8c402ce688cf25aa1e608ad" +dependencies = [ + "darling", + "quote", + "syn", +] + +[[package]] +name = "tree_hash_derive" +version = "0.4.0" +source = "git+https://github.com/aurora-is-near/lighthouse.git?rev=b624c3f0d3c5bc9ea46faa14c9cb2d90ee1e1dec#b624c3f0d3c5bc9ea46faa14c9cb2d90ee1e1dec" +dependencies = [ + "darling", + "quote", + "syn", +] + +[[package]] +name = "try-lock" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "59547bce71d9c38b83d9c0e92b6066c4253371f15005def0c30d9657f50c7642" + +[[package]] +name = "tungstenite" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0308d80d86700c5878b9ef6321f020f29b1bb9d5ff3cab25e75e23f3a492a23" +dependencies = [ + "base64 0.12.3", + "byteorder", + "bytes 0.5.6", + "http", + "httparse", + "input_buffer", + "log", + "rand 0.7.3", + "sha-1", + "url", + "utf-8", +] + +[[package]] +name = "twoway" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "59b11b2b5241ba34be09c3cc85a36e56e48f9888862e19cedf23336d35316ed1" +dependencies = [ + "memchr", +] + +[[package]] +name = "typenum" +version = "1.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dcf81ac59edc17cc8697ff311e8f5ef2d99fcbd9817b34cec66f90b6c3dfd987" + +[[package]] +name = "types" +version = "0.2.0" +source = "git+https://github.com/aurora-is-near/lighthouse.git?rev=b624c3f0d3c5bc9ea46faa14c9cb2d90ee1e1dec#b624c3f0d3c5bc9ea46faa14c9cb2d90ee1e1dec" +dependencies = [ + "bls", + "cached_tree_hash", + "compare_fields", + "compare_fields_derive", + "derivative", + "eth2_hashing", + "eth2_interop_keypairs", + "eth2_serde_utils", + "eth2_ssz", + "eth2_ssz_derive 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "eth2_ssz_types", + "ethereum-types", + "hex 0.4.3", + "int_to_bytes", + "itertools", + "lazy_static", + "log", + "parking_lot", + "rand 0.8.5", + "rand_xorshift", + "rayon", + "regex", + "rusqlite", + "safe_arith", + "serde", + "serde_derive", + "serde_json", + "serde_with", + "serde_yaml", + "slog", + "smallvec", + "superstruct", + "swap_or_not_shuffle", + "tempfile", + "test_random_derive", + "tree_hash", + "tree_hash_derive 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "uint" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9db035e67dfaf7edd9aebfe8676afcd63eed53c8a4044fed514c8cccf1835177" +dependencies = [ + "byteorder", + "crunchy", + "rustc-hex", + "static_assertions", +] + +[[package]] +name = "uint" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "12f03af7ccf01dd611cc450a0d10dbc9b745770d096473e2faf0ca6e2d66d1e0" +dependencies = [ + "byteorder", + "crunchy", + "hex 0.4.3", + "static_assertions", +] + +[[package]] +name = "unicase" +version = "2.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "50f37be617794602aabbeee0be4f259dc1778fabe05e2d67ee8f79326d5cb4f6" +dependencies = [ + "version_check", +] + +[[package]] +name = "unicode-bidi" +version = "0.3.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "099b7128301d285f79ddd55b9a83d5e6b9e97c92e0ea0daebee7263e932de992" + +[[package]] +name = "unicode-ident" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dcc811dc4066ac62f84f11307873c4850cb653bfa9b1719cee2bd2204a4bc5dd" + +[[package]] +name = "unicode-normalization" +version = "0.1.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c5713f0fc4b5db668a2ac63cdb7bb4469d8c9fed047b1d0292cc7b0ce2ba921" +dependencies = [ + "tinyvec", +] + +[[package]] +name = "unicode-xid" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f962df74c8c05a667b5ee8bcf162993134c104e96440b663c8daa176dc772d8c" + +[[package]] +name = "untrusted" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a156c684c91ea7d62626509bce3cb4e1d9ed5c4d978f7b4352658f96a4c26b4a" + +[[package]] +name = "url" +version = "2.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d68c799ae75762b8c3fe375feb6600ef5602c883c5d21eb51c09f22b83c4643" +dependencies = [ + "form_urlencoded", + "idna", + "percent-encoding", + "serde", +] + +[[package]] +name = "urlencoding" +version = "1.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a1f0175e03a0973cf4afd476bef05c26e228520400eb1fd473ad417b1c00ffb" + +[[package]] +name = "utf-8" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09cc8ee72d2a9becf2f2febe0205bbed8fc6615b7cb429ad062dc7b7ddd036a9" + +[[package]] +name = "uuid" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bc5cf98d8186244414c848017f0e2676b3fcb46807f6668a97dfe67359a3c4b7" +dependencies = [ + "getrandom 0.2.7", +] + +[[package]] +name = "value-bag" +version = "1.0.0-alpha.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2209b78d1249f7e6f3293657c9779fe31ced465df091bbd433a1cf88e916ec55" +dependencies = [ + "ctor", + "version_check", +] + +[[package]] +name = "vcpkg" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" + +[[package]] +name = "version_check" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" + +[[package]] +name = "waker-fn" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d5b2c62b4012a3e1eca5a7e077d13b3bf498c4073e33ccd58626607748ceeca" + +[[package]] +name = "want" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ce8a968cb1cd110d136ff8b819a556d6fb6d919363c61534f6860c7eb172ba0" +dependencies = [ + "log", + "try-lock", +] + +[[package]] +name = "warp" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f41be6df54c97904af01aa23e613d4521eed7ab23537cede692d4058f6449407" +dependencies = [ + "bytes 0.5.6", + "futures", + "headers", + "http", + "hyper 0.13.10", + "log", + "mime", + "mime_guess", + "multipart", + "pin-project 0.4.30", + "scoped-tls", + "serde", + "serde_json", + "serde_urlencoded 0.6.1", + "tokio 0.2.25", + "tokio-tungstenite", + "tower-service", + "tracing", + "tracing-futures", + "urlencoding", +] + +[[package]] +name = "wasi" +version = "0.9.0+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519" + +[[package]] +name = "wasi" +version = "0.10.0+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a143597ca7c7793eff794def352d41792a93c481eb1042423ff7ff72ba2c31f" + +[[package]] +name = "wasi" +version = "0.11.0+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" + +[[package]] +name = "wasm-bindgen" +version = "0.2.83" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eaf9f5aceeec8be17c128b2e93e031fb8a4d469bb9c4ae2d7dc1888b26887268" +dependencies = [ + "cfg-if 1.0.0", + "wasm-bindgen-macro", +] + +[[package]] +name = "wasm-bindgen-backend" +version = "0.2.83" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c8ffb332579b0557b52d268b91feab8df3615f265d5270fec2a8c95b17c1142" +dependencies = [ + "bumpalo", + "log", + "once_cell", + "proc-macro2", + "quote", + "syn", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-futures" +version = "0.4.33" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23639446165ca5a5de86ae1d8896b737ae80319560fbaa4c2887b7da6e7ebd7d" +dependencies = [ + "cfg-if 1.0.0", + "js-sys", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "wasm-bindgen-macro" +version = "0.2.83" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "052be0f94026e6cbc75cdefc9bae13fd6052cdcaf532fa6c45e7ae33a1e6c810" +dependencies = [ + "quote", + "wasm-bindgen-macro-support", +] + +[[package]] +name = "wasm-bindgen-macro-support" +version = "0.2.83" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "07bc0c051dc5f23e307b13285f9d75df86bfdf816c5721e573dec1f9b8aa193c" +dependencies = [ + "proc-macro2", + "quote", + "syn", + "wasm-bindgen-backend", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-shared" +version = "0.2.83" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1c38c045535d93ec4f0b4defec448e4291638ee608530863b1e2ba115d4fff7f" + +[[package]] +name = "web-sys" +version = "0.3.60" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bcda906d8be16e728fd5adc5b729afad4e444e106ab28cd1c7256e54fa61510f" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "wee_alloc" +version = "0.4.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dbb3b5a6b2bb17cb6ad44a2e68a43e8d2722c997da10e928665c72ec6c0a0b8e" +dependencies = [ + "cfg-if 0.1.10", + "libc", + "memory_units", + "winapi 0.3.9", +] + +[[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.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1c831fbbee9e129a8cf93e7747a82da9d95ba8e16621cae60ec2cdc849bacb7b" +dependencies = [ + "either", + "libc", + "once_cell", +] + +[[package]] +name = "winapi" +version = "0.2.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "167dc9d6949a9b857f3451275e911c3f44255842c1f7a76f33c55103a909087a" + +[[package]] +name = "winapi" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" +dependencies = [ + "winapi-i686-pc-windows-gnu", + "winapi-x86_64-pc-windows-gnu", +] + +[[package]] +name = "winapi-build" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2d315eee3b34aca4797b2da6b13ed88266e6d612562a0c46390af8299fc699bc" + +[[package]] +name = "winapi-i686-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" + +[[package]] +name = "winapi-util" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178" +dependencies = [ + "winapi 0.3.9", +] + +[[package]] +name = "winapi-x86_64-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" + +[[package]] +name = "windows-sys" +version = "0.36.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ea04155a16a59f9eab786fe12a4a450e75cdb175f9e0d80da1e17db09f55b8d2" +dependencies = [ + "windows_aarch64_msvc", + "windows_i686_gnu", + "windows_i686_msvc", + "windows_x86_64_gnu", + "windows_x86_64_msvc", +] + +[[package]] +name = "windows_aarch64_msvc" +version = "0.36.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9bb8c3fd39ade2d67e9874ac4f3db21f0d710bee00fe7cab16949ec184eeaa47" + +[[package]] +name = "windows_i686_gnu" +version = "0.36.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "180e6ccf01daf4c426b846dfc66db1fc518f074baa793aa7d9b9aaeffad6a3b6" + +[[package]] +name = "windows_i686_msvc" +version = "0.36.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2e7917148b2812d1eeafaeb22a97e4813dfa60a3f8f78ebe204bcc88f12f024" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.36.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4dcd171b8776c41b97521e5da127a2d86ad280114807d0b2ab1e462bc764d9e1" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.36.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c811ca4a8c853ef420abd8592ba53ddbbac90410fab6903b3e79972a631f7680" + +[[package]] +name = "winreg" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "80d0f4e272c85def139476380b12f9ac60926689dd2e01d4923222f40580869d" +dependencies = [ + "winapi 0.3.9", +] + +[[package]] +name = "workspaces" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a5b213a32d18d7bd6c1b2775ef365f0f7c41fefae1dc4afe3675b0a314cee806" +dependencies = [ + "anyhow", + "async-trait", + "base64 0.13.0", + "borsh", + "chrono", + "dirs 3.0.2", + "hex 0.4.3", + "libc", + "near-account-id 0.14.0", + "near-crypto 0.14.0", + "near-jsonrpc-client", + "near-jsonrpc-primitives", + "near-primitives 0.14.0", + "near-sandbox-utils", + "portpicker", + "rand 0.8.5", + "reqwest", + "serde", + "serde_json", + "thiserror", + "tokio 1.21.1", + "tokio-retry", + "tracing", + "url", +] + +[[package]] +name = "ws2_32-sys" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d59cefebd0c892fa2dd6de581e937301d8552cb44489cdff035c6187cb63fa5e" +dependencies = [ + "winapi 0.2.8", + "winapi-build", +] + +[[package]] +name = "wyz" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85e60b0d1b5f99db2556934e21937020776a5d31520bf169e851ac44e6420214" + +[[package]] +name = "wyz" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "30b31594f29d27036c383b53b59ed3476874d518f0efb151b27a4c275141390e" +dependencies = [ + "tap", +] + +[[package]] +name = "xattr" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d1526bbe5aaeb5eb06885f4d987bcdfa5e23187055de9b83fe00156a821fabc" +dependencies = [ + "libc", +] + +[[package]] +name = "yaml-rust" +version = "0.4.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56c1936c4cc7a1c9ab21a1ebb602eb942ba868cbd44a99cb7cdc5892335e1c85" +dependencies = [ + "linked-hash-map", +] + +[[package]] +name = "zeroize" +version = "1.5.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c394b5bd0c6f669e7275d9c20aa90ae064cb22e75a1cad54e1b34088034b149f" +dependencies = [ + "zeroize_derive", +] + +[[package]] +name = "zeroize_derive" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f8f187641dad4f680d25c4bfc4225b418165984179f26ca76ec4fb6441d3a17" +dependencies = [ + "proc-macro2", + "quote", + "syn", + "synstructure", +] + +[[package]] +name = "zip" +version = "0.5.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93ab48844d61251bb3835145c521d88aa4031d7139e8485990f60ca911fa0815" +dependencies = [ + "byteorder", + "bzip2", + "crc32fast", + "flate2", + "thiserror", + "time", +] diff --git a/eth2near/eth2-contract-init/Cargo.toml b/eth2near/eth2-contract-init/Cargo.toml new file mode 100644 index 000000000..d711b3d66 --- /dev/null +++ b/eth2near/eth2-contract-init/Cargo.toml @@ -0,0 +1,34 @@ +[package] +name = "eth2-contract-init" +version = "0.1.0" +edition = "2021" + +[dependencies] +tree_hash = { git = "https://github.com/aurora-is-near/lighthouse.git", rev = "b624c3f0d3c5bc9ea46faa14c9cb2d90ee1e1dec" } +merkle_proof = { git = "https://github.com/aurora-is-near/lighthouse.git", rev = "b624c3f0d3c5bc9ea46faa14c9cb2d90ee1e1dec" } +eth2_to_near_relay = { path = "../eth2near-block-relay-rs"} +eth_rpc_client = { path = "../eth_rpc_client" } +eth-types = { path = "../../contracts/near/eth-types/", features = ["eip1559"]} +eth2-utility = { path = "../../contracts/near/eth2-utility" } +contract_wrapper = { path = "../contract_wrapper" } +log = { version = "0.4", features = ["std", "serde"] } +clap = { version = "3.1.6", features = ["derive"] } +reqwest = { version = "0.11", features = ["blocking"] } +serde_json = "1.0.74" +serde = { version = "1.0", features = ["derive"] } +toml = "0.5.9" +near-sdk = "4.0.0" +near-primitives = "0.14.0" +eth2near-logger = { path = "../logger" } + +[dev-dependencies] +workspaces = "0.5.0" +tokio = { version = "1.1", features = ["macros", "rt", "time"] } + +[patch] +[patch.crates-io] +eth2_ssz = { git = "https://github.com/aurora-is-near/lighthouse.git", rev = "b624c3f0d3c5bc9ea46faa14c9cb2d90ee1e1dec" } +eth2_ssz_types = { git = "https://github.com/aurora-is-near/lighthouse.git", rev = "b624c3f0d3c5bc9ea46faa14c9cb2d90ee1e1dec" } +eth2_hashing = { git = "https://github.com/aurora-is-near/lighthouse.git", rev = "b624c3f0d3c5bc9ea46faa14c9cb2d90ee1e1dec" } +tree_hash = { git = "https://github.com/aurora-is-near/lighthouse.git", rev = "b624c3f0d3c5bc9ea46faa14c9cb2d90ee1e1dec" } +eth2_serde_utils = { git = "https://github.com/aurora-is-near/lighthouse.git", rev = "b624c3f0d3c5bc9ea46faa14c9cb2d90ee1e1dec" } diff --git a/eth2near/eth2-contract-init/config_for_tests.toml b/eth2near/eth2-contract-init/config_for_tests.toml new file mode 100644 index 000000000..3ca997f80 --- /dev/null +++ b/eth2near/eth2-contract-init/config_for_tests.toml @@ -0,0 +1,4 @@ +beacon_endpoint = "https://lodestar-goerli.chainsafe.io" +eth1_endpoint = "https://goerli.infura.io/v3/ETH1_INFURA_API_KEY" +network_name = "Goerli" +wasm_filepath = "../../contracts/near/res/eth2_client.wasm" \ No newline at end of file diff --git a/eth2near/eth2-contract-init/src/config.rs b/eth2near/eth2-contract-init/src/config.rs new file mode 100644 index 000000000..7e1ff3150 --- /dev/null +++ b/eth2near/eth2-contract-init/src/config.rs @@ -0,0 +1,112 @@ +use contract_wrapper::eth_network::EthNetwork; +use contract_wrapper::near_network::NearNetwork; +use contract_wrapper::near_rpc_client::NearRPCClient; +use reqwest::Url; +use serde::Deserialize; +use std::io::Read; +use std::path::PathBuf; + +#[derive(Deserialize, Debug, Clone)] +pub struct Config { + // endpoint to a full node of Eth2 Beacon chain with Light Client API + pub beacon_endpoint: String, + + // endpoint for the Ethereum full node, which supports Eth1 RPC API + pub eth1_endpoint: String, + + // endpoint for a full node on the NEAR chain + pub near_endpoint: String, + + // Account id from which relay make requests + pub signer_account_id: String, + + // Path to the file with a secret key for signer account + pub path_to_signer_secret_key: String, + + // Account id for eth client contract on NEAR + pub contract_account_id: String, + + // The Ethereum network name (mainnet, kiln, ropsten, goerli) + pub ethereum_network: EthNetwork, + + // NEAR network name (mainnet, testnet) + pub near_network_id: NearNetwork, + + // Path to dir for output submitted light client updates and execution blocks + pub output_dir: Option, + + // Timeout for ETH RPC requests in seconds + pub eth_requests_timeout_seconds: Option, + + pub validate_updates: Option, + + pub verify_bls_signature: Option, + + pub hashes_gc_threshold: Option, + + pub max_submitted_blocks_by_account: Option, + + pub trusted_signer_account_id: Option, + + /// The trusted block root for checkpoint for contract initialization + /// e.g.: 0x9cd0c5a8392d0659426b12384e8440c147510ab93eeaeccb08435a462d7bb1c7 + pub init_block_root: Option, +} + +impl Config { + pub fn load_from_toml(path: PathBuf) -> Self { + let mut config = std::fs::File::open(path).expect("Error on opening file with config"); + let mut content = String::new(); + config.read_to_string(&mut content).expect("Error on reading config"); + let config = toml::from_str(content.as_str()).expect("Error on parse config"); + + Self::check_urls(&config); + Self::check_account_id(&config); + + config + } + + fn check_urls(&self) { + // check `beacon_endpoint` + Url::parse(&self.beacon_endpoint).expect("Incorrect beacon endpoint"); + + // check `eth1_endpoint` + Url::parse(&self.eth1_endpoint).expect("Incorrect ETH1 endpoint"); + + // check `near_endpoint` + Url::parse(&self.near_endpoint).expect("Incorrect NEAR endpoint"); + } + + fn check_account_id(&self) { + let near_rpc_client = NearRPCClient::new(&self.near_endpoint); + + // check `signer_account_id` + self.signer_account_id.parse::().expect("Incorrect signer account ID"); + if !near_rpc_client + .check_account_exists(&self.signer_account_id) + .expect("Error on checking signer account ID existence") + { + panic!("Signer account ID doesn't exist on NEAR network"); + } + + // check `trusted_signer_account_id` + if let Some(trusted_signature) = self.trusted_signer_account_id.clone() { + trusted_signature.parse::().expect("Incorrect contract account ID"); + if !near_rpc_client + .check_account_exists(&trusted_signature) + .expect("Error on checking trusted signer account ID existence") + { + panic!("Trusted signer account ID doesn't exist on NEAR network"); + } + } + + // check `contract_account_id` + self.contract_account_id.parse::().expect("Incorrect contract account ID"); + if !near_rpc_client + .check_account_exists(&self.contract_account_id) + .expect("Error on checking contract account ID existence") + { + panic!("Contract account ID doesn't exist on NEAR network"); + } + } +} diff --git a/eth2near/eth2-contract-init/src/config_for_tests.rs b/eth2near/eth2-contract-init/src/config_for_tests.rs new file mode 100644 index 000000000..10f13e854 --- /dev/null +++ b/eth2near/eth2-contract-init/src/config_for_tests.rs @@ -0,0 +1,28 @@ +use std::env; +use serde::Deserialize; +use std::io::Read; +use std::path::PathBuf; +use contract_wrapper::eth_network::EthNetwork; + +#[derive(Deserialize, Debug, Clone)] +pub struct ConfigForTests { + pub beacon_endpoint: String, + pub eth1_endpoint: String, + pub network_name: EthNetwork, + pub wasm_filepath: String, +} + +impl ConfigForTests { + pub fn load_from_toml(path: PathBuf) -> Self { + let mut config = std::fs::File::open(path).unwrap(); + let mut content = String::new(); + config.read_to_string(&mut content).unwrap(); + + let mut config: Self = toml::from_str(content.as_str()).unwrap(); + + let api_key_string = env::var("ETH1_INFURA_API_KEY").unwrap(); + config.eth1_endpoint = config.eth1_endpoint.replace("ETH1_INFURA_API_KEY", &api_key_string); + + config + } +} diff --git a/eth2near/eth2-contract-init/src/init_contract.rs b/eth2near/eth2-contract-init/src/init_contract.rs new file mode 100644 index 000000000..d5cc91cc6 --- /dev/null +++ b/eth2near/eth2-contract-init/src/init_contract.rs @@ -0,0 +1,214 @@ +use contract_wrapper::eth_client_contract::EthClientContract; +use eth_rpc_client::beacon_rpc_client::BeaconRPCClient; +use eth_rpc_client::eth1_rpc_client::Eth1RPCClient; +use eth_types::eth2::ExtendedBeaconBlockHeader; +use eth_types::BlockHeader; +use log::info; +use std::{thread, time}; +use contract_wrapper::near_network::NearNetwork; +use eth_rpc_client::light_client_snapshot_with_proof::LightClientSnapshotWithProof; +use crate::config::Config; +use eth2_utility::consensus; +use tree_hash::TreeHash; + +const CURRENT_SYNC_COMMITTEE_INDEX: u32 = 54; +const CURRENT_SYNC_COMMITTEE_TREE_DEPTH: u32 = consensus::floorlog2(CURRENT_SYNC_COMMITTEE_INDEX); +const CURRENT_SYNC_COMMITTEE_TREE_INDEX: u32 = consensus::get_subtree_index(CURRENT_SYNC_COMMITTEE_INDEX); + +pub fn verify_light_client_snapshot( + block_root: String, + light_client_snapshot: &LightClientSnapshotWithProof, +) -> bool { + let expected_block_root = format!( + "{:#x}", + light_client_snapshot.beacon_header.tree_hash_root() + ); + + if block_root != expected_block_root { + return false; + } + + let branch = consensus::convert_branch(&light_client_snapshot.current_sync_committee_branch); + merkle_proof::verify_merkle_proof( + light_client_snapshot + .current_sync_committee + .tree_hash_root(), + &branch, + CURRENT_SYNC_COMMITTEE_TREE_DEPTH.try_into().unwrap(), + CURRENT_SYNC_COMMITTEE_TREE_INDEX.try_into().unwrap(), + light_client_snapshot.beacon_header.state_root.0, + ) +} + +pub fn init_contract( + config: &Config, + eth_client_contract: &mut EthClientContract, +) -> Result<(), Box> { + info!(target: "relay", "=== Contract initialization ==="); + + if let NearNetwork::Mainnet = config.near_network_id { + assert!(config.validate_updates.unwrap_or(true), "The updates validation can't be disabled for mainnet"); + assert!(config.verify_bls_signature.unwrap_or(false) || config.trusted_signer_account_id.is_some(), "The client can't be executed in the trustless mode without BLS sigs verification on Mainnet"); + } + + let beacon_rpc_client = BeaconRPCClient::new( + &config.beacon_endpoint, + config.eth_requests_timeout_seconds.unwrap_or(10), + config.eth_requests_timeout_seconds.unwrap_or(10), + ); + let eth1_rpc_client = Eth1RPCClient::new(&config.eth1_endpoint); + + let light_client_update = beacon_rpc_client + .get_finality_light_client_update_with_sync_commity_update() + .expect("Error on fetching finality light client update with sync committee update"); + let finality_slot = light_client_update + .finality_update + .header_update + .beacon_header + .slot; + + let block_id = format!("{}", finality_slot); + + let finalized_header: ExtendedBeaconBlockHeader = + ExtendedBeaconBlockHeader::from(light_client_update.finality_update.header_update); + let finalized_body = beacon_rpc_client + .get_beacon_block_body_for_block_id(&block_id) + .expect("Error on fetching finalized body"); + + let finalized_execution_header: BlockHeader = eth1_rpc_client + .get_block_header_by_number( + finalized_body + .execution_payload() + .expect("No execution payload in finalized body") + .execution_payload + .block_number, + ) + .expect("Error on fetching finalized execution header"); + + let next_sync_committee = light_client_update + .sync_committee_update + .expect("No sync_committee update in light client update") + .next_sync_committee; + + let init_block_root= match config.init_block_root.clone() { + None => beacon_rpc_client + .get_checkpoint_root() + .expect("Fail to get last checkpoint"), + Some(init_block_str) => init_block_str, + }; + + let light_client_snapshot = beacon_rpc_client + .get_bootstrap(init_block_root.clone()) + .expect("Unable to fetch bootstrap state"); + + info!(target: "relay", "init_block_root: {}", init_block_root); + + if BeaconRPCClient::get_period_for_slot(light_client_snapshot.beacon_header.slot) + != BeaconRPCClient::get_period_for_slot(finality_slot) + { + panic!("Period for init_block_root different from current period. Please use snapshot for current period"); + } + + if !verify_light_client_snapshot(init_block_root, &light_client_snapshot) { + return Err("Invalid light client snapshot".into()); + } + + let mut trusted_signature: Option = Option::None; + if let Some(trusted_signature_name) = config.trusted_signer_account_id.clone() { + trusted_signature = Option::Some(trusted_signature_name.parse().expect("Error on parsing trusted signature account")); + } + + eth_client_contract.init_contract( + config.ethereum_network.clone(), + finalized_execution_header, + finalized_header, + light_client_snapshot.current_sync_committee, + next_sync_committee, + config.validate_updates, + config.verify_bls_signature, + config.hashes_gc_threshold, + config.max_submitted_blocks_by_account, + trusted_signature, + ); + + thread::sleep(time::Duration::from_secs(30)); + Ok(()) +} + +#[cfg(test)] +mod tests { + use contract_wrapper::eth_client_contract::EthClientContract; + use tokio::runtime::Runtime; + use contract_wrapper::sandbox_contract_wrapper::SandboxContractWrapper; + use workspaces::{Account, Contract}; + use crate::init_contract::init_contract; + use contract_wrapper::near_network::NearNetwork; + use crate::config_for_tests::ConfigForTests; + + fn create_contract(config_for_test: &ConfigForTests) -> (Account, Contract) { + let rt = Runtime::new().unwrap(); + let worker = rt.block_on(workspaces::sandbox()).unwrap(); + + // create accounts + let owner: Account = worker.root_account().unwrap(); + + let wasm = std::fs::read(&config_for_test.wasm_filepath).unwrap(); + let contract = rt.block_on(owner.deploy(&wasm)).unwrap().unwrap(); + + (owner, contract) + } + + fn get_init_config(config_for_test: &ConfigForTests, eth_client_contract: &EthClientContract) -> crate::config::Config { + return crate::config::Config { + beacon_endpoint: config_for_test.beacon_endpoint.to_string(), + eth1_endpoint: config_for_test.eth1_endpoint.to_string(), + near_endpoint: "https://rpc.testnet.near.org".to_string(), + signer_account_id: "NaN".to_string(), + path_to_signer_secret_key: "NaN".to_string(), + contract_account_id: "NaN".to_string(), + ethereum_network: config_for_test.network_name.clone(), + near_network_id: NearNetwork::Testnet, + output_dir: None, + eth_requests_timeout_seconds: Some(30), + validate_updates: Some(true), + verify_bls_signature: Some(false), + hashes_gc_threshold: Some(51000), + max_submitted_blocks_by_account: Some(8000), + trusted_signer_account_id: Some(eth_client_contract.get_signer_account_id().to_string()), + init_block_root: None, + } + } + + #[test] + #[should_panic(expected = "The updates validation can't be disabled for mainnet")] + fn test_init_contract_on_mainnet_without_validation() { + let config_for_test = ConfigForTests::load_from_toml("config_for_tests.toml".try_into().unwrap()); + + let (relay_account, contract) = create_contract(&config_for_test); + let contract_wrapper = Box::new(SandboxContractWrapper::new(&relay_account, contract)); + + let mut eth_client_contract = EthClientContract::new(contract_wrapper); + let mut init_config = get_init_config(&config_for_test, ð_client_contract); + init_config.validate_updates = Some(false); + init_config.near_network_id = NearNetwork::Mainnet; + + init_contract(&init_config, &mut eth_client_contract).unwrap(); + } + + + #[test] + #[should_panic(expected = "The client can't be executed in the trustless mode without BLS sigs verification on Mainnet")] + fn test_init_contract_on_mainnet_without_trusted_signature() { + let config_for_test = ConfigForTests::load_from_toml("config_for_tests.toml".try_into().unwrap()); + + let (relay_account, contract) = create_contract(&config_for_test); + let contract_wrapper = Box::new(SandboxContractWrapper::new(&relay_account, contract)); + + let mut eth_client_contract = EthClientContract::new(contract_wrapper); + let mut init_config = get_init_config(&config_for_test, ð_client_contract); + init_config.near_network_id = NearNetwork::Mainnet; + init_config.trusted_signer_account_id = None; + + init_contract(&init_config, &mut eth_client_contract).unwrap(); + } +} \ No newline at end of file diff --git a/eth2near/eth2-contract-init/src/lib.rs b/eth2near/eth2-contract-init/src/lib.rs new file mode 100644 index 000000000..4dd8133cc --- /dev/null +++ b/eth2near/eth2-contract-init/src/lib.rs @@ -0,0 +1,3 @@ +pub mod init_contract; +pub mod config; +pub mod config_for_tests; \ No newline at end of file diff --git a/eth2near/eth2-contract-init/src/main.rs b/eth2near/eth2-contract-init/src/main.rs new file mode 100644 index 000000000..e99c14443 --- /dev/null +++ b/eth2near/eth2-contract-init/src/main.rs @@ -0,0 +1,61 @@ +use clap::Parser; +use contract_wrapper::contract_wrapper_trait::ContractWrapper; +use contract_wrapper::eth_client_contract::EthClientContract; +use contract_wrapper::near_contract_wrapper::NearContractWrapper; +use eth2_contract_init::init_contract::init_contract; +use eth2_contract_init::config::Config; +use eth2near_logger::SimpleLogger; +use log::LevelFilter; +use std::string::String; + +#[derive(Parser, Default, Debug)] +#[clap(version, about = "ETH2 contract initialization")] +struct Arguments { + #[clap(short, long)] + /// Path to config file + config: String, + + #[clap(long, default_value_t = String::from("info"))] + /// Log level (trace, debug, info, warn, error) + log_level: String, +} + +fn get_eth_contract_wrapper(config: &Config) -> Box { + Box::new(NearContractWrapper::new( + &config.near_endpoint, + &config.signer_account_id, + &config.path_to_signer_secret_key, + &config.contract_account_id, + )) +} + +fn init_log(args: &Arguments, config: &Config) { + let log_level_filter = match args.log_level.as_str() { + "trace" => LevelFilter::Trace, + "debug" => LevelFilter::Debug, + "warn" => LevelFilter::Warn, + "error" => LevelFilter::Error, + _ => LevelFilter::Info, + }; + + let mut path_to_log_file = "./eth2-contract-init.log".to_string(); + if let Some(out_dir) = config.clone().output_dir { + path_to_log_file = out_dir.clone() + "/" + "eth2-contract-init.log"; + std::fs::create_dir_all(out_dir).expect("Error during creation output dirs in path"); + } + + log::set_boxed_logger(Box::new(SimpleLogger::new(path_to_log_file))) + .map(|()| log::set_max_level(log_level_filter)) + .expect("Error during logger creation"); +} + +fn main() -> Result<(), Box> { + let args = Arguments::parse(); + let config = Config::load_from_toml(args.config.clone().try_into().expect("Incorrect config path")); + init_log(&args, &config); + + let mut eth_client_contract = EthClientContract::new(get_eth_contract_wrapper(&config)); + init_contract(&config, &mut eth_client_contract).expect("Error on contract initialization"); + + Ok(()) +} diff --git a/eth2near/eth2-contract-init/test.sh b/eth2near/eth2-contract-init/test.sh new file mode 100755 index 000000000..59c9e614d --- /dev/null +++ b/eth2near/eth2-contract-init/test.sh @@ -0,0 +1,8 @@ +#!/usr/bin/env bash + +# for running tests localy: +# export ETH1_INFURA_API_KEY= + +cargo build + +RUST_BACKTRACE=1 cargo test --jobs 8 -- --nocapture diff --git a/eth2near/eth2near-block-relay-rs/Cargo.lock b/eth2near/eth2near-block-relay-rs/Cargo.lock index 81e22b499..0c5a72ff6 100644 --- a/eth2near/eth2near-block-relay-rs/Cargo.lock +++ b/eth2near/eth2near-block-relay-rs/Cargo.lock @@ -28,7 +28,7 @@ dependencies = [ "parking_lot", "pin-project-lite 0.2.9", "smallvec", - "tokio 1.21.1", + "tokio 1.21.2", "tokio-util 0.7.4", ] @@ -39,7 +39,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7ea16c295198e958ef31930a6ef37d0fb64e9ca3b6116e6b93a8bdae96ee1000" dependencies = [ "futures-core", - "tokio 1.21.1", + "tokio 1.21.2", ] [[package]] @@ -105,9 +105,9 @@ dependencies = [ [[package]] name = "anyhow" -version = "1.0.64" +version = "1.0.65" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9a8f622bcf6ff3df478e9deba3e03e4e04b300f8e6a139e192c05fa3490afc7" +checksum = "98161a4e3e2184da77bb14f02184cdd111e83bbbcc9979dfee3c44b9a85f5602" [[package]] name = "arrayref" @@ -661,9 +661,9 @@ dependencies = [ [[package]] name = "clap" -version = "3.2.21" +version = "3.2.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ed5341b2301a26ab80be5cbdced622e80ed808483c52e45e3310a877d3b37d7" +checksum = "86447ad904c7fb335a790c9d7fe3d0d971dc523b8ccd1561a520de9a85302750" dependencies = [ "atty", "bitflags", @@ -698,6 +698,16 @@ dependencies = [ "os_str_bytes", ] +[[package]] +name = "codespan-reporting" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3538270d33cc669650c4b093848450d380def10c331d38c768e34cac80576e6e" +dependencies = [ + "termcolor", + "unicode-width", +] + [[package]] name = "compare_fields" version = "0.2.0" @@ -745,7 +755,7 @@ dependencies = [ "reqwest", "serde", "serde_json", - "tokio 1.21.1", + "tokio 1.21.2", "workspaces", ] @@ -812,26 +822,24 @@ dependencies = [ [[package]] name = "crossbeam-epoch" -version = "0.9.10" +version = "0.9.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "045ebe27666471bb549370b4b0b3e51b07f56325befa4284db65fc89c02511b1" +checksum = "f916dfc5d356b0ed9dae65f1db9fc9770aa2851d2662b988ccf4fe3516e86348" dependencies = [ "autocfg", "cfg-if 1.0.0", "crossbeam-utils", "memoffset", - "once_cell", "scopeguard", ] [[package]] name = "crossbeam-utils" -version = "0.8.11" +version = "0.8.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "51887d4adc7b564537b15adcfb307936f8075dfcd5f00dde9a9f1d29383682bc" +checksum = "edbafec5fa1f196ca66527c1b12c2ec4745ca14b50f1ad8f9f6f720b55d11fac" dependencies = [ "cfg-if 1.0.0", - "once_cell", ] [[package]] @@ -913,6 +921,50 @@ dependencies = [ "zeroize", ] +[[package]] +name = "cxx" +version = "1.0.78" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "19f39818dcfc97d45b03953c1292efc4e80954e1583c4aa770bac1383e2310a4" +dependencies = [ + "cc", + "cxxbridge-flags", + "cxxbridge-macro", + "link-cplusplus", +] + +[[package]] +name = "cxx-build" +version = "1.0.78" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3e580d70777c116df50c390d1211993f62d40302881e54d4b79727acb83d0199" +dependencies = [ + "cc", + "codespan-reporting", + "once_cell", + "proc-macro2", + "quote", + "scratch", + "syn", +] + +[[package]] +name = "cxxbridge-flags" +version = "1.0.78" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56a46460b88d1cec95112c8c363f0e2c39afdb237f60583b0b36343bf627ea9c" + +[[package]] +name = "cxxbridge-macro" +version = "1.0.78" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "747b608fecf06b0d72d440f27acc99288207324b793be2c17991839f3d4995ea" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + [[package]] name = "darling" version = "0.13.4" @@ -983,9 +1035,9 @@ dependencies = [ [[package]] name = "digest" -version = "0.10.3" +version = "0.10.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2fb860ca6fafa5552fb6d0e816a69c8e49f0908bf524e30a90d97c85892d506" +checksum = "adfbc57365a37acbd2ebf2b64d7e69bb766e2fea813521ed536f5d0520dcf86c" dependencies = [ "block-buffer 0.10.3", "crypto-common", @@ -1074,9 +1126,9 @@ dependencies = [ [[package]] name = "env_logger" -version = "0.9.0" +version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b2cf0344971ee6c64c31be0d530793fba457d322dfec2810c453d0ef228f9c3" +checksum = "c90bf5f19754d10198ccb95b70664fc925bd1fc090a0fd9a6ebc54acc8cd6272" dependencies = [ "atty", "humantime", @@ -1105,6 +1157,28 @@ dependencies = [ "tree_hash_derive 0.4.0 (git+https://github.com/aurora-is-near/lighthouse.git?rev=b624c3f0d3c5bc9ea46faa14c9cb2d90ee1e1dec)", ] +[[package]] +name = "eth2-contract-init" +version = "0.1.0" +dependencies = [ + "clap", + "contract_wrapper", + "eth-types", + "eth2-utility", + "eth2_to_near_relay", + "eth2near-logger", + "eth_rpc_client", + "log", + "merkle_proof", + "near-primitives 0.14.0", + "near-sdk", + "reqwest", + "serde", + "serde_json", + "toml", + "tree_hash", +] + [[package]] name = "eth2-utility" version = "0.1.0" @@ -1126,7 +1200,7 @@ dependencies = [ "cpufeatures", "lazy_static", "ring", - "sha2 0.10.5", + "sha2 0.10.6", ] [[package]] @@ -1215,9 +1289,12 @@ dependencies = [ "contract_wrapper", "env_logger", "eth-types", + "eth2-contract-init", "eth2-utility", "eth2_hashing", "eth2_ssz", + "eth2near-logger", + "eth_rpc_client", "ethereum-types", "finality-update-verify", "futures", @@ -1237,7 +1314,7 @@ dependencies = [ "serde", "serde_json", "thread", - "tokio 1.21.1", + "tokio 1.21.2", "toml", "tree_hash", "types", @@ -1245,6 +1322,47 @@ dependencies = [ "workspaces", ] +[[package]] +name = "eth2near-logger" +version = "0.1.0" +dependencies = [ + "atomic_refcell", + "log", +] + +[[package]] +name = "eth_rpc_client" +version = "0.1.0" +dependencies = [ + "async-std", + "atomic_refcell", + "bitvec 1.0.1", + "borsh", + "clap", + "contract_wrapper", + "env_logger", + "eth-types", + "eth2_hashing", + "eth2_ssz", + "ethereum-types", + "finality-update-verify", + "futures", + "hex 0.4.3", + "lazy_static", + "log", + "merkle_proof", + "prometheus", + "reqwest", + "serde", + "serde_json", + "thread", + "tokio 1.21.2", + "toml", + "tree_hash", + "types", + "warp", +] + [[package]] name = "ethbloom" version = "0.9.2" @@ -1409,6 +1527,16 @@ dependencies = [ "percent-encoding", ] +[[package]] +name = "fs2" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9564fc758e15025b46aa6643b1b77d047d1a56a1aea6e01002ac0c7026876213" +dependencies = [ + "libc", + "winapi 0.3.9", +] + [[package]] name = "fuchsia-zircon" version = "0.3.3" @@ -1633,7 +1761,7 @@ dependencies = [ "http", "indexmap", "slab", - "tokio 1.21.1", + "tokio 1.21.2", "tokio-util 0.7.4", "tracing", ] @@ -1716,9 +1844,9 @@ checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" [[package]] name = "home" -version = "0.5.3" +version = "0.5.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2456aef2e6b6a9784192ae780c0f15bc57df0e918585282325e8c8ac27737654" +checksum = "747309b4b440c06d57b0b25f2aee03ee9b5e5397d288c60e21fc709bb98a7408" dependencies = [ "winapi 0.3.9", ] @@ -1731,7 +1859,7 @@ checksum = "75f43d41e26995c17e71ee126451dd3941010b0514a81a9d11f3b341debc2399" dependencies = [ "bytes 1.2.1", "fnv", - "itoa 1.0.3", + "itoa 1.0.4", ] [[package]] @@ -1818,10 +1946,10 @@ dependencies = [ "http-body 0.4.5", "httparse", "httpdate 1.0.2", - "itoa 1.0.3", + "itoa 1.0.4", "pin-project-lite 0.2.9", "socket2 0.4.7", - "tokio 1.21.1", + "tokio 1.21.2", "tower-service", "tracing", "want", @@ -1836,24 +1964,34 @@ dependencies = [ "bytes 1.2.1", "hyper 0.14.20", "native-tls", - "tokio 1.21.1", + "tokio 1.21.2", "tokio-native-tls", ] [[package]] name = "iana-time-zone" -version = "0.1.48" +version = "0.1.51" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "237a0714f28b1ee39ccec0770ccb544eb02c9ef2c82bb096230eefcffa6468b0" +checksum = "f5a6ef98976b22b3b7f2f3a806f858cb862044cfa66805aa3ad84cb3d3b785ed" dependencies = [ "android_system_properties", "core-foundation-sys", + "iana-time-zone-haiku", "js-sys", - "once_cell", "wasm-bindgen", "winapi 0.3.9", ] +[[package]] +name = "iana-time-zone-haiku" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fde6edd6cef363e9359ed3c98ba64590ba9eecba2293eb5a723ab32aee8926aa" +dependencies = [ + "cxx", + "cxx-build", +] + [[package]] name = "ident_case" version = "1.0.1" @@ -1979,9 +2117,9 @@ dependencies = [ [[package]] name = "itertools" -version = "0.10.3" +version = "0.10.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a9a9d19fa1e79b6215ff29b9d6880b706147f16e9b1dbb1e4e5947b5b02bc5e3" +checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473" dependencies = [ "either", ] @@ -1994,9 +2132,9 @@ checksum = "b71991ff56294aa922b450139ee08b3bfc70982c6b2c7562771375cf73542dd4" [[package]] name = "itoa" -version = "1.0.3" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c8af84674fe1f223a982c933a0ee1086ac4d4052aa0fb8060c12c6ad838e754" +checksum = "4217ad341ebadf8d8e724e264f13e593e0648f5b3e94b3896a5df283be015ecc" [[package]] name = "js-sys" @@ -2040,9 +2178,9 @@ checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" [[package]] name = "libc" -version = "0.2.132" +version = "0.2.135" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8371e4e5341c3a96db127eb2465ac681ced4c433e01dd0e938adbef26ba93ba5" +checksum = "68783febc7782c6c5cb401fbda4de5a9898be1762314da0bb2c10ced61f18b0c" [[package]] name = "libflate" @@ -2087,6 +2225,15 @@ dependencies = [ "vcpkg", ] +[[package]] +name = "link-cplusplus" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9272ab7b96c9046fbc5bc56c06c117cb639fe2d509df0c421cad82d2915cf369" +dependencies = [ + "cc", +] + [[package]] name = "linked-hash-map" version = "0.5.6" @@ -2095,9 +2242,9 @@ checksum = "0717cef1bc8b636c6e1c1bbdefc09e6322da8a9321966e8928ef80d20f7f770f" [[package]] name = "lock_api" -version = "0.4.8" +version = "0.4.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f80bf5aacaf25cbfc8210d1cfb718f2bf3b11c4c54e5afe36c236853a8ec390" +checksum = "435011366fe56583b16cf956f9df0095b405b82d76425bc8981c0e22e60ec4df" dependencies = [ "autocfg", "scopeguard", @@ -2284,7 +2431,7 @@ dependencies = [ "num-rational", "serde", "serde_json", - "sha2 0.10.5", + "sha2 0.10.6", "smart-default", "tracing", ] @@ -2436,7 +2583,7 @@ dependencies = [ "near-primitives 0.14.0", "serde", "strum", - "tokio 1.21.1", + "tokio 1.21.2", "tracing", ] @@ -2511,7 +2658,7 @@ dependencies = [ "near-account-id 0.13.0", "num-rational", "serde", - "sha2 0.10.5", + "sha2 0.10.6", "strum", ] @@ -2528,7 +2675,7 @@ dependencies = [ "near-account-id 0.14.0", "num-rational", "serde", - "sha2 0.10.5", + "sha2 0.10.6", "strum", ] @@ -2578,14 +2725,15 @@ dependencies = [ [[package]] name = "near-sandbox-utils" -version = "0.5.0" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e4cf1e2b801709b9fe36806a3895ff63e85b37746b562bb8e4d266c7286b94d6" +checksum = "a968f1992f0f48dff8c1e793140e963cf17be67d71401ca3551d09ee1c6b72d5" dependencies = [ "anyhow", "async-process", "binary-install", "chrono", + "fs2", "hex 0.3.2", "home", ] @@ -2669,7 +2817,7 @@ dependencies = [ "near-vm-errors 0.13.0", "ripemd", "serde", - "sha2 0.10.5", + "sha2 0.10.6", "sha3", ] @@ -2759,9 +2907,9 @@ dependencies = [ [[package]] name = "once_cell" -version = "1.14.0" +version = "1.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f7254b99e31cad77da24b08ebf628882739a608578bb1bcdfc1f9c21260d7c0" +checksum = "e82dad04139b71a90c080c8463fe0dc7902db5192d939bd0950f074d014339e1" [[package]] name = "opaque-debug" @@ -2771,9 +2919,9 @@ checksum = "624a8340c38c1b80fd549087862da4ba43e08858af025b236e509b6649fc13d5" [[package]] name = "openssl" -version = "0.10.41" +version = "0.10.42" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "618febf65336490dfcf20b73f885f5651a0c89c64c2d4a8c3662585a70bf5bd0" +checksum = "12fc0523e3bd51a692c8850d075d74dc062ccf251c0110668cbd921917118a13" dependencies = [ "bitflags", "cfg-if 1.0.0", @@ -2803,9 +2951,9 @@ checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" [[package]] name = "openssl-sys" -version = "0.9.75" +version = "0.9.76" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5f9bd0c2710541a3cda73d6f9ac4f1b240de4ae261065d309dbe73d9dceb42f" +checksum = "5230151e44c0f05157effb743e8d517472843121cf9243e8b81393edb5acd9ce" dependencies = [ "autocfg", "cc", @@ -3019,7 +3167,7 @@ checksum = "05e4722c697a58a99d5d06a08c30821d7c082a4632198de1eaa5a6c22ef42373" dependencies = [ "fixed-hash 0.7.0", "impl-codec 0.5.1", - "uint 0.9.3", + "uint 0.9.4", ] [[package]] @@ -3068,9 +3216,9 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.43" +version = "1.0.46" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0a2ca2c61bc9f3d74d2886294ab7b9853abd9c1ad903a3ac7815c58989bb7bab" +checksum = "94e2ef8dbfc347b10c094890f778ee2e36ca9bb4262e86dc99cd217e35f3470b" dependencies = [ "unicode-ident", ] @@ -3107,9 +3255,9 @@ dependencies = [ [[package]] name = "protobuf" -version = "2.27.1" +version = "2.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf7e6d18738ecd0902d30d1ad232c9125985a3422929b16c65517b38adc14f96" +checksum = "106dd99e98437432fed6519dedecfade6a06a73bb7b2a1e019fdd2bee5778d94" [[package]] name = "quick-error" @@ -3165,7 +3313,7 @@ checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" dependencies = [ "libc", "rand_chacha 0.3.1", - "rand_core 0.6.3", + "rand_core 0.6.4", ] [[package]] @@ -3185,7 +3333,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" dependencies = [ "ppv-lite86", - "rand_core 0.6.3", + "rand_core 0.6.4", ] [[package]] @@ -3199,9 +3347,9 @@ dependencies = [ [[package]] name = "rand_core" -version = "0.6.3" +version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d34f1408f55294453790c48b2f1ebbb1c5b4b7563eb1f418bcfcfdbb06ebb4e7" +checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" dependencies = [ "getrandom 0.2.7", ] @@ -3221,7 +3369,7 @@ version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d25bf25ec5ae4a3f1b92f929810509a2f53d7dca2f50b794ff57e3face536c8f" dependencies = [ - "rand_core 0.6.3", + "rand_core 0.6.4", ] [[package]] @@ -3322,9 +3470,9 @@ dependencies = [ [[package]] name = "reqwest" -version = "0.11.11" +version = "0.11.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b75aa69a3f06bbcc66ede33af2af253c6f7a86b1ca0033f60c580a27074fbf92" +checksum = "431949c384f4e2ae07605ccaa56d1d9d2ecdb5cadd4f9577ccfab29f2e5149fc" dependencies = [ "base64 0.13.0", "bytes 1.2.1", @@ -3338,16 +3486,16 @@ dependencies = [ "hyper-tls", "ipnet", "js-sys", - "lazy_static", "log", "mime", "native-tls", + "once_cell", "percent-encoding", "pin-project-lite 0.2.9", "serde", "serde_json", "serde_urlencoded 0.7.1", - "tokio 1.21.1", + "tokio 1.21.2", "tokio-native-tls", "tower-service", "url", @@ -3374,11 +3522,11 @@ dependencies = [ [[package]] name = "ripemd" -version = "0.1.1" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1facec54cb5e0dc08553501fa740091086d0259ad0067e0d4103448e4cb22ed3" +checksum = "bd124222d17ad93a644ed9d011a40f4fb64aa54275c08cc216524a9ea82fb09f" dependencies = [ - "digest 0.10.3", + "digest 0.10.5", ] [[package]] @@ -3500,6 +3648,12 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd" +[[package]] +name = "scratch" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c8132065adcfd6e02db789d9285a0deb2f3fcb04002865ab67d5fb103533898" + [[package]] name = "security-framework" version = "2.7.0" @@ -3525,15 +3679,15 @@ dependencies = [ [[package]] name = "semver" -version = "1.0.13" +version = "1.0.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93f6841e709003d68bb2deee8c343572bf446003ec20a583e76f7b15cebf3711" +checksum = "e25dfac463d778e353db5be2449d1cce89bd6fd23c9f1ea21310ce6e5a1b29c4" [[package]] name = "serde" -version = "1.0.144" +version = "1.0.145" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0f747710de3dcd43b88c9168773254e809d8ddbdf9653b84e2554ab219f17860" +checksum = "728eb6351430bccb993660dfffc5a72f91ccc1295abaa8ce19b27ebe4f75568b" dependencies = [ "serde_derive", ] @@ -3549,9 +3703,9 @@ dependencies = [ [[package]] name = "serde_derive" -version = "1.0.144" +version = "1.0.145" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94ed3a816fb1d101812f83e789f888322c34e291f894f19590dc310963e87a00" +checksum = "81fa1584d3d1bcacd84c277a0dfe21f5b0f6accf4a23d04d4c6d61f1af522b4c" dependencies = [ "proc-macro2", "quote", @@ -3560,11 +3714,11 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.85" +version = "1.0.86" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e55a28e3aaef9d5ce0506d0a14dbba8054ddc7e499ef522dd8b26859ec9d4a44" +checksum = "41feea4228a6f1cd09ec7a3593a682276702cd67b5273544757dae23c096f074" dependencies = [ - "itoa 1.0.3", + "itoa 1.0.4", "ryu", "serde", ] @@ -3588,7 +3742,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" dependencies = [ "form_urlencoded", - "itoa 1.0.3", + "itoa 1.0.4", "ryu", "serde", ] @@ -3642,13 +3796,13 @@ dependencies = [ [[package]] name = "sha1" -version = "0.10.4" +version = "0.10.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "006769ba83e921b3085caa8334186b00cf92b4cb1a6cf4632fbccc8eff5c7549" +checksum = "f04293dc80c3993519f2d7f6f511707ee7094fe0c6d3406feb330cdb3540eba3" dependencies = [ "cfg-if 1.0.0", "cpufeatures", - "digest 0.10.3", + "digest 0.10.5", ] [[package]] @@ -3666,22 +3820,22 @@ dependencies = [ [[package]] name = "sha2" -version = "0.10.5" +version = "0.10.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf9db03534dff993187064c4e0c05a5708d2a9728ace9a8959b77bedf415dac5" +checksum = "82e6b795fe2e3b1e845bafcb27aa35405c4d47cdfc92af5fc8d3002f76cebdc0" dependencies = [ "cfg-if 1.0.0", "cpufeatures", - "digest 0.10.3", + "digest 0.10.5", ] [[package]] name = "sha3" -version = "0.10.4" +version = "0.10.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eaedf34ed289ea47c2b741bb72e5357a209512d67bcd4bda44359e5bf0470f56" +checksum = "e2904bea16a1ae962b483322a1c7b81d976029203aea1f461e51cd7705db7ba9" dependencies = [ - "digest 0.10.3", + "digest 0.10.5", "keccak", ] @@ -3706,9 +3860,9 @@ dependencies = [ [[package]] name = "signature" -version = "1.6.1" +version = "1.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e90531723b08e4d6d71b791108faf51f03e1b4a7784f96b2b87f852ebc247228" +checksum = "74233d3b3b2f6d4b006dc19dee745e73e2a6bfb6f93607cd3b02bd5b00797d7c" [[package]] name = "siphasher" @@ -3733,9 +3887,9 @@ checksum = "8347046d4ebd943127157b94d63abb990fcf729dc4e9978927fdf4ac3c998d06" [[package]] name = "smallvec" -version = "1.9.0" +version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2fd0db749597d91ff862fd1d55ea87f7855a744a8425a64695b6fca237d1dad1" +checksum = "a507befe795404456341dfab10cef66ead4c041f62b8b11bbb92bffe5d0953e0" [[package]] name = "smart-default" @@ -3840,9 +3994,9 @@ dependencies = [ [[package]] name = "syn" -version = "1.0.99" +version = "1.0.102" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "58dbef6ec655055e20b86b15a8cc6d439cca19b667537ac6a1369572d151ab13" +checksum = "3fcd952facd492f9be3ef0d0b7032a6e442ee9b361d4acc2b1d0c4aaa5f613a1" dependencies = [ "proc-macro2", "quote", @@ -3912,24 +4066,24 @@ dependencies = [ [[package]] name = "textwrap" -version = "0.15.0" +version = "0.15.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1141d4d61095b28419e22cb0bbf02755f5e54e0526f97f1e3d1d160e60885fb" +checksum = "949517c0cf1bf4ee812e2e07e08ab448e3ae0d23472aee8a06c985f0c8815b16" [[package]] name = "thiserror" -version = "1.0.34" +version = "1.0.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c1b05ca9d106ba7d2e31a9dab4a64e7be2cce415321966ea3132c49a656e252" +checksum = "10deb33631e3c9018b9baf9dcbbc4f737320d2b576bac10f6aefa048fa407e3e" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.34" +version = "1.0.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8f2591983642de85c921015f3f070c665a197ed69e417af436115e3a1407487" +checksum = "982d17546b47146b28f7c22e3d08465f6b8903d0ea13c1660d9d84a6e7adcdbb" dependencies = [ "proc-macro2", "quote", @@ -4005,9 +4159,9 @@ dependencies = [ [[package]] name = "tokio" -version = "1.21.1" +version = "1.21.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0020c875007ad96677dcc890298f4b942882c5d4eb7cc8f439fc3bf813dc9c95" +checksum = "a9e03c497dc955702ba729190dc4aac6f2a0ce97f913e5b1b5912fc5039d9099" dependencies = [ "autocfg", "bytes 1.2.1", @@ -4015,7 +4169,6 @@ dependencies = [ "memchr", "mio 0.8.4", "num_cpus", - "once_cell", "parking_lot", "pin-project-lite 0.2.9", "signal-hook-registry", @@ -4042,7 +4195,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f7d995660bd2b7f8c1568414c1126076c13fbb725c40112dc0120b78eb9b717b" dependencies = [ "native-tls", - "tokio 1.21.1", + "tokio 1.21.2", ] [[package]] @@ -4053,7 +4206,7 @@ checksum = "7f57eb36ecbe0fc510036adff84824dd3c24bb781e21bfa67b69d556aa85214f" dependencies = [ "pin-project 1.0.12", "rand 0.8.5", - "tokio 1.21.1", + "tokio 1.21.2", ] [[package]] @@ -4093,7 +4246,7 @@ dependencies = [ "futures-core", "futures-sink", "pin-project-lite 0.2.9", - "tokio 1.21.1", + "tokio 1.21.2", "tracing", ] @@ -4114,9 +4267,9 @@ checksum = "b6bc1c9ce2b5135ac7f93c72918fc37feb872bdc6a5533a8b85eb4b86bfdae52" [[package]] name = "tracing" -version = "0.1.36" +version = "0.1.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2fce9567bd60a67d08a16488756721ba392f24f29006402881e43b19aac64307" +checksum = "8ce8c33a8d48bd45d624a6e523445fd21ec13d3653cd51f681abf67418f54eb8" dependencies = [ "cfg-if 1.0.0", "log", @@ -4127,9 +4280,9 @@ dependencies = [ [[package]] name = "tracing-attributes" -version = "0.1.22" +version = "0.1.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11c75893af559bc8e10716548bdef5cb2b983f8e637db9d0e15126b61b484ee2" +checksum = "4017f8f45139870ca7e672686113917c71c7a6e02d4924eda67186083c03081a" dependencies = [ "proc-macro2", "quote", @@ -4138,9 +4291,9 @@ dependencies = [ [[package]] name = "tracing-core" -version = "0.1.29" +version = "0.1.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5aeea4303076558a00714b823f9ad67d58a3bbda1df83d8827d21193156e22f7" +checksum = "24eb03ba0eab1fd845050058ce5e616558e8f8d8fca633e6b163fe25c797213a" dependencies = [ "once_cell", ] @@ -4284,9 +4437,9 @@ dependencies = [ [[package]] name = "uint" -version = "0.9.3" +version = "0.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "12f03af7ccf01dd611cc450a0d10dbc9b745770d096473e2faf0ca6e2d66d1e0" +checksum = "a45526d29728d135c2900b0d30573fe3ee79fceb12ef534c7bb30e810a91b601" dependencies = [ "byteorder", "crunchy", @@ -4311,24 +4464,30 @@ checksum = "099b7128301d285f79ddd55b9a83d5e6b9e97c92e0ea0daebee7263e932de992" [[package]] name = "unicode-ident" -version = "1.0.3" +version = "1.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4f5b37a154999a8f3f98cc23a628d850e154479cd94decf3414696e12e31aaf" +checksum = "6ceab39d59e4c9499d4e5a8ee0e2735b891bb7308ac83dfb4e80cad195c9f6f3" [[package]] name = "unicode-normalization" -version = "0.1.21" +version = "0.1.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "854cbdc4f7bc6ae19c820d44abdc3277ac3e1b2b93db20a636825d9322fb60e6" +checksum = "5c5713f0fc4b5db668a2ac63cdb7bb4469d8c9fed047b1d0292cc7b0ce2ba921" dependencies = [ "tinyvec", ] +[[package]] +name = "unicode-width" +version = "0.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c0edd1e5b14653f783770bce4a4dabb4a5108a5370a5f5d8cfe8710c361f6c8b" + [[package]] name = "unicode-xid" -version = "0.2.3" +version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "957e51f3646910546462e67d5f7599b9e4fb8acdd304b087a6494730f9eebf04" +checksum = "f962df74c8c05a667b5ee8bcf162993134c104e96440b663c8daa176dc772d8c" [[package]] name = "untrusted" @@ -4682,7 +4841,7 @@ dependencies = [ "serde", "serde_json", "thiserror", - "tokio 1.21.1", + "tokio 1.21.2", "tokio-retry", "tracing", "url", diff --git a/eth2near/eth2near-block-relay-rs/Cargo.toml b/eth2near/eth2near-block-relay-rs/Cargo.toml index 6d602cffa..90081cd83 100644 --- a/eth2near/eth2near-block-relay-rs/Cargo.toml +++ b/eth2near/eth2near-block-relay-rs/Cargo.toml @@ -9,7 +9,6 @@ tree_hash = { git = "https://github.com/aurora-is-near/lighthouse.git", rev = " merkle_proof = { git = "https://github.com/aurora-is-near/lighthouse.git", rev = "b624c3f0d3c5bc9ea46faa14c9cb2d90ee1e1dec" } eth2_hashing = { git = "https://github.com/aurora-is-near/lighthouse.git", rev = "b624c3f0d3c5bc9ea46faa14c9cb2d90ee1e1dec" } eth2_ssz = { git = "https://github.com/aurora-is-near/lighthouse.git", rev = "b624c3f0d3c5bc9ea46faa14c9cb2d90ee1e1dec" } - eth-types = { path = "../../contracts/near/eth-types/", features = ["eip1559"]} eth2-utility = { path = "../../contracts/near/eth2-utility" } @@ -21,6 +20,7 @@ serde_json = "1.0.74" serde = { version = "1.0", features = ["derive"] } ethereum-types = "0.9.2" reqwest = { version = "0.11", features = ["blocking"] } +eth_rpc_client = { path = "../eth_rpc_client" } clap = { version = "3.1.6", features = ["derive"] } tokio = { version = "1.1", features = ["macros", "rt", "time"] } env_logger = "0.9.0" @@ -32,6 +32,7 @@ hex = "*" toml = "0.5.9" atomic_refcell = "0.1.8" bitvec = "*" +eth2near-logger = { path = "../logger" } primitive-types = "0.7.3" near-jsonrpc-client = "=0.4.0-beta.0" @@ -47,6 +48,7 @@ thread = "*" [dev-dependencies] workspaces = "0.5.0" +eth2-contract-init = { path = "../eth2-contract-init" } [patch] [patch.crates-io] diff --git a/eth2near/eth2near-block-relay-rs/config_for_tests.toml b/eth2near/eth2near-block-relay-rs/config_for_tests.toml index 97b992db7..a8e669125 100644 --- a/eth2near/eth2near-block-relay-rs/config_for_tests.toml +++ b/eth2near/eth2near-block-relay-rs/config_for_tests.toml @@ -6,9 +6,7 @@ path_to_execution_blocks_headers = "./data/goerli_testdata/execution_block_heade path_to_light_client_updates = "./data/goerli_testdata/light_client_updates_goerli_slots_3885697_3886176.json" path_to_attested_state = "./data/goerli_testdata/beacon_state_goerli_slot_3885731.json" path_to_finality_state = "./data/goerli_testdata/beacon_state_goerli_slot_3885664.json" -path_to_attested_state_for_period = "./data/goerli_testdata/beacon_state_goerli_slot_3887699.json" -path_to_finality_state_for_period = "./data/goerli_testdata/beacon_state_goerli_slot_3887616.json" -network_name = "goerli" +network_name = "Goerli" first_slot = 3885632 slot_without_block = 3885649 right_bound_in_slot_search = 3885800 @@ -16,8 +14,4 @@ left_empty_slot = 3885722 right_empty_slot = 3885723 slot_without_block_2 = 3885743 wasm_filepath = "../../contracts/near/res/eth2_client.wasm" -finalized_slot_before_new_period = 3891168 -eth1_number = 0x73cb47 -path_to_block = "./data/goerli_testdata/beacon_block_goerli_slot_3885632.json" -path_to_header = "./data/goerli_testdata/beacon_header_goerli_slot_3885632.json" -path_to_light_client_update = "./data/goerli_testdata/beacon_light_client_update_goerli_period_474.json" \ No newline at end of file +finalized_slot_before_new_period = 3891168 \ No newline at end of file diff --git a/eth2near/eth2near-block-relay-rs/src/config.rs b/eth2near/eth2near-block-relay-rs/src/config.rs index 3fab1bd5a..96fc43516 100644 --- a/eth2near/eth2near-block-relay-rs/src/config.rs +++ b/eth2near/eth2near-block-relay-rs/src/config.rs @@ -1,4 +1,7 @@ -use crate::near_rpc_client::NearRPCClient; +use crate::contract_type::ContractType; +use contract_wrapper::eth_network::EthNetwork; +use contract_wrapper::near_rpc_client::NearRPCClient; +use contract_wrapper::near_network::NearNetwork; use reqwest::Url; use serde::Deserialize; use std::io::Read; @@ -27,11 +30,11 @@ pub struct Config { // Account id for eth client contract on NEAR pub contract_account_id: String, - // The Ethereum network name (mainnet, kiln, ropsten, goerli) - pub ethereum_network: String, + // The Ethereum network name (Mainnet, Kiln, Ropsten, Goerli) + pub ethereum_network: EthNetwork, // Contract type (near, dao, file) - pub contract_type: String, + pub contract_type: ContractType, // Period of submission light client updates. Once in N epochs. pub interval_between_light_client_updates_submission_in_epochs: u64, @@ -40,7 +43,7 @@ pub struct Config { pub max_blocks_for_finalization: u64, // NEAR network name (mainnet, testnet) - pub near_network_id: String, + pub near_network_id: NearNetwork, // Port for Prometheus pub prometheus_metrics_port: Option, @@ -83,46 +86,45 @@ pub struct Config { impl Config { pub fn load_from_toml(path: PathBuf) -> Self { - let mut config = std::fs::File::open(path).unwrap(); + let mut config = std::fs::File::open(path).expect("Error on parsing path to config"); let mut content = String::new(); - config.read_to_string(&mut content).unwrap(); - let config = toml::from_str(content.as_str()).unwrap(); + config.read_to_string(&mut content).expect("Error on reading config"); + let config = toml::from_str(content.as_str()).expect("Error on config parsing"); Self::check_urls(&config); Self::check_account_id(&config); - Self::check_network_types(&config); config } fn check_urls(&self) { // check `beacon_endpoint` - Url::parse(&self.beacon_endpoint).unwrap(); + Url::parse(&self.beacon_endpoint).expect("Error on beacon endpoint URL parsing"); // check `eth1_endpoint` - Url::parse(&self.eth1_endpoint).unwrap(); + Url::parse(&self.eth1_endpoint).expect("Error on ETH1 endpoint URL parsing"); // check `near_endpoint` - Url::parse(&self.near_endpoint).unwrap(); + Url::parse(&self.near_endpoint).expect("Error on NEAR endpoint URL parsing"); } fn check_account_id(&self) { let near_rpc_client = NearRPCClient::new(&self.near_endpoint); // check `signer_account_id` - let _signer_account_id: near_sdk::AccountId = self.signer_account_id.parse().unwrap(); + let _signer_account_id: near_sdk::AccountId = self.signer_account_id.parse().expect("Error on signer account ID parsing"); if !near_rpc_client .check_account_exists(&self.signer_account_id) - .unwrap() + .expect("Error on checking signer account ID existence") { panic!("Signer account id doesn't exist on NEAR network"); } // check `contract_account_id` - let _contract_account_id: near_sdk::AccountId = self.contract_account_id.parse().unwrap(); + let _contract_account_id: near_sdk::AccountId = self.contract_account_id.parse().expect("Error on contract account ID parsing"); if !near_rpc_client .check_account_exists(&self.contract_account_id) - .unwrap() + .expect("Error on checking contract account ID existence") { panic!("Contract account id doesn't exist on NEAR network"); } @@ -130,37 +132,13 @@ impl Config { // check `dao_contract_account_id` if let Some(dao_contract_account_id) = self.dao_contract_account_id.clone() { let _dao_contract_account_id: near_sdk::AccountId = - dao_contract_account_id.parse().unwrap(); + dao_contract_account_id.parse().expect("Error on DAO contract account ID parsing"); if !near_rpc_client .check_account_exists(&dao_contract_account_id) - .unwrap() + .expect("Error on checking DAO account ID existence") { panic!("DAO account id doesn't exist on NEAR network"); } } } - - fn check_network_types(&self) { - // check `network` - if !(self.ethereum_network == "mainnet" - || self.ethereum_network == "kiln" - || self.ethereum_network == "ropsten" - || self.ethereum_network == "goerli") - { - panic!("Unknown ethereum network {}", self.ethereum_network); - } - - // check `contract_type` - if !(self.contract_type == "near" - || self.contract_type == "dao" - || self.contract_type == "file") - { - panic!("Unknown contract type {}", self.contract_type); - } - - // check `near_network_id` - if !(self.near_network_id == "mainnet" || self.near_network_id == "testnet") { - panic!("Unknown near network id {}", self.near_network_id); - } - } } diff --git a/eth2near/eth2near-block-relay-rs/src/config_for_tests.rs b/eth2near/eth2near-block-relay-rs/src/config_for_tests.rs index 3f2977088..9820d9c9d 100644 --- a/eth2near/eth2near-block-relay-rs/src/config_for_tests.rs +++ b/eth2near/eth2near-block-relay-rs/src/config_for_tests.rs @@ -1,7 +1,8 @@ use serde::Deserialize; -use std::env; use std::io::Read; use std::path::PathBuf; +use contract_wrapper::eth_network::EthNetwork; +use std::env; #[derive(Deserialize, Debug, Clone)] pub struct ConfigForTests { @@ -13,7 +14,7 @@ pub struct ConfigForTests { pub path_to_light_client_updates: String, pub path_to_attested_state: String, pub path_to_finality_state: String, - pub network_name: String, + pub network_name: EthNetwork, pub first_slot: u64, pub slot_without_block: u64, pub wasm_filepath: String, @@ -22,12 +23,6 @@ pub struct ConfigForTests { pub right_empty_slot: u64, pub finalized_slot_before_new_period: u64, pub slot_without_block_2: u64, - pub path_to_attested_state_for_period: String, - pub path_to_finality_state_for_period: String, - pub eth1_number: u64, - pub path_to_block: String, - pub path_to_header: String, - pub path_to_light_client_update: String, } impl ConfigForTests { diff --git a/eth2near/eth2near-block-relay-rs/src/contract_type.rs b/eth2near/eth2near-block-relay-rs/src/contract_type.rs new file mode 100644 index 000000000..443df6922 --- /dev/null +++ b/eth2near/eth2near-block-relay-rs/src/contract_type.rs @@ -0,0 +1,55 @@ +use std::error::Error; +use std::fmt; +use std::fmt::{Display, Formatter}; +use std::str::FromStr; +use serde::Deserialize; + +#[derive(Debug, Clone, Deserialize)] +pub enum ContractType { + Near, + Dao, + File, +} + +#[derive(Debug, Clone, Deserialize)] +pub struct IncorrectContractType; + +impl Display for IncorrectContractType { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + write!( + f, + "Unknown contract type. Possible contract types: 'Near', 'Dao', 'File'" + ) + } +} + +impl Error for IncorrectContractType {} + +impl Display for ContractType { + fn fmt(&self, f: &mut Formatter<'_>) -> fmt::Result { + write!(f, "{}", self.as_str()) + } +} + +impl ContractType { + pub fn as_str(&self) -> &str { + match self { + ContractType::Near => "NEAR", + ContractType::Dao => "DAO", + ContractType::File => "File", + } + } +} + +impl FromStr for ContractType { + type Err = IncorrectContractType; + + fn from_str(s: &str) -> Result { + match s.to_lowercase().as_str() { + "near" => Ok(ContractType::Near), + "dao" => Ok(ContractType::Dao), + "file" => Ok(ContractType::File), + _ => Err(IncorrectContractType), + } + } +} diff --git a/eth2near/eth2near-block-relay-rs/src/eth2near_relay.rs b/eth2near/eth2near-block-relay-rs/src/eth2near_relay.rs index 1c4bfb97e..5c6306abf 100644 --- a/eth2near/eth2near-block-relay-rs/src/eth2near_relay.rs +++ b/eth2near/eth2near-block-relay-rs/src/eth2near_relay.rs @@ -1,9 +1,10 @@ -use crate::beacon_rpc_client::BeaconRPCClient; +use std::cmp; +use eth_rpc_client::beacon_rpc_client::BeaconRPCClient; use crate::config::Config; -use crate::eth1_rpc_client::Eth1RPCClient; -use crate::hand_made_finality_light_client_update::HandMadeFinalityLightClientUpdate; +use eth_rpc_client::eth1_rpc_client::Eth1RPCClient; +use eth_rpc_client::hand_made_finality_light_client_update::HandMadeFinalityLightClientUpdate; use crate::last_slot_searcher::LastSlotSearcher; -use crate::near_rpc_client::NearRPCClient; +use contract_wrapper::near_rpc_client::NearRPCClient; use crate::prometheus_metrics; use crate::prometheus_metrics::{ CHAIN_EXECUTION_BLOCK_HEIGHT_ON_ETH, CHAIN_EXECUTION_BLOCK_HEIGHT_ON_NEAR, @@ -11,20 +12,18 @@ use crate::prometheus_metrics::{ FAILS_ON_HEADERS_SUBMISSION, FAILS_ON_UPDATES_SUBMISSION, LAST_ETH_SLOT, LAST_ETH_SLOT_ON_NEAR, LAST_FINALIZED_ETH_SLOT, LAST_FINALIZED_ETH_SLOT_ON_NEAR, }; -use crate::relay_errors::NoBlockForSlotError; -use bitvec::macros::internal::funty::Fundamental; +use eth_rpc_client::errors::NoBlockForSlotError; use contract_wrapper::eth_client_contract_trait::EthClientContractTrait; use eth_types::eth2::LightClientUpdate; use eth_types::BlockHeader; use log::{debug, info, trace, warn}; use near_primitives::views::FinalExecutionStatus; -use std::cmp; -use std::cmp::{max, min}; use std::error::Error; use std::thread; use std::thread::sleep; use std::time::Duration; use std::vec::Vec; +use bitvec::macros::internal::funty::Fundamental; use types::Slot; const ONE_EPOCH_IN_SLOTS: u64 = 32; @@ -115,7 +114,7 @@ impl Eth2NearRelay { config.state_requests_timeout_seconds, ); let next_light_client_update = - Self::get_light_client_update_from_file(config, &beacon_rpc_client).unwrap(); + Self::get_light_client_update_from_file(config, &beacon_rpc_client).expect("Error on parsing light client update"); let max_submitted_blocks_by_account = eth_contract .get_max_submitted_blocks_by_account() @@ -149,7 +148,7 @@ impl Eth2NearRelay { eth2near_relay .eth_client_contract .register_submitter() - .unwrap(); + .expect("Error on registering the submitter"); } if let Some(port) = config.prometheus_metrics_port { @@ -168,7 +167,7 @@ impl Eth2NearRelay { .beacon_rpc_client .get_block_number_for_slot(Slot::new(last_eth2_slot)) { - CHAIN_EXECUTION_BLOCK_HEIGHT_ON_ETH.inc_by(max( + CHAIN_EXECUTION_BLOCK_HEIGHT_ON_ETH.inc_by(cmp::max( 0, last_block_number as i64 - CHAIN_EXECUTION_BLOCK_HEIGHT_ON_ETH.get(), )); @@ -191,7 +190,7 @@ impl Eth2NearRelay { &self.eth_client_contract, )?; - LAST_ETH_SLOT_ON_NEAR.inc_by(max( + LAST_ETH_SLOT_ON_NEAR.inc_by(cmp::max( 0, last_eth2_slot_on_near as i64 - LAST_ETH_SLOT_ON_NEAR.get(), )); @@ -200,7 +199,7 @@ impl Eth2NearRelay { .beacon_rpc_client .get_block_number_for_slot(Slot::new(last_eth2_slot_on_near)) { - CHAIN_EXECUTION_BLOCK_HEIGHT_ON_NEAR.inc_by(max( + CHAIN_EXECUTION_BLOCK_HEIGHT_ON_NEAR.inc_by(cmp::max( 0, last_block_number as i64 - CHAIN_EXECUTION_BLOCK_HEIGHT_ON_NEAR.get(), )); @@ -212,7 +211,7 @@ impl Eth2NearRelay { fn get_last_finalized_slot_on_near(&self) -> Result> { let last_finalized_slot_on_near = self.eth_client_contract.get_finalized_beacon_block_slot()?; - LAST_FINALIZED_ETH_SLOT_ON_NEAR.inc_by(max( + LAST_FINALIZED_ETH_SLOT_ON_NEAR.inc_by(cmp::max( 0, last_finalized_slot_on_near as i64 - LAST_FINALIZED_ETH_SLOT_ON_NEAR.get(), )); @@ -221,7 +220,7 @@ impl Eth2NearRelay { .beacon_rpc_client .get_block_number_for_slot(Slot::new(last_finalized_slot_on_near)) { - CHAIN_FINALIZED_EXECUTION_BLOCK_HEIGHT_ON_NEAR.inc_by(max( + CHAIN_FINALIZED_EXECUTION_BLOCK_HEIGHT_ON_NEAR.inc_by(cmp::max( 0, last_block_number as i64 - CHAIN_FINALIZED_EXECUTION_BLOCK_HEIGHT_ON_NEAR.get(), )); @@ -236,7 +235,7 @@ impl Eth2NearRelay { .get_last_finalized_slot_number()? .as_u64(); - LAST_FINALIZED_ETH_SLOT.inc_by(max( + LAST_FINALIZED_ETH_SLOT.inc_by(cmp::max( 0, last_finalized_slot_on_eth as i64 - LAST_FINALIZED_ETH_SLOT.get(), )); @@ -245,7 +244,7 @@ impl Eth2NearRelay { .beacon_rpc_client .get_block_number_for_slot(Slot::new(last_finalized_slot_on_eth)) { - CHAIN_FINALIZED_EXECUTION_BLOCK_HEIGHT_ON_ETH.inc_by(max( + CHAIN_FINALIZED_EXECUTION_BLOCK_HEIGHT_ON_ETH.inc_by(cmp::max( 0, last_block_number as i64 - CHAIN_FINALIZED_EXECUTION_BLOCK_HEIGHT_ON_ETH.get(), )); @@ -334,7 +333,7 @@ impl Eth2NearRelay { beacon_rpc_client, &path_to_attested_state, &path_to_finality_state, - ).unwrap(), + ).expect("Error on getting light client update from file"), ); } None => { @@ -342,7 +341,7 @@ impl Eth2NearRelay { HandMadeFinalityLightClientUpdate::get_finality_light_client_update_from_file( beacon_rpc_client, &path_to_attested_state, - ).unwrap(), + ).expect("Error on getting light client update from file"), ); } } @@ -373,7 +372,7 @@ impl Eth2NearRelay { trace!(target: "relay", "remaining headers number {}", remaining_headers); - let max_submitted_headers = min(self.headers_batch_size, remaining_headers); + let max_submitted_headers = cmp::min(self.headers_batch_size, remaining_headers); while headers.len() < max_submitted_headers as usize && current_slot <= last_eth2_slot_on_eth_chain @@ -716,11 +715,11 @@ impl Eth2NearRelay { #[cfg(test)] mod tests { - use crate::beacon_rpc_client::BeaconRPCClient; + use eth_rpc_client::beacon_rpc_client::BeaconRPCClient; use crate::config_for_tests::ConfigForTests; use crate::eth2near_relay::{Eth2NearRelay, ONE_EPOCH_IN_SLOTS}; - use crate::hand_made_finality_light_client_update::HandMadeFinalityLightClientUpdate; - use crate::relay_errors::NoBlockForSlotError; + use eth_rpc_client::hand_made_finality_light_client_update::HandMadeFinalityLightClientUpdate; + use eth_rpc_client::errors::NoBlockForSlotError; use crate::test_utils::{get_relay, get_relay_from_slot, get_relay_with_update_from_file}; use eth_types::eth2::LightClientUpdate; use eth_types::BlockHeader; diff --git a/eth2near/eth2near-block-relay-rs/src/init_contract.rs b/eth2near/eth2near-block-relay-rs/src/init_contract.rs deleted file mode 100644 index 6063a438d..000000000 --- a/eth2near/eth2near-block-relay-rs/src/init_contract.rs +++ /dev/null @@ -1,130 +0,0 @@ -use crate::beacon_rpc_client::BeaconRPCClient; -use crate::config::Config; -use crate::eth1_rpc_client::Eth1RPCClient; -use crate::light_client_snapshot_with_proof::LightClientSnapshotWithProof; -use contract_wrapper::eth_client_contract::EthClientContract; -use eth2_utility::consensus; -use eth_types::eth2::ExtendedBeaconBlockHeader; -use eth_types::BlockHeader; -use log::info; -use std::{thread, time}; -use tree_hash::TreeHash; - -const CURRENT_SYNC_COMMITTEE_INDEX: u32 = 54; -const CURRENT_SYNC_COMMITTEE_TREE_DEPTH: u32 = consensus::floorlog2(CURRENT_SYNC_COMMITTEE_INDEX); -const CURRENT_SYNC_COMMITTEE_TREE_INDEX: u32 = - consensus::get_subtree_index(CURRENT_SYNC_COMMITTEE_INDEX); - -pub fn verify_light_client_snapshot( - block_root: String, - light_client_snapshot: &LightClientSnapshotWithProof, -) -> bool { - let expected_block_root = format!( - "{:#x}", - light_client_snapshot.beacon_header.tree_hash_root() - ); - - if block_root != expected_block_root { - return false; - } - - let branch = consensus::convert_branch(&light_client_snapshot.current_sync_committee_branch); - merkle_proof::verify_merkle_proof( - light_client_snapshot - .current_sync_committee - .tree_hash_root(), - &branch, - CURRENT_SYNC_COMMITTEE_TREE_DEPTH.try_into().unwrap(), - CURRENT_SYNC_COMMITTEE_TREE_INDEX.try_into().unwrap(), - light_client_snapshot.beacon_header.state_root.0, - ) -} - -pub fn init_contract( - config: &Config, - eth_client_contract: &mut EthClientContract, - mut init_block_root: String, -) -> Result<(), Box> { - info!(target: "relay", "=== Contract initialization ==="); - - let beacon_rpc_client = BeaconRPCClient::new( - &config.beacon_endpoint, - config.eth_requests_timeout_seconds, - config.state_requests_timeout_seconds, - ); - - let eth1_rpc_client = Eth1RPCClient::new(&config.eth1_endpoint); - - let light_client_update = beacon_rpc_client - .get_finality_light_client_update_with_sync_commity_update() - .unwrap(); - let finality_slot = light_client_update - .finality_update - .header_update - .beacon_header - .slot; - - let block_id = format!("{}", finality_slot); - let finalized_header: ExtendedBeaconBlockHeader = - ExtendedBeaconBlockHeader::from(light_client_update.finality_update.header_update); - let finalized_body = beacon_rpc_client - .get_beacon_block_body_for_block_id(&block_id) - .unwrap(); - - let finalized_execution_header: BlockHeader = eth1_rpc_client - .get_block_header_by_number( - finalized_body - .execution_payload() - .unwrap() - .execution_payload - .block_number, - ) - .unwrap(); - let next_sync_committee = light_client_update - .sync_committee_update - .unwrap() - .next_sync_committee; - - if init_block_root.is_empty() { - init_block_root = beacon_rpc_client - .get_checkpoint_root() - .expect("Fail to get last checkpoint"); - } - - let light_client_snapshot = beacon_rpc_client - .get_bootstrap(init_block_root.clone()) - .expect("Unable to fetch bootstrap state"); - - info!(target: "relay", "init_block_root: {}", init_block_root); - - if BeaconRPCClient::get_period_for_slot(light_client_snapshot.beacon_header.slot) - != BeaconRPCClient::get_period_for_slot(finality_slot) - { - panic!("Period for init_block_root different from current period. Please use snapshot for current period"); - } - - if !verify_light_client_snapshot(init_block_root, &light_client_snapshot) { - return Err("Invalid light client snapshot".into()); - } - - eth_client_contract.init_contract( - config.ethereum_network.to_string(), - finalized_execution_header, - finalized_header, - light_client_snapshot.current_sync_committee, - next_sync_committee, - config.hashes_gc_threshold, - config.max_submitted_blocks_by_account, - Some( - config - .dao_contract_account_id - .as_ref() - .unwrap_or(&config.signer_account_id) - .parse() - .unwrap(), - ), - ); - - thread::sleep(time::Duration::from_secs(30)); - Ok(()) -} diff --git a/eth2near/eth2near-block-relay-rs/src/last_slot_searcher.rs b/eth2near/eth2near-block-relay-rs/src/last_slot_searcher.rs index 829a5997a..71d09947c 100644 --- a/eth2near/eth2near-block-relay-rs/src/last_slot_searcher.rs +++ b/eth2near/eth2near-block-relay-rs/src/last_slot_searcher.rs @@ -1,5 +1,5 @@ -use crate::beacon_rpc_client::BeaconRPCClient; -use crate::relay_errors::{ExecutionPayloadError, NoBlockForSlotError}; +use eth_rpc_client::beacon_rpc_client::BeaconRPCClient; +use eth_rpc_client::errors::{ExecutionPayloadError, NoBlockForSlotError}; use contract_wrapper::eth_client_contract_trait::EthClientContractTrait; use eth_types::H256; use log::{info, trace}; @@ -414,9 +414,9 @@ impl LastSlotSearcher { #[cfg(test)] mod tests { - use crate::beacon_rpc_client::BeaconRPCClient; + use eth_rpc_client::beacon_rpc_client::BeaconRPCClient; use crate::config_for_tests::ConfigForTests; - use crate::eth1_rpc_client::Eth1RPCClient; + use eth_rpc_client::eth1_rpc_client::Eth1RPCClient; use crate::last_slot_searcher::LastSlotSearcher; use crate::test_utils::get_client_contract; use contract_wrapper::eth_client_contract_trait::EthClientContractTrait; diff --git a/eth2near/eth2near-block-relay-rs/src/lib.rs b/eth2near/eth2near-block-relay-rs/src/lib.rs index 4bf4bb5a9..e3f3ba333 100644 --- a/eth2near/eth2near-block-relay-rs/src/lib.rs +++ b/eth2near/eth2near-block-relay-rs/src/lib.rs @@ -1,17 +1,8 @@ -pub mod beacon_block_body_merkle_tree; -pub mod beacon_rpc_client; pub mod config; -pub mod eth1_rpc_client; +pub mod contract_type; pub mod eth2near_relay; -pub mod execution_block_proof; -pub mod hand_made_finality_light_client_update; -pub mod init_contract; pub mod last_slot_searcher; -pub mod light_client_snapshot_with_proof; -pub mod logger; -pub mod near_rpc_client; pub mod prometheus_metrics; -pub mod relay_errors; #[cfg(test)] pub mod config_for_tests; diff --git a/eth2near/eth2near-block-relay-rs/src/main.rs b/eth2near/eth2near-block-relay-rs/src/main.rs index cbea59b96..0b3b85cf0 100644 --- a/eth2near/eth2near-block-relay-rs/src/main.rs +++ b/eth2near/eth2near-block-relay-rs/src/main.rs @@ -1,6 +1,5 @@ use clap::{ArgAction, Parser}; use contract_wrapper::contract_wrapper_trait::ContractWrapper; -use contract_wrapper::eth_client_contract::EthClientContract; use contract_wrapper::eth_client_contract_trait::EthClientContractTrait; use contract_wrapper::near_contract_wrapper::NearContractWrapper; use contract_wrapper::{ @@ -8,8 +7,7 @@ use contract_wrapper::{ }; use eth2_to_near_relay::config::Config; use eth2_to_near_relay::eth2near_relay::Eth2NearRelay; -use eth2_to_near_relay::init_contract::init_contract; -use eth2_to_near_relay::logger::SimpleLogger; +use eth2near_logger::SimpleLogger; use log::LevelFilter; use std::string::String; @@ -20,15 +18,6 @@ struct Arguments { /// Path to config file config: String, - #[clap(long, action = ArgAction::SetTrue)] - /// The eth contract on Near will be initialized - init_contract: bool, - - #[clap(long, action = ArgAction::Set, default_value = "")] - /// The trusted block root for checkpoint for contract initialization - /// e.g.: --init-contract --init-block-root 0x9cd0c5a8392d0659426b12384e8440c147510ab93eeaeccb08435a462d7bb1c7 - init_block_root: String, - #[clap(long, default_value_t = String::from("info"))] /// Log level (trace, debug, info, warn, error) log_level: String, @@ -58,7 +47,7 @@ fn get_dao_contract_wrapper(config: &Config) -> Box { &config.near_endpoint, &config.signer_account_id, &config.path_to_signer_secret_key, - &dao_contract_account_id.unwrap(), + &dao_contract_account_id.expect("No DAO contract account ID provided for relay running in DAO mode"), )) } @@ -73,7 +62,7 @@ fn get_eth_client_contract(config: &Config) -> Box { )), "file" => Box::new(file_eth_client_contract::FileEthClientContract::new( eth_client, - config.output_dir.clone().unwrap(), + config.output_dir.clone().expect("No output dir provided for relay running in FILE mode"), )), _ => Box::new(eth_client), } @@ -91,32 +80,26 @@ fn init_log(args: &Arguments, config: &Config) { let mut path_to_log_file = "./eth2near-relay.log".to_string(); if let Some(out_dir) = config.clone().output_dir { path_to_log_file = out_dir.clone() + "/" + "eth2near-relay.log"; - std::fs::create_dir_all(out_dir).unwrap(); + std::fs::create_dir_all(out_dir).expect("Error during output dir creation"); } log::set_boxed_logger(Box::new(SimpleLogger::new(path_to_log_file))) .map(|()| log::set_max_level(log_level_filter)) - .unwrap(); + .expect("Error on logger creation"); } fn main() -> Result<(), Box> { let args = Arguments::parse(); - let config = Config::load_from_toml(args.config.clone().try_into().unwrap()); + let config = Config::load_from_toml(args.config.clone().try_into().expect("Error on config parsing")); init_log(&args, &config); - if args.init_contract { - let mut eth_client_contract = EthClientContract::new(get_eth_contract_wrapper(&config)); - init_contract(&config, &mut eth_client_contract, args.init_block_root).unwrap(); - } else { - let mut eth2near_relay = Eth2NearRelay::init( - &config, - get_eth_client_contract(&config), - args.enable_binary_search, - args.submit_only_finalized_blocks, - ); - - eth2near_relay.run(None); - } + let mut eth2near_relay = Eth2NearRelay::init( + &config, + get_eth_client_contract(&config), + args.enable_binary_search, + args.submit_only_finalized_blocks, + ); + eth2near_relay.run(None); Ok(()) } diff --git a/eth2near/eth2near-block-relay-rs/src/prometheus_metrics.rs b/eth2near/eth2near-block-relay-rs/src/prometheus_metrics.rs index 45c1547bc..34cb11416 100644 --- a/eth2near/eth2near-block-relay-rs/src/prometheus_metrics.rs +++ b/eth2near/eth2near-block-relay-rs/src/prometheus_metrics.rs @@ -136,7 +136,7 @@ pub fn run_prometheus_service(port: u16) { let metrics_route = warp::path!("metrics").and_then(metrics_handler); - let rt = Runtime::new().unwrap(); + let rt = Runtime::new().expect("Error on creating runtime for Prometheus service"); let handle = rt.handle(); println!("Started on port {}", port); diff --git a/eth2near/eth2near-block-relay-rs/src/test_utils.rs b/eth2near/eth2near-block-relay-rs/src/test_utils.rs index 3bcfdd836..5488afcd7 100644 --- a/eth2near/eth2near-block-relay-rs/src/test_utils.rs +++ b/eth2near/eth2near-block-relay-rs/src/test_utils.rs @@ -1,9 +1,9 @@ -use crate::beacon_rpc_client::BeaconRPCClient; +use eth_rpc_client::beacon_rpc_client::BeaconRPCClient; use crate::config::Config; use crate::config_for_tests::ConfigForTests; -use crate::eth1_rpc_client::Eth1RPCClient; +use eth_rpc_client::eth1_rpc_client::Eth1RPCClient; use crate::eth2near_relay::Eth2NearRelay; -use crate::init_contract; +use eth2_contract_init::init_contract; use crate::test_utils; use contract_wrapper::eth_client_contract::EthClientContract; use contract_wrapper::eth_client_contract_trait::EthClientContractTrait; @@ -14,6 +14,8 @@ use std::{thread, time}; use tokio::runtime::Runtime; use tree_hash::TreeHash; use workspaces::{Account, Contract}; +use crate::contract_type::ContractType; +use contract_wrapper::near_network::NearNetwork; pub fn read_json_file_from_data_dir(file_name: &str) -> std::string::String { let mut json_file_path = std::env::current_exe().unwrap(); @@ -72,11 +74,13 @@ pub fn init_contract_from_files( } eth_client_contract.init_contract( - config_for_test.network_name.to_string(), + config_for_test.network_name.clone(), finalized_execution_header.unwrap(), finalized_beacon_header, current_sync_committee, next_sync_committee, + Some(true), + Some(false), None, None, Some(eth_client_contract.contract_wrapper.get_signer_account_id()), @@ -146,11 +150,13 @@ pub fn init_contract_from_specific_slot( .unwrap(); eth_client_contract.init_contract( - config_for_test.network_name.to_string(), + config_for_test.network_name.clone(), finalized_execution_header, finalized_beacon_header, current_sync_committee, next_sync_committee, + Some(true), + Some(false), None, None, Some(eth_client_contract.contract_wrapper.get_signer_account_id()), @@ -181,11 +187,11 @@ fn get_config(config_for_test: &ConfigForTests) -> Config { signer_account_id: "NaN".to_string(), path_to_signer_secret_key: "NaN".to_string(), contract_account_id: "NaN".to_string(), - ethereum_network: config_for_test.network_name.to_string(), - contract_type: "near".to_string(), + ethereum_network: config_for_test.network_name.clone(), + contract_type: ContractType::Near, interval_between_light_client_updates_submission_in_epochs: 1, max_blocks_for_finalization: 5000, - near_network_id: "testnet".to_string(), + near_network_id: NearNetwork::Testnet, prometheus_metrics_port: Some(32221), dao_contract_account_id: None, output_dir: None, @@ -200,6 +206,30 @@ fn get_config(config_for_test: &ConfigForTests) -> Config { } } +fn get_init_config( + config_for_test: &ConfigForTests, + eth_client_contract: &EthClientContract, +) -> eth2_contract_init::config::Config { + eth2_contract_init::config::Config { + beacon_endpoint: config_for_test.beacon_endpoint.to_string(), + eth1_endpoint: config_for_test.eth1_endpoint.to_string(), + near_endpoint: "https://rpc.testnet.near.org".to_string(), + signer_account_id: "NaN".to_string(), + path_to_signer_secret_key: "NaN".to_string(), + contract_account_id: "NaN".to_string(), + ethereum_network: config_for_test.network_name.clone(), + near_network_id: NearNetwork::Testnet, + output_dir: None, + eth_requests_timeout_seconds: Some(30), + validate_updates: Some(true), + verify_bls_signature: Some(false), + hashes_gc_threshold: Some(51000), + max_submitted_blocks_by_account: Some(8000), + trusted_signer_account_id: Some(eth_client_contract.get_signer_account_id().to_string()), + init_block_root: None, + } +} + pub fn get_client_contract( from_file: bool, config_for_test: &ConfigForTests, @@ -209,14 +239,12 @@ pub fn get_client_contract( let mut eth_client_contract = EthClientContract::new(contract_wrapper); - let mut config = get_config(config_for_test); - config.signer_account_id = eth_client_contract.get_signature_account_id().to_string(); + let mut config = get_init_config(config_for_test, ð_client_contract); + config.signer_account_id = eth_client_contract.get_signer_account_id().to_string(); match from_file { true => test_utils::init_contract_from_files(&mut eth_client_contract, config_for_test), - false => { - init_contract::init_contract(&config, &mut eth_client_contract, "".to_string()).unwrap() - } + false => init_contract::init_contract(&config, &mut eth_client_contract).unwrap(), }; Box::new(eth_client_contract) diff --git a/eth2near/eth_rpc_client/Cargo.lock b/eth2near/eth_rpc_client/Cargo.lock new file mode 100644 index 000000000..b5e23679d --- /dev/null +++ b/eth2near/eth_rpc_client/Cargo.lock @@ -0,0 +1,4758 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 3 + +[[package]] +name = "Inflector" +version = "0.11.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fe438c63458706e03479442743baae6c88256498e6431708f6dfc520a26515d3" + +[[package]] +name = "actix" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f728064aca1c318585bf4bb04ffcfac9e75e508ab4e8b1bd9ba5dfe04e2cbed5" +dependencies = [ + "actix-rt", + "actix_derive", + "bitflags", + "bytes 1.2.1", + "crossbeam-channel", + "futures-core", + "futures-sink", + "futures-task", + "futures-util", + "log", + "once_cell", + "parking_lot", + "pin-project-lite 0.2.9", + "smallvec", + "tokio 1.21.1", + "tokio-util 0.7.4", +] + +[[package]] +name = "actix-rt" +version = "2.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ea16c295198e958ef31930a6ef37d0fb64e9ca3b6116e6b93a8bdae96ee1000" +dependencies = [ + "futures-core", + "tokio 1.21.1", +] + +[[package]] +name = "actix_derive" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d44b8fee1ced9671ba043476deddef739dd0959bf77030b26b738cc591737a7" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "addr2line" +version = "0.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9ecd88a8c8378ca913a680cd98f0f13ac67383d35993f86c90a70e3f137816b" +dependencies = [ + "gimli", +] + +[[package]] +name = "adler" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" + +[[package]] +name = "adler32" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aae1277d39aeec15cb388266ecc24b11c80469deae6067e17a1a7aa9e5c1f234" + +[[package]] +name = "ahash" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fcb51a0695d8f838b1ee009b3fbf66bda078cd64590202a864a8f3e8c4315c47" +dependencies = [ + "getrandom 0.2.7", + "once_cell", + "version_check", +] + +[[package]] +name = "aho-corasick" +version = "0.7.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4f55bd91a0978cbfd91c457a164bab8b4001c833b7f323132c0a4e1922dd44e" +dependencies = [ + "memchr", +] + +[[package]] +name = "android_system_properties" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311" +dependencies = [ + "libc", +] + +[[package]] +name = "anyhow" +version = "1.0.65" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "98161a4e3e2184da77bb14f02184cdd111e83bbbcc9979dfee3c44b9a85f5602" + +[[package]] +name = "arrayref" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4c527152e37cf757a3f78aae5a06fbeefdb07ccc535c980a3208ee3060dd544" + +[[package]] +name = "arrayvec" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23b62fc65de8e4e7f52534fb52b0f3ed04746ae267519eef2a83941e8085068b" + +[[package]] +name = "arrayvec" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8da52d66c7071e2e3fa2a1e5c6d088fec47b593032b254f5e980de8ea54454d6" + +[[package]] +name = "async-channel" +version = "1.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e14485364214912d3b19cc3435dde4df66065127f05fa0d75c712f36f12c2f28" +dependencies = [ + "concurrent-queue", + "event-listener", + "futures-core", +] + +[[package]] +name = "async-executor" +version = "1.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "871f9bb5e0a22eeb7e8cf16641feb87c9dc67032ccf8ff49e772eb9941d3a965" +dependencies = [ + "async-task", + "concurrent-queue", + "fastrand", + "futures-lite", + "once_cell", + "slab", +] + +[[package]] +name = "async-global-executor" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0da5b41ee986eed3f524c380e6d64965aea573882a8907682ad100f7859305ca" +dependencies = [ + "async-channel", + "async-executor", + "async-io", + "async-lock", + "blocking", + "futures-lite", + "once_cell", +] + +[[package]] +name = "async-io" +version = "1.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "83e21f3a490c72b3b0cf44962180e60045de2925d8dff97918f7ee43c8f637c7" +dependencies = [ + "autocfg", + "concurrent-queue", + "futures-lite", + "libc", + "log", + "once_cell", + "parking", + "polling", + "slab", + "socket2 0.4.7", + "waker-fn", + "winapi 0.3.9", +] + +[[package]] +name = "async-lock" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e97a171d191782fba31bb902b14ad94e24a68145032b7eedf871ab0bc0d077b6" +dependencies = [ + "event-listener", +] + +[[package]] +name = "async-process" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "02111fd8655a613c25069ea89fc8d9bb89331fa77486eb3bc059ee757cfa481c" +dependencies = [ + "async-io", + "autocfg", + "blocking", + "cfg-if 1.0.0", + "event-listener", + "futures-lite", + "libc", + "once_cell", + "signal-hook", + "winapi 0.3.9", +] + +[[package]] +name = "async-std" +version = "1.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62565bb4402e926b29953c785397c6dc0391b7b446e45008b0049eb43cec6f5d" +dependencies = [ + "async-channel", + "async-global-executor", + "async-io", + "async-lock", + "crossbeam-utils", + "futures-channel", + "futures-core", + "futures-io", + "futures-lite", + "gloo-timers", + "kv-log-macro", + "log", + "memchr", + "once_cell", + "pin-project-lite 0.2.9", + "pin-utils", + "slab", + "wasm-bindgen-futures", +] + +[[package]] +name = "async-task" +version = "4.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a40729d2133846d9ed0ea60a8b9541bccddab49cd30f0715a1da672fe9a2524" + +[[package]] +name = "async-trait" +version = "0.1.57" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76464446b8bc32758d7e88ee1a804d9914cd9b1cb264c029899680b0be29826f" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "atomic-waker" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "065374052e7df7ee4047b1160cca5e1467a12351a40b3da123c870ba0b8eda2a" + +[[package]] +name = "atomic_refcell" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "73b5e5f48b927f04e952dedc932f31995a65a0bf65ec971c74436e51bf6e970d" + +[[package]] +name = "atty" +version = "0.2.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8" +dependencies = [ + "hermit-abi", + "libc", + "winapi 0.3.9", +] + +[[package]] +name = "autocfg" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" + +[[package]] +name = "backtrace" +version = "0.3.66" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cab84319d616cfb654d03394f38ab7e6f0919e181b1b57e1fd15e7fb4077d9a7" +dependencies = [ + "addr2line", + "cc", + "cfg-if 1.0.0", + "libc", + "miniz_oxide", + "object", + "rustc-demangle", +] + +[[package]] +name = "base64" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b41b7ea54a0c9d92199de89e20e58d49f02f8e699814ef3fdf266f6f748d15c7" + +[[package]] +name = "base64" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3441f0f7b02788e948e47f457ca01f1d7e6d92c693bc132c22b087d3141c03ff" + +[[package]] +name = "base64" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "904dfeac50f3cdaba28fc6f57fdcddb75f49ed61346676a78c4ffe55877802fd" + +[[package]] +name = "binary-install" +version = "0.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7b5bc5f8c50dd6a80d0b303ddab79f42ddcb52fd43d68107ecf622c551fd4cd4" +dependencies = [ + "curl", + "dirs 1.0.5", + "failure", + "flate2", + "hex 0.3.2", + "is_executable", + "siphasher", + "tar", + "zip", +] + +[[package]] +name = "bitflags" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" + +[[package]] +name = "bitvec" +version = "0.17.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41262f11d771fd4a61aa3ce019fca363b4b6c282fca9da2a31186d3965a47a5c" +dependencies = [ + "either", + "radium 0.3.0", +] + +[[package]] +name = "bitvec" +version = "0.20.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7774144344a4faa177370406a7ff5f1da24303817368584c6206c8303eb07848" +dependencies = [ + "funty 1.1.0", + "radium 0.6.2", + "tap", + "wyz 0.2.0", +] + +[[package]] +name = "bitvec" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bc2832c24239b0141d5674bb9174f9d68a8b5b3f2753311927c172ca46f7e9c" +dependencies = [ + "funty 2.0.0", + "radium 0.7.0", + "tap", + "wyz 0.5.0", +] + +[[package]] +name = "blake2" +version = "0.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0a4e37d16930f5459780f5621038b6382b9bb37c19016f39fb6b5808d831f174" +dependencies = [ + "crypto-mac", + "digest 0.9.0", + "opaque-debug", +] + +[[package]] +name = "blake2b_simd" +version = "0.5.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "afa748e348ad3be8263be728124b24a24f268266f6f5d58af9d75f6a40b5c587" +dependencies = [ + "arrayref", + "arrayvec 0.5.2", + "constant_time_eq", +] + +[[package]] +name = "block-buffer" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4152116fd6e9dadb291ae18fc1ec3575ed6d84c29642d97890f4b4a3417297e4" +dependencies = [ + "generic-array", +] + +[[package]] +name = "block-buffer" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "69cce20737498f97b993470a6e536b8523f0af7892a4f928cceb1ac5e52ebe7e" +dependencies = [ + "generic-array", +] + +[[package]] +name = "blocking" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c6ccb65d468978a086b69884437ded69a90faab3bbe6e67f242173ea728acccc" +dependencies = [ + "async-channel", + "async-task", + "atomic-waker", + "fastrand", + "futures-lite", + "once_cell", +] + +[[package]] +name = "bls" +version = "0.2.0" +source = "git+https://github.com/aurora-is-near/lighthouse.git?rev=b624c3f0d3c5bc9ea46faa14c9cb2d90ee1e1dec#b624c3f0d3c5bc9ea46faa14c9cb2d90ee1e1dec" +dependencies = [ + "blst", + "eth2_hashing", + "eth2_serde_utils", + "eth2_ssz", + "ethereum-types", + "getrandom 0.2.7", + "hex 0.4.3", + "rand 0.7.3", + "serde", + "serde_derive", + "tree_hash", + "zeroize", +] + +[[package]] +name = "blst" +version = "0.3.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a30d0edd9dd1c60ddb42b80341c7852f6f985279a5c1a83659dcb65899dec99" +dependencies = [ + "cc", + "glob", + "threadpool", + "which", + "zeroize", +] + +[[package]] +name = "borsh" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "15bf3650200d8bffa99015595e10f1fbd17de07abbc25bb067da79e769939bfa" +dependencies = [ + "borsh-derive", + "hashbrown 0.11.2", +] + +[[package]] +name = "borsh-derive" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6441c552f230375d18e3cc377677914d2ca2b0d36e52129fe15450a2dce46775" +dependencies = [ + "borsh-derive-internal", + "borsh-schema-derive-internal", + "proc-macro-crate 0.1.5", + "proc-macro2", + "syn", +] + +[[package]] +name = "borsh-derive-internal" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5449c28a7b352f2d1e592a8a28bf139bc71afb0764a14f3c02500935d8c44065" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "borsh-schema-derive-internal" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cdbd5696d8bfa21d53d9fe39a714a18538bad11492a42d066dbbc395fb1951c0" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "bs58" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "771fe0050b883fcc3ea2359b1a96bcfbc090b7116eae7c3c512c7a083fdf23d3" + +[[package]] +name = "buf_redux" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b953a6887648bb07a535631f2bc00fbdb2a2216f135552cb3f534ed136b9c07f" +dependencies = [ + "memchr", + "safemem", +] + +[[package]] +name = "bumpalo" +version = "3.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c1ad822118d20d2c234f427000d5acc36eabe1e29a348c89b63dd60b13f28e5d" + +[[package]] +name = "byte-slice-cast" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b0a5e3906bcbf133e33c1d4d95afc664ad37fbdb9f6568d8043e7ea8c27d93d3" + +[[package]] +name = "byte-slice-cast" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87c5fdd0166095e1d463fc6cc01aa8ce547ad77a4e84d42eb6762b084e28067e" + +[[package]] +name = "byteorder" +version = "1.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610" + +[[package]] +name = "bytes" +version = "0.5.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0e4cec68f03f32e44924783795810fa50a7035d8c8ebe78580ad7e6c703fba38" + +[[package]] +name = "bytes" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec8a7b6a70fde80372154c65702f00a0f56f3e1c36abbc6c440484be248856db" + +[[package]] +name = "bytesize" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c58ec36aac5066d5ca17df51b3e70279f5670a72102f5752cb7e7c856adfc70" + +[[package]] +name = "bzip2" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6afcd980b5f3a45017c57e57a2fcccbb351cc43a356ce117ef760ef8052b89b0" +dependencies = [ + "bzip2-sys", + "libc", +] + +[[package]] +name = "bzip2-sys" +version = "0.1.11+1.0.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "736a955f3fa7875102d57c82b8cac37ec45224a07fd32d58f9f7a186b6cd4cdc" +dependencies = [ + "cc", + "libc", + "pkg-config", +] + +[[package]] +name = "c2-chacha" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d27dae93fe7b1e0424dc57179ac396908c26b035a87234809f5c4dfd1b47dc80" +dependencies = [ + "cipher", + "ppv-lite86", +] + +[[package]] +name = "cache-padded" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c1db59621ec70f09c5e9b597b220c7a2b43611f4710dc03ceb8748637775692c" + +[[package]] +name = "cached_tree_hash" +version = "0.1.0" +source = "git+https://github.com/aurora-is-near/lighthouse.git?rev=b624c3f0d3c5bc9ea46faa14c9cb2d90ee1e1dec#b624c3f0d3c5bc9ea46faa14c9cb2d90ee1e1dec" +dependencies = [ + "eth2_hashing", + "eth2_ssz", + "eth2_ssz_derive 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "eth2_ssz_types", + "ethereum-types", + "smallvec", + "tree_hash", +] + +[[package]] +name = "cc" +version = "1.0.73" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2fff2a6927b3bb87f9595d67196a70493f627687a71d87a0d692242c33f58c11" + +[[package]] +name = "cfg-if" +version = "0.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822" + +[[package]] +name = "cfg-if" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" + +[[package]] +name = "chrono" +version = "0.4.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfd4d1b31faaa3a89d7934dbded3111da0d2ef28e3ebccdb4f0179f5929d1ef1" +dependencies = [ + "iana-time-zone", + "js-sys", + "num-integer", + "num-traits", + "serde", + "time", + "wasm-bindgen", + "winapi 0.3.9", +] + +[[package]] +name = "cipher" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "12f8e7987cbd042a63249497f41aed09f8e65add917ea6566effbc56578d6801" +dependencies = [ + "generic-array", +] + +[[package]] +name = "clap" +version = "3.2.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "86447ad904c7fb335a790c9d7fe3d0d971dc523b8ccd1561a520de9a85302750" +dependencies = [ + "atty", + "bitflags", + "clap_derive", + "clap_lex", + "indexmap", + "once_cell", + "strsim", + "termcolor", + "textwrap", +] + +[[package]] +name = "clap_derive" +version = "3.2.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ea0c8bce528c4be4da13ea6fead8965e95b6073585a2f05204bd8f4119f82a65" +dependencies = [ + "heck", + "proc-macro-error", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "clap_lex" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2850f2f5a82cbf437dd5af4d49848fbdfc27c157c3d010345776f952765261c5" +dependencies = [ + "os_str_bytes", +] + +[[package]] +name = "compare_fields" +version = "0.2.0" +source = "git+https://github.com/aurora-is-near/lighthouse.git?rev=b624c3f0d3c5bc9ea46faa14c9cb2d90ee1e1dec#b624c3f0d3c5bc9ea46faa14c9cb2d90ee1e1dec" + +[[package]] +name = "compare_fields_derive" +version = "0.2.0" +source = "git+https://github.com/aurora-is-near/lighthouse.git?rev=b624c3f0d3c5bc9ea46faa14c9cb2d90ee1e1dec#b624c3f0d3c5bc9ea46faa14c9cb2d90ee1e1dec" +dependencies = [ + "quote", + "syn", +] + +[[package]] +name = "concurrent-queue" +version = "1.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af4780a44ab5696ea9e28294517f1fffb421a83a25af521333c838635509db9c" +dependencies = [ + "cache-padded", +] + +[[package]] +name = "constant_time_eq" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "245097e9a4535ee1e3e3931fcfcd55a796a44c643e8596ff6566d68f09b87bbc" + +[[package]] +name = "contract_wrapper" +version = "0.1.0" +dependencies = [ + "anyhow", + "async-std", + "borsh", + "eth-types", + "futures", + "near-chain-configs", + "near-crypto 0.14.0", + "near-jsonrpc-client", + "near-jsonrpc-primitives", + "near-primitives 0.14.0", + "near-sdk", + "reqwest", + "serde", + "serde_json", + "tokio 1.21.1", + "workspaces", +] + +[[package]] +name = "convert_case" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6245d59a3e82a7fc217c5828a6692dbc6dfb63a0c8c90495621f7b9d79704a0e" + +[[package]] +name = "core-foundation" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "194a7a9e6de53fa55116934067c844d9d749312f75c6f6d0980e8c252f8c2146" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "core-foundation-sys" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5827cebf4670468b8772dd191856768aedcb1b0278a04f989f7766351917b9dc" + +[[package]] +name = "cpufeatures" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "28d997bd5e24a5928dd43e46dc529867e207907fe0b239c3477d924f7f2ca320" +dependencies = [ + "libc", +] + +[[package]] +name = "crc32fast" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b540bd8bc810d3885c6ea91e2018302f68baba2129ab3e88f32389ee9370880d" +dependencies = [ + "cfg-if 1.0.0", +] + +[[package]] +name = "crossbeam-channel" +version = "0.5.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c2dd04ddaf88237dc3b8d8f9a3c1004b506b54b3313403944054d23c0870c521" +dependencies = [ + "cfg-if 1.0.0", + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-deque" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "715e8152b692bba2d374b53d4875445368fdf21a94751410af607a5ac677d1fc" +dependencies = [ + "cfg-if 1.0.0", + "crossbeam-epoch", + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-epoch" +version = "0.9.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "045ebe27666471bb549370b4b0b3e51b07f56325befa4284db65fc89c02511b1" +dependencies = [ + "autocfg", + "cfg-if 1.0.0", + "crossbeam-utils", + "memoffset", + "once_cell", + "scopeguard", +] + +[[package]] +name = "crossbeam-utils" +version = "0.8.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "51887d4adc7b564537b15adcfb307936f8075dfcd5f00dde9a9f1d29383682bc" +dependencies = [ + "cfg-if 1.0.0", + "once_cell", +] + +[[package]] +name = "crunchy" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7" + +[[package]] +name = "crypto-common" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" +dependencies = [ + "generic-array", + "typenum", +] + +[[package]] +name = "crypto-mac" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b584a330336237c1eecd3e94266efb216c56ed91225d634cb2991c5f3fd1aeab" +dependencies = [ + "generic-array", + "subtle", +] + +[[package]] +name = "ctor" +version = "0.1.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cdffe87e1d521a10f9696f833fe502293ea446d7f256c06128293a4119bdf4cb" +dependencies = [ + "quote", + "syn", +] + +[[package]] +name = "curl" +version = "0.4.44" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "509bd11746c7ac09ebd19f0b17782eae80aadee26237658a6b4808afb5c11a22" +dependencies = [ + "curl-sys", + "libc", + "openssl-probe", + "openssl-sys", + "schannel", + "socket2 0.4.7", + "winapi 0.3.9", +] + +[[package]] +name = "curl-sys" +version = "0.4.56+curl-7.83.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6093e169dd4de29e468fa649fbae11cdcd5551c81fe5bf1b0677adad7ef3d26f" +dependencies = [ + "cc", + "libc", + "libz-sys", + "openssl-sys", + "pkg-config", + "vcpkg", + "winapi 0.3.9", +] + +[[package]] +name = "curve25519-dalek" +version = "3.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b9fdf9972b2bd6af2d913799d9ebc165ea4d2e65878e329d9c6b372c4491b61" +dependencies = [ + "byteorder", + "digest 0.9.0", + "rand_core 0.5.1", + "subtle", + "zeroize", +] + +[[package]] +name = "darling" +version = "0.13.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a01d95850c592940db9b8194bc39f4bc0e89dee5c4265e4b1807c34a9aba453c" +dependencies = [ + "darling_core", + "darling_macro", +] + +[[package]] +name = "darling_core" +version = "0.13.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "859d65a907b6852c9361e3185c862aae7fafd2887876799fa55f5f99dc40d610" +dependencies = [ + "fnv", + "ident_case", + "proc-macro2", + "quote", + "strsim", + "syn", +] + +[[package]] +name = "darling_macro" +version = "0.13.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c972679f83bdf9c42bd905396b6c3588a843a17f0f16dfcfa3e2c5d57441835" +dependencies = [ + "darling_core", + "quote", + "syn", +] + +[[package]] +name = "derivative" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fcc3dd5e9e9c0b295d6e1e4d811fb6f157d5ffd784b8d202fc62eac8035a770b" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "derive_more" +version = "0.99.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4fb810d30a7c1953f91334de7244731fc3f3c10d7fe163338a35b9f640960321" +dependencies = [ + "convert_case", + "proc-macro2", + "quote", + "rustc_version", + "syn", +] + +[[package]] +name = "digest" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3dd60d1080a57a05ab032377049e0591415d2b31afd7028356dbf3cc6dcb066" +dependencies = [ + "generic-array", +] + +[[package]] +name = "digest" +version = "0.10.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "adfbc57365a37acbd2ebf2b64d7e69bb766e2fea813521ed536f5d0520dcf86c" +dependencies = [ + "block-buffer 0.10.3", + "crypto-common", +] + +[[package]] +name = "dirs" +version = "1.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3fd78930633bd1c6e35c4b42b1df7b0cbc6bc191146e512bb3bedf243fcc3901" +dependencies = [ + "libc", + "redox_users 0.3.5", + "winapi 0.3.9", +] + +[[package]] +name = "dirs" +version = "3.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "30baa043103c9d0c2a57cf537cc2f35623889dc0d405e6c3cccfadbc81c71309" +dependencies = [ + "dirs-sys", +] + +[[package]] +name = "dirs-sys" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b1d1d91c932ef41c0f2663aa8b0ca0342d444d842c06914aa0a7e352d0bada6" +dependencies = [ + "libc", + "redox_users 0.4.3", + "winapi 0.3.9", +] + +[[package]] +name = "dtoa" +version = "0.4.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56899898ce76aaf4a0f24d914c97ea6ed976d42fec6ad33fcbb0a1103e07b2b0" + +[[package]] +name = "easy-ext" +version = "0.2.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53aff6fdc1b181225acdcb5b14c47106726fd8e486707315b1b138baed68ee31" + +[[package]] +name = "ed25519" +version = "1.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e9c280362032ea4203659fc489832d0204ef09f247a0506f170dafcac08c369" +dependencies = [ + "signature", +] + +[[package]] +name = "ed25519-dalek" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c762bae6dcaf24c4c84667b8579785430908723d5c889f469d76a41d59cc7a9d" +dependencies = [ + "curve25519-dalek", + "ed25519", + "rand 0.7.3", + "serde", + "sha2 0.9.9", + "zeroize", +] + +[[package]] +name = "either" +version = "1.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "90e5c1c8368803113bf0c9584fc495a58b86dc8a29edbf8fe877d21d9507e797" + +[[package]] +name = "encoding_rs" +version = "0.8.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9852635589dc9f9ea1b6fe9f05b50ef208c85c834a562f0c6abb1c475736ec2b" +dependencies = [ + "cfg-if 1.0.0", +] + +[[package]] +name = "env_logger" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c90bf5f19754d10198ccb95b70664fc925bd1fc090a0fd9a6ebc54acc8cd6272" +dependencies = [ + "atty", + "humantime", + "log", + "regex", + "termcolor", +] + +[[package]] +name = "eth-types" +version = "0.1.0" +dependencies = [ + "borsh", + "derive_more", + "eth2_serde_utils", + "eth2_ssz", + "eth2_ssz_derive 0.3.0 (git+https://github.com/aurora-is-near/lighthouse.git?rev=b624c3f0d3c5bc9ea46faa14c9cb2d90ee1e1dec)", + "ethereum-types", + "hex 0.4.3", + "near-sdk", + "rlp", + "rlp-derive", + "serde", + "serde-big-array", + "tree_hash", + "tree_hash_derive 0.4.0 (git+https://github.com/aurora-is-near/lighthouse.git?rev=b624c3f0d3c5bc9ea46faa14c9cb2d90ee1e1dec)", +] + +[[package]] +name = "eth2-utility" +version = "0.1.0" +dependencies = [ + "bitvec 1.0.1", + "borsh", + "eth-types", + "ethereum-types", + "merkle_proof", + "near-sdk", + "tree_hash", +] + +[[package]] +name = "eth2_hashing" +version = "0.3.0" +source = "git+https://github.com/aurora-is-near/lighthouse.git?rev=b624c3f0d3c5bc9ea46faa14c9cb2d90ee1e1dec#b624c3f0d3c5bc9ea46faa14c9cb2d90ee1e1dec" +dependencies = [ + "cpufeatures", + "lazy_static", + "ring", + "sha2 0.10.6", +] + +[[package]] +name = "eth2_interop_keypairs" +version = "0.2.0" +source = "git+https://github.com/aurora-is-near/lighthouse.git?rev=b624c3f0d3c5bc9ea46faa14c9cb2d90ee1e1dec#b624c3f0d3c5bc9ea46faa14c9cb2d90ee1e1dec" +dependencies = [ + "bls", + "eth2_hashing", + "hex 0.4.3", + "lazy_static", + "num-bigint 0.4.3", + "serde", + "serde_derive", + "serde_yaml", +] + +[[package]] +name = "eth2_serde_utils" +version = "0.1.1" +source = "git+https://github.com/aurora-is-near/lighthouse.git?rev=b624c3f0d3c5bc9ea46faa14c9cb2d90ee1e1dec#b624c3f0d3c5bc9ea46faa14c9cb2d90ee1e1dec" +dependencies = [ + "ethereum-types", + "hex 0.4.3", + "serde", + "serde_derive", + "serde_json", +] + +[[package]] +name = "eth2_ssz" +version = "0.4.1" +source = "git+https://github.com/aurora-is-near/lighthouse.git?rev=b624c3f0d3c5bc9ea46faa14c9cb2d90ee1e1dec#b624c3f0d3c5bc9ea46faa14c9cb2d90ee1e1dec" +dependencies = [ + "ethereum-types", + "smallvec", +] + +[[package]] +name = "eth2_ssz_derive" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "635b86d2c941bb71e7419a571e1763d65c93e51a1bafc400352e3bef6ff59fc9" +dependencies = [ + "darling", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "eth2_ssz_derive" +version = "0.3.0" +source = "git+https://github.com/aurora-is-near/lighthouse.git?rev=b624c3f0d3c5bc9ea46faa14c9cb2d90ee1e1dec#b624c3f0d3c5bc9ea46faa14c9cb2d90ee1e1dec" +dependencies = [ + "darling", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "eth2_ssz_types" +version = "0.2.2" +source = "git+https://github.com/aurora-is-near/lighthouse.git?rev=b624c3f0d3c5bc9ea46faa14c9cb2d90ee1e1dec#b624c3f0d3c5bc9ea46faa14c9cb2d90ee1e1dec" +dependencies = [ + "derivative", + "eth2_serde_utils", + "eth2_ssz", + "serde", + "serde_derive", + "smallvec", + "tree_hash", + "typenum", +] + +[[package]] +name = "eth_rpc_client" +version = "0.1.0" +dependencies = [ + "async-std", + "atomic_refcell", + "bitvec 1.0.1", + "borsh", + "clap", + "contract_wrapper", + "env_logger", + "eth-types", + "eth2_hashing", + "eth2_ssz", + "ethereum-types", + "finality-update-verify", + "futures", + "hex 0.4.3", + "lazy_static", + "log", + "merkle_proof", + "prometheus", + "reqwest", + "serde", + "serde_json", + "thread", + "tokio 1.21.1", + "toml", + "tree_hash", + "types", + "warp", +] + +[[package]] +name = "ethbloom" +version = "0.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "71a6567e6fd35589fea0c63b94b4cf2e55573e413901bdbe60ab15cf0e25e5df" +dependencies = [ + "crunchy", + "fixed-hash 0.6.1", + "impl-rlp", + "impl-serde", + "tiny-keccak", +] + +[[package]] +name = "ethereum-types" +version = "0.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "473aecff686bd8e7b9db0165cbbb53562376b39bf35b427f0c60446a9e1634b0" +dependencies = [ + "ethbloom", + "fixed-hash 0.6.1", + "impl-rlp", + "impl-serde", + "primitive-types 0.7.3", + "uint 0.8.5", +] + +[[package]] +name = "event-listener" +version = "2.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0206175f82b8d6bf6652ff7d71a1e27fd2e4efde587fd368662814d6ec1d9ce0" + +[[package]] +name = "failure" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d32e9bd16cc02eae7db7ef620b392808b89f6a5e16bb3497d159c6b92a0f4f86" +dependencies = [ + "backtrace", + "failure_derive", +] + +[[package]] +name = "failure_derive" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aa4da3c766cd7a0db8242e326e9e4e081edd567072893ed320008189715366a4" +dependencies = [ + "proc-macro2", + "quote", + "syn", + "synstructure", +] + +[[package]] +name = "fallible-iterator" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4443176a9f2c162692bd3d352d745ef9413eec5782a80d8fd6f8a1ac692a07f7" + +[[package]] +name = "fallible-streaming-iterator" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7360491ce676a36bf9bb3c56c1aa791658183a54d2744120f27285738d90465a" + +[[package]] +name = "fastrand" +version = "1.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7a407cfaa3385c4ae6b23e84623d48c2798d06e3e6a1878f7f59f17b3f86499" +dependencies = [ + "instant", +] + +[[package]] +name = "filetime" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e94a7bbaa59354bc20dd75b67f23e2797b4490e9d6928203fb105c79e448c86c" +dependencies = [ + "cfg-if 1.0.0", + "libc", + "redox_syscall 0.2.16", + "windows-sys", +] + +[[package]] +name = "finality-update-verify" +version = "0.1.0" +dependencies = [ + "bitvec 1.0.1", + "bls", + "eth-types", + "eth2-utility", + "tree_hash", + "types", +] + +[[package]] +name = "fixed-hash" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "11498d382790b7a8f2fd211780bec78619bba81cdad3a283997c0c41f836759c" +dependencies = [ + "byteorder", + "rand 0.7.3", + "rustc-hex", + "static_assertions", +] + +[[package]] +name = "fixed-hash" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cfcf0ed7fe52a17a03854ec54a9f76d6d84508d1c0e66bc1793301c73fc8493c" +dependencies = [ + "byteorder", + "rand 0.8.5", + "rustc-hex", + "static_assertions", +] + +[[package]] +name = "flate2" +version = "1.0.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f82b0f4c27ad9f8bfd1f3208d882da2b09c301bc1c828fd3a00d0216d2fbbff6" +dependencies = [ + "crc32fast", + "miniz_oxide", +] + +[[package]] +name = "fnv" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" + +[[package]] +name = "foreign-types" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" +dependencies = [ + "foreign-types-shared", +] + +[[package]] +name = "foreign-types-shared" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" + +[[package]] +name = "form_urlencoded" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a9c384f161156f5260c24a097c56119f9be8c798586aecc13afbcbe7b7e26bf8" +dependencies = [ + "percent-encoding", +] + +[[package]] +name = "fuchsia-zircon" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2e9763c69ebaae630ba35f74888db465e49e259ba1bc0eda7d06f4a067615d82" +dependencies = [ + "bitflags", + "fuchsia-zircon-sys", +] + +[[package]] +name = "fuchsia-zircon-sys" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3dcaa9ae7725d12cdb85b3ad99a434db70b468c09ded17e012d86b5c1010f7a7" + +[[package]] +name = "funty" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fed34cd105917e91daa4da6b3728c47b068749d6a62c59811f06ed2ac71d9da7" + +[[package]] +name = "funty" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6d5a32815ae3f33302d95fdcb2ce17862f8c65363dcfd29360480ba1001fc9c" + +[[package]] +name = "futures" +version = "0.3.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f21eda599937fba36daeb58a22e8f5cee2d14c4a17b5b7739c7c8e5e3b8230c" +dependencies = [ + "futures-channel", + "futures-core", + "futures-executor", + "futures-io", + "futures-sink", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-channel" +version = "0.3.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "30bdd20c28fadd505d0fd6712cdfcb0d4b5648baf45faef7f852afb2399bb050" +dependencies = [ + "futures-core", + "futures-sink", +] + +[[package]] +name = "futures-core" +version = "0.3.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4e5aa3de05362c3fb88de6531e6296e85cde7739cccad4b9dfeeb7f6ebce56bf" + +[[package]] +name = "futures-executor" +version = "0.3.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ff63c23854bee61b6e9cd331d523909f238fc7636290b96826e9cfa5faa00ab" +dependencies = [ + "futures-core", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-io" +version = "0.3.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbf4d2a7a308fd4578637c0b17c7e1c7ba127b8f6ba00b29f717e9655d85eb68" + +[[package]] +name = "futures-lite" +version = "1.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7694489acd39452c77daa48516b894c153f192c3578d5a839b62c58099fcbf48" +dependencies = [ + "fastrand", + "futures-core", + "futures-io", + "memchr", + "parking", + "pin-project-lite 0.2.9", + "waker-fn", +] + +[[package]] +name = "futures-macro" +version = "0.3.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42cd15d1c7456c04dbdf7e88bcd69760d74f3a798d6444e16974b505b0e62f17" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "futures-sink" +version = "0.3.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "21b20ba5a92e727ba30e72834706623d94ac93a725410b6a6b6fbc1b07f7ba56" + +[[package]] +name = "futures-task" +version = "0.3.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a6508c467c73851293f390476d4491cf4d227dbabcd4170f3bb6044959b294f1" + +[[package]] +name = "futures-util" +version = "0.3.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "44fb6cb1be61cc1d2e43b262516aafcf63b241cffdb1d3fa115f91d9c7b09c90" +dependencies = [ + "futures-channel", + "futures-core", + "futures-io", + "futures-macro", + "futures-sink", + "futures-task", + "memchr", + "pin-project-lite 0.2.9", + "pin-utils", + "slab", +] + +[[package]] +name = "generic-array" +version = "0.14.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bff49e947297f3312447abdca79f45f4738097cc82b06e72054d2223f601f1b9" +dependencies = [ + "typenum", + "version_check", +] + +[[package]] +name = "getrandom" +version = "0.1.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8fc3cb4d91f53b50155bdcfd23f6a4c39ae1969c2ae85982b135750cccaf5fce" +dependencies = [ + "cfg-if 1.0.0", + "libc", + "wasi 0.9.0+wasi-snapshot-preview1", +] + +[[package]] +name = "getrandom" +version = "0.2.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4eb1a864a501629691edf6c15a593b7a51eebaa1e8468e9ddc623de7c9b58ec6" +dependencies = [ + "cfg-if 1.0.0", + "js-sys", + "libc", + "wasi 0.11.0+wasi-snapshot-preview1", + "wasm-bindgen", +] + +[[package]] +name = "gimli" +version = "0.26.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "22030e2c5a68ec659fde1e949a745124b48e6fa8b045b7ed5bd1fe4ccc5c4e5d" + +[[package]] +name = "glob" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b919933a397b79c37e33b77bb2aa3dc8eb6e165ad809e58ff75bc7db2e34574" + +[[package]] +name = "gloo-timers" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5fb7d06c1c8cc2a29bee7ec961009a0b2caa0793ee4900c2ffb348734ba1c8f9" +dependencies = [ + "futures-channel", + "futures-core", + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "h2" +version = "0.2.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e4728fd124914ad25e99e3d15a9361a879f6620f63cb56bbb08f95abb97a535" +dependencies = [ + "bytes 0.5.6", + "fnv", + "futures-core", + "futures-sink", + "futures-util", + "http", + "indexmap", + "slab", + "tokio 0.2.25", + "tokio-util 0.3.1", + "tracing", + "tracing-futures", +] + +[[package]] +name = "h2" +version = "0.3.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5ca32592cf21ac7ccab1825cd87f6c9b3d9022c44d086172ed0966bec8af30be" +dependencies = [ + "bytes 1.2.1", + "fnv", + "futures-core", + "futures-sink", + "futures-util", + "http", + "indexmap", + "slab", + "tokio 1.21.1", + "tokio-util 0.7.4", + "tracing", +] + +[[package]] +name = "hashbrown" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ab5ef0d4909ef3724cc8cce6ccc8572c5c817592e9285f5464f8e86f8bd3726e" +dependencies = [ + "ahash", +] + +[[package]] +name = "hashbrown" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" + +[[package]] +name = "hashlink" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7249a3129cbc1ffccd74857f81464a323a152173cdb134e0fd81bc803b29facf" +dependencies = [ + "hashbrown 0.11.2", +] + +[[package]] +name = "headers" +version = "0.3.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f3e372db8e5c0d213e0cd0b9be18be2aca3d44cf2fe30a9d46a65581cd454584" +dependencies = [ + "base64 0.13.0", + "bitflags", + "bytes 1.2.1", + "headers-core", + "http", + "httpdate 1.0.2", + "mime", + "sha1", +] + +[[package]] +name = "headers-core" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e7f66481bfee273957b1f20485a4ff3362987f85b2c236580d81b4eb7a326429" +dependencies = [ + "http", +] + +[[package]] +name = "heck" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2540771e65fc8cb83cd6e8a237f70c319bd5c29f78ed1084ba5d50eeac86f7f9" + +[[package]] +name = "hermit-abi" +version = "0.1.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33" +dependencies = [ + "libc", +] + +[[package]] +name = "hex" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "805026a5d0141ffc30abb3be3173848ad46a1b1664fe632428479619a3644d77" + +[[package]] +name = "hex" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" + +[[package]] +name = "home" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2456aef2e6b6a9784192ae780c0f15bc57df0e918585282325e8c8ac27737654" +dependencies = [ + "winapi 0.3.9", +] + +[[package]] +name = "http" +version = "0.2.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75f43d41e26995c17e71ee126451dd3941010b0514a81a9d11f3b341debc2399" +dependencies = [ + "bytes 1.2.1", + "fnv", + "itoa 1.0.3", +] + +[[package]] +name = "http-body" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13d5ff830006f7646652e057693569bfe0d51760c0085a071769d142a205111b" +dependencies = [ + "bytes 0.5.6", + "http", +] + +[[package]] +name = "http-body" +version = "0.4.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d5f38f16d184e36f2408a55281cd658ecbd3ca05cce6d6510a176eca393e26d1" +dependencies = [ + "bytes 1.2.1", + "http", + "pin-project-lite 0.2.9", +] + +[[package]] +name = "httparse" +version = "1.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d897f394bad6a705d5f4104762e116a75639e470d80901eed05a860a95cb1904" + +[[package]] +name = "httpdate" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "494b4d60369511e7dea41cf646832512a94e542f68bb9c49e54518e0f468eb47" + +[[package]] +name = "httpdate" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c4a1e36c821dbe04574f602848a19f742f4fb3c98d40449f11bcad18d6b17421" + +[[package]] +name = "humantime" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4" + +[[package]] +name = "hyper" +version = "0.13.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a6f157065790a3ed2f88679250419b5cdd96e714a0d65f7797fd337186e96bb" +dependencies = [ + "bytes 0.5.6", + "futures-channel", + "futures-core", + "futures-util", + "h2 0.2.7", + "http", + "http-body 0.3.1", + "httparse", + "httpdate 0.3.2", + "itoa 0.4.8", + "pin-project 1.0.12", + "socket2 0.3.19", + "tokio 0.2.25", + "tower-service", + "tracing", + "want", +] + +[[package]] +name = "hyper" +version = "0.14.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "02c929dc5c39e335a03c405292728118860721b10190d98c2a0f0efd5baafbac" +dependencies = [ + "bytes 1.2.1", + "futures-channel", + "futures-core", + "futures-util", + "h2 0.3.14", + "http", + "http-body 0.4.5", + "httparse", + "httpdate 1.0.2", + "itoa 1.0.3", + "pin-project-lite 0.2.9", + "socket2 0.4.7", + "tokio 1.21.1", + "tower-service", + "tracing", + "want", +] + +[[package]] +name = "hyper-tls" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d6183ddfa99b85da61a140bea0efc93fdf56ceaa041b37d553518030827f9905" +dependencies = [ + "bytes 1.2.1", + "hyper 0.14.20", + "native-tls", + "tokio 1.21.1", + "tokio-native-tls", +] + +[[package]] +name = "iana-time-zone" +version = "0.1.48" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "237a0714f28b1ee39ccec0770ccb544eb02c9ef2c82bb096230eefcffa6468b0" +dependencies = [ + "android_system_properties", + "core-foundation-sys", + "js-sys", + "once_cell", + "wasm-bindgen", + "winapi 0.3.9", +] + +[[package]] +name = "ident_case" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" + +[[package]] +name = "idna" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e14ddfc70884202db2244c223200c204c2bda1bc6e0998d11b5e024d657209e6" +dependencies = [ + "unicode-bidi", + "unicode-normalization", +] + +[[package]] +name = "impl-codec" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1be51a921b067b0eaca2fad532d9400041561aa922221cc65f95a85641c6bf53" +dependencies = [ + "parity-scale-codec 1.3.7", +] + +[[package]] +name = "impl-codec" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "161ebdfec3c8e3b52bf61c4f3550a1eea4f9579d10dc1b936f3171ebdcd6c443" +dependencies = [ + "parity-scale-codec 2.3.1", +] + +[[package]] +name = "impl-rlp" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f7a72f11830b52333f36e3b09a288333888bf54380fd0ac0790a3c31ab0f3c5" +dependencies = [ + "rlp", +] + +[[package]] +name = "impl-serde" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4551f042f3438e64dbd6226b20527fc84a6e1fe65688b58746a2f53623f25f5c" +dependencies = [ + "serde", +] + +[[package]] +name = "impl-trait-for-tuples" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "11d7a9f6330b71fea57921c9b61c47ee6e84f72d394754eff6163ae67e7395eb" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "indexmap" +version = "1.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "10a35a97730320ffe8e2d410b5d3b69279b98d2c14bdb8b70ea89ecf7888d41e" +dependencies = [ + "autocfg", + "hashbrown 0.12.3", +] + +[[package]] +name = "input_buffer" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "19a8a95243d5a0398cae618ec29477c6e3cb631152be5c19481f80bc71559754" +dependencies = [ + "bytes 0.5.6", +] + +[[package]] +name = "instant" +version = "0.1.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c" +dependencies = [ + "cfg-if 1.0.0", +] + +[[package]] +name = "int_to_bytes" +version = "0.2.0" +source = "git+https://github.com/aurora-is-near/lighthouse.git?rev=b624c3f0d3c5bc9ea46faa14c9cb2d90ee1e1dec#b624c3f0d3c5bc9ea46faa14c9cb2d90ee1e1dec" +dependencies = [ + "bytes 1.2.1", +] + +[[package]] +name = "iovec" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b2b3ea6ff95e175473f8ffe6a7eb7c00d054240321b84c57051175fe3c1e075e" +dependencies = [ + "libc", +] + +[[package]] +name = "ipnet" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "879d54834c8c76457ef4293a689b2a8c59b076067ad77b15efafbb05f92a592b" + +[[package]] +name = "is_executable" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "302d553b8abc8187beb7d663e34c065ac4570b273bc9511a50e940e99409c577" +dependencies = [ + "winapi 0.3.9", +] + +[[package]] +name = "itertools" +version = "0.10.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473" +dependencies = [ + "either", +] + +[[package]] +name = "itoa" +version = "0.4.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b71991ff56294aa922b450139ee08b3bfc70982c6b2c7562771375cf73542dd4" + +[[package]] +name = "itoa" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c8af84674fe1f223a982c933a0ee1086ac4d4052aa0fb8060c12c6ad838e754" + +[[package]] +name = "js-sys" +version = "0.3.60" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49409df3e3bf0856b916e2ceaca09ee28e6871cf7d9ce97a692cacfdb2a25a47" +dependencies = [ + "wasm-bindgen", +] + +[[package]] +name = "keccak" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f9b7d56ba4a8344d6be9729995e6b06f928af29998cdf79fe390cbf6b1fee838" + +[[package]] +name = "kernel32-sys" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7507624b29483431c0ba2d82aece8ca6cdba9382bff4ddd0f7490560c056098d" +dependencies = [ + "winapi 0.2.8", + "winapi-build", +] + +[[package]] +name = "kv-log-macro" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0de8b303297635ad57c9f5059fd9cee7a47f8e8daa09df0fcd07dd39fb22977f" +dependencies = [ + "log", +] + +[[package]] +name = "lazy_static" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" + +[[package]] +name = "libc" +version = "0.2.133" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c0f80d65747a3e43d1596c7c5492d95d5edddaabd45a7fcdb02b95f644164966" + +[[package]] +name = "libflate" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05605ab2bce11bcfc0e9c635ff29ef8b2ea83f29be257ee7d730cac3ee373093" +dependencies = [ + "adler32", + "crc32fast", + "libflate_lz77", +] + +[[package]] +name = "libflate_lz77" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "39a734c0493409afcd49deee13c006a04e3586b9761a03543c6272c9c51f2f5a" +dependencies = [ + "rle-decode-fast", +] + +[[package]] +name = "libsqlite3-sys" +version = "0.22.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "290b64917f8b0cb885d9de0f9959fe1f775d7fa12f1da2db9001c1c8ab60f89d" +dependencies = [ + "cc", + "pkg-config", + "vcpkg", +] + +[[package]] +name = "libz-sys" +version = "1.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9702761c3935f8cc2f101793272e202c72b99da8f4224a19ddcf1279a6450bbf" +dependencies = [ + "cc", + "libc", + "pkg-config", + "vcpkg", +] + +[[package]] +name = "linked-hash-map" +version = "0.5.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0717cef1bc8b636c6e1c1bbdefc09e6322da8a9321966e8928ef80d20f7f770f" + +[[package]] +name = "lock_api" +version = "0.4.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "435011366fe56583b16cf956f9df0095b405b82d76425bc8981c0e22e60ec4df" +dependencies = [ + "autocfg", + "scopeguard", +] + +[[package]] +name = "log" +version = "0.4.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "abb12e687cfb44aa40f41fc3978ef76448f9b6038cad6aef4259d3c095a2382e" +dependencies = [ + "cfg-if 1.0.0", + "serde", + "value-bag", +] + +[[package]] +name = "memchr" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d" + +[[package]] +name = "memoffset" +version = "0.6.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5aa361d4faea93603064a027415f07bd8e1d5c88c9fbf68bf56a285428fd79ce" +dependencies = [ + "autocfg", +] + +[[package]] +name = "memory_units" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8452105ba047068f40ff7093dd1d9da90898e63dd61736462e9cdda6a90ad3c3" + +[[package]] +name = "merkle_proof" +version = "0.2.0" +source = "git+https://github.com/aurora-is-near/lighthouse.git?rev=b624c3f0d3c5bc9ea46faa14c9cb2d90ee1e1dec#b624c3f0d3c5bc9ea46faa14c9cb2d90ee1e1dec" +dependencies = [ + "eth2_hashing", + "ethereum-types", + "lazy_static", + "safe_arith", +] + +[[package]] +name = "mime" +version = "0.3.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2a60c7ce501c71e03a9c9c0d35b861413ae925bd979cc7a4e30d060069aaac8d" + +[[package]] +name = "mime_guess" +version = "2.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4192263c238a5f0d0c6bfd21f336a313a4ce1c450542449ca191bb657b4642ef" +dependencies = [ + "mime", + "unicase", +] + +[[package]] +name = "miniz_oxide" +version = "0.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96590ba8f175222643a85693f33d26e9c8a015f599c216509b1a6894af675d34" +dependencies = [ + "adler", +] + +[[package]] +name = "mio" +version = "0.6.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4afd66f5b91bf2a3bc13fad0e21caedac168ca4c707504e75585648ae80e4cc4" +dependencies = [ + "cfg-if 0.1.10", + "fuchsia-zircon", + "fuchsia-zircon-sys", + "iovec", + "kernel32-sys", + "libc", + "log", + "miow", + "net2", + "slab", + "winapi 0.2.8", +] + +[[package]] +name = "mio" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57ee1c23c7c63b0c9250c339ffdc69255f110b298b901b9f6c82547b7b87caaf" +dependencies = [ + "libc", + "log", + "wasi 0.11.0+wasi-snapshot-preview1", + "windows-sys", +] + +[[package]] +name = "miow" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ebd808424166322d4a38da87083bfddd3ac4c131334ed55856112eb06d46944d" +dependencies = [ + "kernel32-sys", + "net2", + "winapi 0.2.8", + "ws2_32-sys", +] + +[[package]] +name = "multipart" +version = "0.17.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d050aeedc89243f5347c3e237e3e13dc76fbe4ae3742a57b94dc14f69acf76d4" +dependencies = [ + "buf_redux", + "httparse", + "log", + "mime", + "mime_guess", + "quick-error", + "rand 0.7.3", + "safemem", + "tempfile", + "twoway", +] + +[[package]] +name = "native-tls" +version = "0.2.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fd7e2f3618557f980e0b17e8856252eee3c97fa12c54dff0ca290fb6266ca4a9" +dependencies = [ + "lazy_static", + "libc", + "log", + "openssl", + "openssl-probe", + "openssl-sys", + "schannel", + "security-framework", + "security-framework-sys", + "tempfile", +] + +[[package]] +name = "near-account-id" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "de83d74a9241be8cc4eb3055216966b58bf8c463e8e285c0dc553925acdd19fa" +dependencies = [ + "borsh", + "serde", +] + +[[package]] +name = "near-account-id" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "71d258582a1878e6db67400b0504a5099db85718d22c2e07f747fe1706ae7150" +dependencies = [ + "borsh", + "serde", +] + +[[package]] +name = "near-chain-configs" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3632a1c691603cb32dd9944c95d8eadbf2c09f45abd95350ea6848c649036a0b" +dependencies = [ + "anyhow", + "chrono", + "derive_more", + "near-crypto 0.14.0", + "near-primitives 0.14.0", + "num-rational", + "serde", + "serde_json", + "sha2 0.10.6", + "smart-default", + "tracing", +] + +[[package]] +name = "near-chain-primitives" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a734353027698b21633a49d478e564c61ae0171c32f6912bb8844add15d72ebe" +dependencies = [ + "chrono", + "near-crypto 0.14.0", + "near-primitives 0.14.0", + "thiserror", + "tracing", +] + +[[package]] +name = "near-chunks-primitives" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c17f6f22f1ab710731dfba4101f12a99cac120d6af80b99899bd335bb8971477" +dependencies = [ + "near-chain-primitives", + "near-primitives 0.14.0", +] + +[[package]] +name = "near-client-primitives" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e1065d86012eeea838661434549f33bb6267c9950fd2aadd2af617fe773def38" +dependencies = [ + "actix", + "chrono", + "near-chain-configs", + "near-chain-primitives", + "near-chunks-primitives", + "near-crypto 0.14.0", + "near-network-primitives", + "near-primitives 0.14.0", + "serde", + "serde_json", + "strum", + "thiserror", +] + +[[package]] +name = "near-crypto" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8ecf0b8b31aa7f4e60f629f72213a2617ca4a5f45cd1ae9ed2cf7cecfebdbb7" +dependencies = [ + "arrayref", + "blake2", + "borsh", + "bs58", + "c2-chacha", + "curve25519-dalek", + "derive_more", + "ed25519-dalek", + "libc", + "near-account-id 0.13.0", + "once_cell", + "parity-secp256k1", + "primitive-types 0.10.1", + "rand 0.7.3", + "rand_core 0.5.1", + "serde", + "serde_json", + "subtle", + "thiserror", +] + +[[package]] +name = "near-crypto" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e75673d69fd7365508f3d32483669fe45b03bfb34e4d9363e90adae9dfb416c" +dependencies = [ + "arrayref", + "blake2", + "borsh", + "bs58", + "c2-chacha", + "curve25519-dalek", + "derive_more", + "ed25519-dalek", + "near-account-id 0.14.0", + "once_cell", + "parity-secp256k1", + "primitive-types 0.10.1", + "rand 0.7.3", + "rand_core 0.5.1", + "serde", + "serde_json", + "subtle", + "thiserror", +] + +[[package]] +name = "near-jsonrpc-client" +version = "0.4.0-beta.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bba462f54bc35289a1013ed3a2ebfa67cc8b12699f81c12dd67687f200c7b871" +dependencies = [ + "borsh", + "lazy_static", + "log", + "near-chain-configs", + "near-crypto 0.14.0", + "near-jsonrpc-primitives", + "near-primitives 0.14.0", + "reqwest", + "serde", + "serde_json", + "thiserror", + "uuid", +] + +[[package]] +name = "near-jsonrpc-primitives" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34a14ee8ca393c0140cb232789259ebc61b13b4cceb177267d0131f50d0eda6c" +dependencies = [ + "near-chain-configs", + "near-client-primitives", + "near-crypto 0.14.0", + "near-primitives 0.14.0", + "near-rpc-error-macro 0.14.0", + "serde", + "serde_json", + "thiserror", + "uuid", +] + +[[package]] +name = "near-network-primitives" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5aa998a1e70ebf8cf3efa76c4562ef36038cc88b4aee60efb708d14273910357" +dependencies = [ + "actix", + "anyhow", + "borsh", + "chrono", + "near-crypto 0.14.0", + "near-primitives 0.14.0", + "serde", + "strum", + "tokio 1.21.1", + "tracing", +] + +[[package]] +name = "near-primitives" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0a2ba19282e79a4485a77736b679d276b09870bbf8042a18e0f0ae36347489c5" +dependencies = [ + "borsh", + "byteorder", + "bytesize", + "chrono", + "derive_more", + "easy-ext", + "hex 0.4.3", + "near-crypto 0.13.0", + "near-primitives-core 0.13.0", + "near-rpc-error-macro 0.13.0", + "near-vm-errors 0.13.0", + "num-rational", + "once_cell", + "primitive-types 0.10.1", + "rand 0.7.3", + "reed-solomon-erasure", + "serde", + "serde_json", + "smart-default", + "strum", + "thiserror", +] + +[[package]] +name = "near-primitives" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ad1a9a1640539c81f065425c31bffcfbf6b31ef1aeaade59ce905f5df6ac860" +dependencies = [ + "borsh", + "byteorder", + "bytesize", + "chrono", + "derive_more", + "easy-ext", + "hex 0.4.3", + "near-crypto 0.14.0", + "near-primitives-core 0.14.0", + "near-rpc-error-macro 0.14.0", + "near-vm-errors 0.14.0", + "num-rational", + "once_cell", + "primitive-types 0.10.1", + "rand 0.7.3", + "reed-solomon-erasure", + "serde", + "serde_json", + "smart-default", + "strum", + "thiserror", +] + +[[package]] +name = "near-primitives-core" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb561feb392bb8c4f540256073446e6689af087bf6356e8dddcf75fc279f201f" +dependencies = [ + "base64 0.11.0", + "borsh", + "bs58", + "derive_more", + "near-account-id 0.13.0", + "num-rational", + "serde", + "sha2 0.10.6", + "strum", +] + +[[package]] +name = "near-primitives-core" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91d508f0fc340f6461e4e256417685720d3c4c00bb5a939b105160e49137caba" +dependencies = [ + "base64 0.11.0", + "borsh", + "bs58", + "derive_more", + "near-account-id 0.14.0", + "num-rational", + "serde", + "sha2 0.10.6", + "strum", +] + +[[package]] +name = "near-rpc-error-core" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77fdd7ea8d8f786878651c37691515d5053f827ae60894aa40c16882b78f77c9" +dependencies = [ + "quote", + "serde", + "syn", +] + +[[package]] +name = "near-rpc-error-core" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93ee0b41c75ef859c193a8ff1dadfa0c8207bc0ac447cc22259721ad769a1408" +dependencies = [ + "quote", + "serde", + "syn", +] + +[[package]] +name = "near-rpc-error-macro" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e521842b6ae864dfe5391afbbe2df9e9d8427c26e9333b2e0b65cd42094f7607" +dependencies = [ + "near-rpc-error-core 0.13.0", + "serde", + "syn", +] + +[[package]] +name = "near-rpc-error-macro" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e837bd4bacd807073ec5ceb85708da7f721b46a4c2a978de86027fb0034ce31" +dependencies = [ + "near-rpc-error-core 0.14.0", + "serde", + "syn", +] + +[[package]] +name = "near-sandbox-utils" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e4cf1e2b801709b9fe36806a3895ff63e85b37746b562bb8e4d266c7286b94d6" +dependencies = [ + "anyhow", + "async-process", + "binary-install", + "chrono", + "hex 0.3.2", + "home", +] + +[[package]] +name = "near-sdk" +version = "4.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bda34e06e28fb9a09ac54efbdc49f0c9308780fc932aaa81c49c493fde974045" +dependencies = [ + "base64 0.13.0", + "borsh", + "bs58", + "near-crypto 0.13.0", + "near-primitives 0.13.0", + "near-primitives-core 0.13.0", + "near-sdk-macros", + "near-sys", + "near-vm-logic", + "serde", + "serde_json", + "wee_alloc", +] + +[[package]] +name = "near-sdk-macros" +version = "4.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72064fcc15a623a0d40a6c199ea5cbdc30a83cae4816889d46f218acf31bfba8" +dependencies = [ + "Inflector", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "near-sys" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e307313276eaeced2ca95740b5639e1f3125b7c97f0a1151809d105f1aa8c6d3" + +[[package]] +name = "near-vm-errors" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0e02faf2bc1f6ef82b965cfe44389808fb5594f7aca4b596766117f4ce74df20" +dependencies = [ + "borsh", + "near-account-id 0.13.0", + "near-rpc-error-macro 0.13.0", + "serde", +] + +[[package]] +name = "near-vm-errors" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d0da466a30f0446639cbd788c30865086fac3e8dcb07a79e51d2b0775ed4261e" +dependencies = [ + "borsh", + "near-account-id 0.14.0", + "near-rpc-error-macro 0.14.0", + "serde", +] + +[[package]] +name = "near-vm-logic" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f024d90451cd3c24d7a0a5cabf3636b192a60eb8e3ff0456f6c18b91152c346d" +dependencies = [ + "base64 0.13.0", + "borsh", + "bs58", + "byteorder", + "near-account-id 0.13.0", + "near-crypto 0.13.0", + "near-primitives 0.13.0", + "near-primitives-core 0.13.0", + "near-vm-errors 0.13.0", + "ripemd", + "serde", + "sha2 0.10.6", + "sha3", +] + +[[package]] +name = "net2" +version = "0.2.37" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "391630d12b68002ae1e25e8f974306474966550ad82dac6886fb8910c19568ae" +dependencies = [ + "cfg-if 0.1.10", + "libc", + "winapi 0.3.9", +] + +[[package]] +name = "num-bigint" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f6f7833f2cbf2360a6cfd58cd41a53aa7a90bd4c202f5b1c7dd2ed73c57b2c3" +dependencies = [ + "autocfg", + "num-integer", + "num-traits", +] + +[[package]] +name = "num-bigint" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f93ab6289c7b344a8a9f60f88d80aa20032336fe78da341afc91c8a2341fc75f" +dependencies = [ + "autocfg", + "num-integer", + "num-traits", +] + +[[package]] +name = "num-integer" +version = "0.1.45" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "225d3389fb3509a24c93f5c29eb6bde2586b98d9f016636dff58d7c6f7569cd9" +dependencies = [ + "autocfg", + "num-traits", +] + +[[package]] +name = "num-rational" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "12ac428b1cb17fce6f731001d307d351ec70a6d202fc2e60f7d4c5e42d8f4f07" +dependencies = [ + "autocfg", + "num-bigint 0.3.3", + "num-integer", + "num-traits", + "serde", +] + +[[package]] +name = "num-traits" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "578ede34cf02f8924ab9447f50c28075b4d3e5b269972345e7e0372b38c6cdcd" +dependencies = [ + "autocfg", +] + +[[package]] +name = "num_cpus" +version = "1.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "19e64526ebdee182341572e50e9ad03965aa510cd94427a4549448f285e957a1" +dependencies = [ + "hermit-abi", + "libc", +] + +[[package]] +name = "object" +version = "0.29.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "21158b2c33aa6d4561f1c0a6ea283ca92bc54802a93b263e910746d679a7eb53" +dependencies = [ + "memchr", +] + +[[package]] +name = "once_cell" +version = "1.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e82dad04139b71a90c080c8463fe0dc7902db5192d939bd0950f074d014339e1" + +[[package]] +name = "opaque-debug" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "624a8340c38c1b80fd549087862da4ba43e08858af025b236e509b6649fc13d5" + +[[package]] +name = "openssl" +version = "0.10.41" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "618febf65336490dfcf20b73f885f5651a0c89c64c2d4a8c3662585a70bf5bd0" +dependencies = [ + "bitflags", + "cfg-if 1.0.0", + "foreign-types", + "libc", + "once_cell", + "openssl-macros", + "openssl-sys", +] + +[[package]] +name = "openssl-macros" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b501e44f11665960c7e7fcf062c7d96a14ade4aa98116c004b2e37b5be7d736c" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "openssl-probe" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" + +[[package]] +name = "openssl-sys" +version = "0.9.75" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5f9bd0c2710541a3cda73d6f9ac4f1b240de4ae261065d309dbe73d9dceb42f" +dependencies = [ + "autocfg", + "cc", + "libc", + "pkg-config", + "vcpkg", +] + +[[package]] +name = "os_str_bytes" +version = "6.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ff7415e9ae3fff1225851df9e0d9e4e5479f947619774677a63572e55e80eff" + +[[package]] +name = "parity-scale-codec" +version = "1.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4b26b16c7687c3075982af47719e481815df30bc544f7a6690763a25ca16e9d" +dependencies = [ + "arrayvec 0.5.2", + "bitvec 0.17.4", + "byte-slice-cast 0.3.5", + "serde", +] + +[[package]] +name = "parity-scale-codec" +version = "2.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "373b1a4c1338d9cd3d1fa53b3a11bdab5ab6bd80a20f7f7becd76953ae2be909" +dependencies = [ + "arrayvec 0.7.2", + "bitvec 0.20.4", + "byte-slice-cast 1.2.1", + "impl-trait-for-tuples", + "parity-scale-codec-derive", + "serde", +] + +[[package]] +name = "parity-scale-codec-derive" +version = "2.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1557010476e0595c9b568d16dcfb81b93cdeb157612726f5170d31aa707bed27" +dependencies = [ + "proc-macro-crate 1.2.1", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "parity-secp256k1" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4fca4f82fccae37e8bbdaeb949a4a218a1bbc485d11598f193d2a908042e5fc1" +dependencies = [ + "arrayvec 0.5.2", + "cc", + "cfg-if 0.1.10", + "rand 0.7.3", +] + +[[package]] +name = "parking" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "427c3892f9e783d91cc128285287e70a59e206ca452770ece88a76f7a3eddd72" + +[[package]] +name = "parking_lot" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f" +dependencies = [ + "lock_api", + "parking_lot_core", +] + +[[package]] +name = "parking_lot_core" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09a279cbf25cb0757810394fbc1e359949b59e348145c643a939a525692e6929" +dependencies = [ + "cfg-if 1.0.0", + "libc", + "redox_syscall 0.2.16", + "smallvec", + "windows-sys", +] + +[[package]] +name = "percent-encoding" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "478c572c3d73181ff3c2539045f6eb99e5491218eae919370993b890cdbdd98e" + +[[package]] +name = "pin-project" +version = "0.4.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3ef0f924a5ee7ea9cbcea77529dba45f8a9ba9f622419fe3386ca581a3ae9d5a" +dependencies = [ + "pin-project-internal 0.4.30", +] + +[[package]] +name = "pin-project" +version = "1.0.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ad29a609b6bcd67fee905812e544992d216af9d755757c05ed2d0e15a74c6ecc" +dependencies = [ + "pin-project-internal 1.0.12", +] + +[[package]] +name = "pin-project-internal" +version = "0.4.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "851c8d0ce9bebe43790dedfc86614c23494ac9f423dd618d3a61fc693eafe61e" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "pin-project-internal" +version = "1.0.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "069bdb1e05adc7a8990dce9cc75370895fbe4e3d58b9b73bf1aee56359344a55" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "pin-project-lite" +version = "0.1.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "257b64915a082f7811703966789728173279bdebb956b143dbcd23f6f970a777" + +[[package]] +name = "pin-project-lite" +version = "0.2.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e0a7ae3ac2f1173085d398531c705756c94a4c56843785df85a60c1a0afac116" + +[[package]] +name = "pin-utils" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" + +[[package]] +name = "pkg-config" +version = "0.3.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1df8c4ec4b0627e53bdf214615ad287367e482558cf84b109250b37464dc03ae" + +[[package]] +name = "polling" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "899b00b9c8ab553c743b3e11e87c5c7d423b2a2de229ba95b24a756344748011" +dependencies = [ + "autocfg", + "cfg-if 1.0.0", + "libc", + "log", + "wepoll-ffi", + "winapi 0.3.9", +] + +[[package]] +name = "portpicker" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "be97d76faf1bfab666e1375477b23fde79eccf0276e9b63b92a39d676a889ba9" +dependencies = [ + "rand 0.8.5", +] + +[[package]] +name = "ppv-lite86" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eb9f9e6e233e5c4a35559a617bf40a4ec447db2e84c20b55a6f83167b7e57872" + +[[package]] +name = "primitive-types" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7dd39dcacf71411ba488570da7bbc89b717225e46478b30ba99b92db6b149809" +dependencies = [ + "fixed-hash 0.6.1", + "impl-codec 0.4.2", + "impl-rlp", + "impl-serde", + "uint 0.8.5", +] + +[[package]] +name = "primitive-types" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05e4722c697a58a99d5d06a08c30821d7c082a4632198de1eaa5a6c22ef42373" +dependencies = [ + "fixed-hash 0.7.0", + "impl-codec 0.5.1", + "uint 0.9.4", +] + +[[package]] +name = "proc-macro-crate" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d6ea3c4595b96363c13943497db34af4460fb474a95c43f4446ad341b8c9785" +dependencies = [ + "toml", +] + +[[package]] +name = "proc-macro-crate" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eda0fc3b0fb7c975631757e14d9049da17374063edb6ebbcbc54d880d4fe94e9" +dependencies = [ + "once_cell", + "thiserror", + "toml", +] + +[[package]] +name = "proc-macro-error" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" +dependencies = [ + "proc-macro-error-attr", + "proc-macro2", + "quote", + "syn", + "version_check", +] + +[[package]] +name = "proc-macro-error-attr" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" +dependencies = [ + "proc-macro2", + "quote", + "version_check", +] + +[[package]] +name = "proc-macro2" +version = "1.0.43" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0a2ca2c61bc9f3d74d2886294ab7b9853abd9c1ad903a3ac7815c58989bb7bab" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "procfs" +version = "0.7.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c434e93ef69c216e68e4f417c927b4f31502c3560b72cfdb6827e2321c5c6b3e" +dependencies = [ + "bitflags", + "byteorder", + "hex 0.4.3", + "lazy_static", + "libc", + "libflate", +] + +[[package]] +name = "prometheus" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd0ced56dee39a6e960c15c74dc48849d614586db2eaada6497477af7c7811cd" +dependencies = [ + "cfg-if 0.1.10", + "fnv", + "lazy_static", + "libc", + "procfs", + "protobuf", + "spin", + "thiserror", +] + +[[package]] +name = "protobuf" +version = "2.27.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf7e6d18738ecd0902d30d1ad232c9125985a3422929b16c65517b38adc14f96" + +[[package]] +name = "quick-error" +version = "1.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0" + +[[package]] +name = "quote" +version = "1.0.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbe448f377a7d6961e30f5955f9b8d106c3f5e449d493ee1b125c1d43c2b5179" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "radium" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "def50a86306165861203e7f84ecffbbdfdea79f0e51039b33de1e952358c47ac" + +[[package]] +name = "radium" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "643f8f41a8ebc4c5dc4515c82bb8abd397b527fc20fd681b7c011c2aee5d44fb" + +[[package]] +name = "radium" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc33ff2d4973d518d823d61aa239014831e521c75da58e3df4840d3f47749d09" + +[[package]] +name = "rand" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03" +dependencies = [ + "getrandom 0.1.16", + "libc", + "rand_chacha 0.2.2", + "rand_core 0.5.1", + "rand_hc", +] + +[[package]] +name = "rand" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" +dependencies = [ + "libc", + "rand_chacha 0.3.1", + "rand_core 0.6.4", +] + +[[package]] +name = "rand_chacha" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4c8ed856279c9737206bf725bf36935d8666ead7aa69b52be55af369d193402" +dependencies = [ + "ppv-lite86", + "rand_core 0.5.1", +] + +[[package]] +name = "rand_chacha" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" +dependencies = [ + "ppv-lite86", + "rand_core 0.6.4", +] + +[[package]] +name = "rand_core" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19" +dependencies = [ + "getrandom 0.1.16", +] + +[[package]] +name = "rand_core" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" +dependencies = [ + "getrandom 0.2.7", +] + +[[package]] +name = "rand_hc" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c" +dependencies = [ + "rand_core 0.5.1", +] + +[[package]] +name = "rand_xorshift" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d25bf25ec5ae4a3f1b92f929810509a2f53d7dca2f50b794ff57e3face536c8f" +dependencies = [ + "rand_core 0.6.4", +] + +[[package]] +name = "rayon" +version = "1.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd99e5772ead8baa5215278c9b15bf92087709e9c1b2d1f97cdb5a183c933a7d" +dependencies = [ + "autocfg", + "crossbeam-deque", + "either", + "rayon-core", +] + +[[package]] +name = "rayon-core" +version = "1.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "258bcdb5ac6dad48491bb2992db6b7cf74878b0384908af124823d118c99683f" +dependencies = [ + "crossbeam-channel", + "crossbeam-deque", + "crossbeam-utils", + "num_cpus", +] + +[[package]] +name = "redox_syscall" +version = "0.1.57" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41cc0f7e4d5d4544e8861606a285bb08d3e70712ccc7d2b84d7c0ccfaf4b05ce" + +[[package]] +name = "redox_syscall" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fb5a58c1855b4b6819d59012155603f0b22ad30cad752600aadfcb695265519a" +dependencies = [ + "bitflags", +] + +[[package]] +name = "redox_users" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "de0737333e7a9502c789a36d7c7fa6092a49895d4faa31ca5df163857ded2e9d" +dependencies = [ + "getrandom 0.1.16", + "redox_syscall 0.1.57", + "rust-argon2", +] + +[[package]] +name = "redox_users" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b033d837a7cf162d7993aded9304e30a83213c648b6e389db233191f891e5c2b" +dependencies = [ + "getrandom 0.2.7", + "redox_syscall 0.2.16", + "thiserror", +] + +[[package]] +name = "reed-solomon-erasure" +version = "4.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a415a013dd7c5d4221382329a5a3482566da675737494935cbbbcdec04662f9d" +dependencies = [ + "smallvec", +] + +[[package]] +name = "regex" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c4eb3267174b8c6c2f654116623910a0fef09c4753f8dd83db29c48a0df988b" +dependencies = [ + "aho-corasick", + "memchr", + "regex-syntax", +] + +[[package]] +name = "regex-syntax" +version = "0.6.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a3f87b73ce11b1619a3c6332f45341e0047173771e8b8b73f87bfeefb7b56244" + +[[package]] +name = "remove_dir_all" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3acd125665422973a33ac9d3dd2df85edad0f4ae9b00dafb1a05e43a9f5ef8e7" +dependencies = [ + "winapi 0.3.9", +] + +[[package]] +name = "reqwest" +version = "0.11.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "431949c384f4e2ae07605ccaa56d1d9d2ecdb5cadd4f9577ccfab29f2e5149fc" +dependencies = [ + "base64 0.13.0", + "bytes 1.2.1", + "encoding_rs", + "futures-core", + "futures-util", + "h2 0.3.14", + "http", + "http-body 0.4.5", + "hyper 0.14.20", + "hyper-tls", + "ipnet", + "js-sys", + "log", + "mime", + "native-tls", + "once_cell", + "percent-encoding", + "pin-project-lite 0.2.9", + "serde", + "serde_json", + "serde_urlencoded 0.7.1", + "tokio 1.21.1", + "tokio-native-tls", + "tower-service", + "url", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", + "winreg", +] + +[[package]] +name = "ring" +version = "0.16.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3053cf52e236a3ed746dfc745aa9cacf1b791d846bdaf412f60a8d7d6e17c8fc" +dependencies = [ + "cc", + "libc", + "once_cell", + "spin", + "untrusted", + "web-sys", + "winapi 0.3.9", +] + +[[package]] +name = "ripemd" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "74e2ee464e763f6527991a6d532142e3c2016eb9907cc081401c11862c26a840" +dependencies = [ + "digest 0.10.5", +] + +[[package]] +name = "rle-decode-fast" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3582f63211428f83597b51b2ddb88e2a91a9d52d12831f9d08f5e624e8977422" + +[[package]] +name = "rlp" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1190dcc8c3a512f1eef5d09bb8c84c7f39e1054e174d1795482e18f5272f2e73" +dependencies = [ + "rustc-hex", +] + +[[package]] +name = "rlp-derive" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e33d7b2abe0c340d8797fe2907d3f20d3b5ea5908683618bfe80df7f621f672a" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "rusqlite" +version = "0.25.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c4b1eaf239b47034fb450ee9cdedd7d0226571689d8823030c4b6c2cb407152" +dependencies = [ + "bitflags", + "fallible-iterator", + "fallible-streaming-iterator", + "hashlink", + "libsqlite3-sys", + "memchr", + "smallvec", +] + +[[package]] +name = "rust-argon2" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4b18820d944b33caa75a71378964ac46f58517c92b6ae5f762636247c09e78fb" +dependencies = [ + "base64 0.13.0", + "blake2b_simd", + "constant_time_eq", + "crossbeam-utils", +] + +[[package]] +name = "rustc-demangle" +version = "0.1.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ef03e0a2b150c7a90d01faf6254c9c48a41e95fb2a8c2ac1c6f0d2b9aefc342" + +[[package]] +name = "rustc-hex" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3e75f6a532d0fd9f7f13144f392b6ad56a32696bfcd9c78f797f16bbb6f072d6" + +[[package]] +name = "rustc_version" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366" +dependencies = [ + "semver", +] + +[[package]] +name = "rustversion" +version = "1.0.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97477e48b4cf8603ad5f7aaf897467cf42ab4218a38ef76fb14c2d6773a6d6a8" + +[[package]] +name = "ryu" +version = "1.0.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4501abdff3ae82a1c1b477a17252eb69cee9e66eb915c1abaa4f44d873df9f09" + +[[package]] +name = "safe_arith" +version = "0.1.0" +source = "git+https://github.com/aurora-is-near/lighthouse.git?rev=b624c3f0d3c5bc9ea46faa14c9cb2d90ee1e1dec#b624c3f0d3c5bc9ea46faa14c9cb2d90ee1e1dec" + +[[package]] +name = "safemem" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef703b7cb59335eae2eb93ceb664c0eb7ea6bf567079d843e09420219668e072" + +[[package]] +name = "schannel" +version = "0.1.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "88d6731146462ea25d9244b2ed5fd1d716d25c52e4d54aa4fb0f3c4e9854dbe2" +dependencies = [ + "lazy_static", + "windows-sys", +] + +[[package]] +name = "scoped-tls" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ea6a9290e3c9cf0f18145ef7ffa62d68ee0bf5fcd651017e586dc7fd5da448c2" + +[[package]] +name = "scopeguard" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd" + +[[package]] +name = "security-framework" +version = "2.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2bc1bb97804af6631813c55739f771071e0f2ed33ee20b68c86ec505d906356c" +dependencies = [ + "bitflags", + "core-foundation", + "core-foundation-sys", + "libc", + "security-framework-sys", +] + +[[package]] +name = "security-framework-sys" +version = "2.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0160a13a177a45bfb43ce71c01580998474f556ad854dcbca936dd2841a5c556" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "semver" +version = "1.0.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e25dfac463d778e353db5be2449d1cce89bd6fd23c9f1ea21310ce6e5a1b29c4" + +[[package]] +name = "serde" +version = "1.0.144" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0f747710de3dcd43b88c9168773254e809d8ddbdf9653b84e2554ab219f17860" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde-big-array" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3323f09a748af288c3dc2474ea6803ee81f118321775bffa3ac8f7e65c5e90e7" +dependencies = [ + "serde", +] + +[[package]] +name = "serde_derive" +version = "1.0.144" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94ed3a816fb1d101812f83e789f888322c34e291f894f19590dc310963e87a00" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "serde_json" +version = "1.0.85" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e55a28e3aaef9d5ce0506d0a14dbba8054ddc7e499ef522dd8b26859ec9d4a44" +dependencies = [ + "itoa 1.0.3", + "ryu", + "serde", +] + +[[package]] +name = "serde_urlencoded" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ec5d77e2d4c73717816afac02670d5c4f534ea95ed430442cad02e7a6e32c97" +dependencies = [ + "dtoa", + "itoa 0.4.8", + "serde", + "url", +] + +[[package]] +name = "serde_urlencoded" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" +dependencies = [ + "form_urlencoded", + "itoa 1.0.3", + "ryu", + "serde", +] + +[[package]] +name = "serde_with" +version = "1.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "678b5a069e50bf00ecd22d0cd8ddf7c236f68581b03db652061ed5eb13a312ff" +dependencies = [ + "serde", + "serde_with_macros", +] + +[[package]] +name = "serde_with_macros" +version = "1.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e182d6ec6f05393cc0e5ed1bf81ad6db3a8feedf8ee515ecdd369809bcce8082" +dependencies = [ + "darling", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "serde_yaml" +version = "0.8.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "578a7433b776b56a35785ed5ce9a7e777ac0598aac5a6dd1b4b18a307c7fc71b" +dependencies = [ + "indexmap", + "ryu", + "serde", + "yaml-rust", +] + +[[package]] +name = "sha-1" +version = "0.9.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "99cd6713db3cf16b6c84e06321e049a9b9f699826e16096d23bbcc44d15d51a6" +dependencies = [ + "block-buffer 0.9.0", + "cfg-if 1.0.0", + "cpufeatures", + "digest 0.9.0", + "opaque-debug", +] + +[[package]] +name = "sha1" +version = "0.10.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f04293dc80c3993519f2d7f6f511707ee7094fe0c6d3406feb330cdb3540eba3" +dependencies = [ + "cfg-if 1.0.0", + "cpufeatures", + "digest 0.10.5", +] + +[[package]] +name = "sha2" +version = "0.9.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4d58a1e1bf39749807d89cf2d98ac2dfa0ff1cb3faa38fbb64dd88ac8013d800" +dependencies = [ + "block-buffer 0.9.0", + "cfg-if 1.0.0", + "cpufeatures", + "digest 0.9.0", + "opaque-debug", +] + +[[package]] +name = "sha2" +version = "0.10.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "82e6b795fe2e3b1e845bafcb27aa35405c4d47cdfc92af5fc8d3002f76cebdc0" +dependencies = [ + "cfg-if 1.0.0", + "cpufeatures", + "digest 0.10.5", +] + +[[package]] +name = "sha3" +version = "0.10.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2904bea16a1ae962b483322a1c7b81d976029203aea1f461e51cd7705db7ba9" +dependencies = [ + "digest 0.10.5", + "keccak", +] + +[[package]] +name = "signal-hook" +version = "0.3.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a253b5e89e2698464fc26b545c9edceb338e18a89effeeecfea192c3025be29d" +dependencies = [ + "libc", + "signal-hook-registry", +] + +[[package]] +name = "signal-hook-registry" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e51e73328dc4ac0c7ccbda3a494dfa03df1de2f46018127f60c693f2648455b0" +dependencies = [ + "libc", +] + +[[package]] +name = "signature" +version = "1.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "deb766570a2825fa972bceff0d195727876a9cdf2460ab2e52d455dc2de47fd9" + +[[package]] +name = "siphasher" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b8de496cf83d4ed58b6be86c3a275b8602f6ffe98d3024a869e124147a9a3ac" + +[[package]] +name = "slab" +version = "0.4.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4614a76b2a8be0058caa9dbbaf66d988527d86d003c11a94fbd335d7661edcef" +dependencies = [ + "autocfg", +] + +[[package]] +name = "slog" +version = "2.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8347046d4ebd943127157b94d63abb990fcf729dc4e9978927fdf4ac3c998d06" + +[[package]] +name = "smallvec" +version = "1.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2fd0db749597d91ff862fd1d55ea87f7855a744a8425a64695b6fca237d1dad1" + +[[package]] +name = "smart-default" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "133659a15339456eeeb07572eb02a91c91e9815e9cbc89566944d2c8d3efdbf6" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "socket2" +version = "0.3.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "122e570113d28d773067fab24266b66753f6ea915758651696b6e35e49f88d6e" +dependencies = [ + "cfg-if 1.0.0", + "libc", + "winapi 0.3.9", +] + +[[package]] +name = "socket2" +version = "0.4.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "02e2d2db9033d13a1567121ddd7a095ee144db4e1ca1b1bda3419bc0da294ebd" +dependencies = [ + "libc", + "winapi 0.3.9", +] + +[[package]] +name = "spin" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042d" + +[[package]] +name = "static_assertions" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" + +[[package]] +name = "strsim" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623" + +[[package]] +name = "strum" +version = "0.24.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "063e6045c0e62079840579a7e47a355ae92f60eb74daaf156fb1e84ba164e63f" +dependencies = [ + "strum_macros", +] + +[[package]] +name = "strum_macros" +version = "0.24.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e385be0d24f186b4ce2f9982191e7101bb737312ad61c1f2f984f34bcf85d59" +dependencies = [ + "heck", + "proc-macro2", + "quote", + "rustversion", + "syn", +] + +[[package]] +name = "subtle" +version = "2.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6bdef32e8150c2a081110b42772ffe7d7c9032b606bc226c8260fd97e0976601" + +[[package]] +name = "superstruct" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95a99807a055ff4ff5d249bb84c80d9eabb55ca3c452187daae43fd5b51ef695" +dependencies = [ + "darling", + "itertools", + "proc-macro2", + "quote", + "smallvec", + "syn", +] + +[[package]] +name = "swap_or_not_shuffle" +version = "0.2.0" +source = "git+https://github.com/aurora-is-near/lighthouse.git?rev=b624c3f0d3c5bc9ea46faa14c9cb2d90ee1e1dec#b624c3f0d3c5bc9ea46faa14c9cb2d90ee1e1dec" +dependencies = [ + "eth2_hashing", + "ethereum-types", +] + +[[package]] +name = "syn" +version = "1.0.100" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "52205623b1b0f064a4e71182c3b18ae902267282930c6d5462c91b859668426e" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "synstructure" +version = "0.12.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f36bdaa60a83aca3921b5259d5400cbf5e90fc51931376a9bd4a0eb79aa7210f" +dependencies = [ + "proc-macro2", + "quote", + "syn", + "unicode-xid", +] + +[[package]] +name = "tap" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" + +[[package]] +name = "tar" +version = "0.4.38" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4b55807c0344e1e6c04d7c965f5289c39a8d94ae23ed5c0b57aabac549f871c6" +dependencies = [ + "filetime", + "libc", + "xattr", +] + +[[package]] +name = "tempfile" +version = "3.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5cdb1ef4eaeeaddc8fbd371e5017057064af0911902ef36b39801f67cc6d79e4" +dependencies = [ + "cfg-if 1.0.0", + "fastrand", + "libc", + "redox_syscall 0.2.16", + "remove_dir_all", + "winapi 0.3.9", +] + +[[package]] +name = "termcolor" +version = "1.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bab24d30b911b2376f3a13cc2cd443142f0c81dda04c118693e35b3835757755" +dependencies = [ + "winapi-util", +] + +[[package]] +name = "test_random_derive" +version = "0.2.0" +source = "git+https://github.com/aurora-is-near/lighthouse.git?rev=b624c3f0d3c5bc9ea46faa14c9cb2d90ee1e1dec#b624c3f0d3c5bc9ea46faa14c9cb2d90ee1e1dec" +dependencies = [ + "quote", + "syn", +] + +[[package]] +name = "textwrap" +version = "0.15.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "949517c0cf1bf4ee812e2e07e08ab448e3ae0d23472aee8a06c985f0c8815b16" + +[[package]] +name = "thiserror" +version = "1.0.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c53f98874615aea268107765aa1ed8f6116782501d18e53d08b471733bea6c85" +dependencies = [ + "thiserror-impl", +] + +[[package]] +name = "thiserror-impl" +version = "1.0.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8b463991b4eab2d801e724172285ec4195c650e8ec79b149e6c2a8e6dd3f783" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "thread" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "afe9c0e959dd1e7b871071b51bc674380d1889cd4fed9f4b3b1f5c1772d9f796" + +[[package]] +name = "threadpool" +version = "1.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d050e60b33d41c19108b32cea32164033a9013fe3b46cbd4457559bfbf77afaa" +dependencies = [ + "num_cpus", +] + +[[package]] +name = "time" +version = "0.1.44" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6db9e6914ab8b1ae1c260a4ae7a49b6c5611b40328a735b21862567685e73255" +dependencies = [ + "libc", + "wasi 0.10.0+wasi-snapshot-preview1", + "winapi 0.3.9", +] + +[[package]] +name = "tiny-keccak" +version = "2.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2c9d3793400a45f954c52e73d068316d76b6f4e36977e3fcebb13a2721e80237" +dependencies = [ + "crunchy", +] + +[[package]] +name = "tinyvec" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50" +dependencies = [ + "tinyvec_macros", +] + +[[package]] +name = "tinyvec_macros" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cda74da7e1a664f795bb1f8a87ec406fb89a02522cf6e50620d016add6dbbf5c" + +[[package]] +name = "tokio" +version = "0.2.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6703a273949a90131b290be1fe7b039d0fc884aa1935860dfcbe056f28cd8092" +dependencies = [ + "bytes 0.5.6", + "fnv", + "futures-core", + "iovec", + "lazy_static", + "memchr", + "mio 0.6.23", + "pin-project-lite 0.1.12", + "slab", +] + +[[package]] +name = "tokio" +version = "1.21.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0020c875007ad96677dcc890298f4b942882c5d4eb7cc8f439fc3bf813dc9c95" +dependencies = [ + "autocfg", + "bytes 1.2.1", + "libc", + "memchr", + "mio 0.8.4", + "num_cpus", + "once_cell", + "parking_lot", + "pin-project-lite 0.2.9", + "signal-hook-registry", + "socket2 0.4.7", + "tokio-macros", + "winapi 0.3.9", +] + +[[package]] +name = "tokio-macros" +version = "1.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9724f9a975fb987ef7a3cd9be0350edcbe130698af5b8f7a631e23d42d052484" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "tokio-native-tls" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f7d995660bd2b7f8c1568414c1126076c13fbb725c40112dc0120b78eb9b717b" +dependencies = [ + "native-tls", + "tokio 1.21.1", +] + +[[package]] +name = "tokio-retry" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f57eb36ecbe0fc510036adff84824dd3c24bb781e21bfa67b69d556aa85214f" +dependencies = [ + "pin-project 1.0.12", + "rand 0.8.5", + "tokio 1.21.1", +] + +[[package]] +name = "tokio-tungstenite" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d9e878ad426ca286e4dcae09cbd4e1973a7f8987d97570e2469703dd7f5720c" +dependencies = [ + "futures-util", + "log", + "pin-project 0.4.30", + "tokio 0.2.25", + "tungstenite", +] + +[[package]] +name = "tokio-util" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "be8242891f2b6cbef26a2d7e8605133c2c554cd35b3e4948ea892d6d68436499" +dependencies = [ + "bytes 0.5.6", + "futures-core", + "futures-sink", + "log", + "pin-project-lite 0.1.12", + "tokio 0.2.25", +] + +[[package]] +name = "tokio-util" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0bb2e075f03b3d66d8d8785356224ba688d2906a371015e225beeb65ca92c740" +dependencies = [ + "bytes 1.2.1", + "futures-core", + "futures-sink", + "pin-project-lite 0.2.9", + "tokio 1.21.1", + "tracing", +] + +[[package]] +name = "toml" +version = "0.5.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8d82e1a7758622a465f8cee077614c73484dac5b836c02ff6a40d5d1010324d7" +dependencies = [ + "serde", +] + +[[package]] +name = "tower-service" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6bc1c9ce2b5135ac7f93c72918fc37feb872bdc6a5533a8b85eb4b86bfdae52" + +[[package]] +name = "tracing" +version = "0.1.36" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2fce9567bd60a67d08a16488756721ba392f24f29006402881e43b19aac64307" +dependencies = [ + "cfg-if 1.0.0", + "log", + "pin-project-lite 0.2.9", + "tracing-attributes", + "tracing-core", +] + +[[package]] +name = "tracing-attributes" +version = "0.1.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "11c75893af559bc8e10716548bdef5cb2b983f8e637db9d0e15126b61b484ee2" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "tracing-core" +version = "0.1.29" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5aeea4303076558a00714b823f9ad67d58a3bbda1df83d8827d21193156e22f7" +dependencies = [ + "once_cell", +] + +[[package]] +name = "tracing-futures" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97d095ae15e245a057c8e8451bab9b3ee1e1f68e9ba2b4fbc18d0ac5237835f2" +dependencies = [ + "pin-project 1.0.12", + "tracing", +] + +[[package]] +name = "tree_hash" +version = "0.4.1" +source = "git+https://github.com/aurora-is-near/lighthouse.git?rev=b624c3f0d3c5bc9ea46faa14c9cb2d90ee1e1dec#b624c3f0d3c5bc9ea46faa14c9cb2d90ee1e1dec" +dependencies = [ + "eth2_hashing", + "ethereum-types", + "smallvec", +] + +[[package]] +name = "tree_hash_derive" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3cd22d128157837a4434bb51119aef11103f17bfe8c402ce688cf25aa1e608ad" +dependencies = [ + "darling", + "quote", + "syn", +] + +[[package]] +name = "tree_hash_derive" +version = "0.4.0" +source = "git+https://github.com/aurora-is-near/lighthouse.git?rev=b624c3f0d3c5bc9ea46faa14c9cb2d90ee1e1dec#b624c3f0d3c5bc9ea46faa14c9cb2d90ee1e1dec" +dependencies = [ + "darling", + "quote", + "syn", +] + +[[package]] +name = "try-lock" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "59547bce71d9c38b83d9c0e92b6066c4253371f15005def0c30d9657f50c7642" + +[[package]] +name = "tungstenite" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0308d80d86700c5878b9ef6321f020f29b1bb9d5ff3cab25e75e23f3a492a23" +dependencies = [ + "base64 0.12.3", + "byteorder", + "bytes 0.5.6", + "http", + "httparse", + "input_buffer", + "log", + "rand 0.7.3", + "sha-1", + "url", + "utf-8", +] + +[[package]] +name = "twoway" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "59b11b2b5241ba34be09c3cc85a36e56e48f9888862e19cedf23336d35316ed1" +dependencies = [ + "memchr", +] + +[[package]] +name = "typenum" +version = "1.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dcf81ac59edc17cc8697ff311e8f5ef2d99fcbd9817b34cec66f90b6c3dfd987" + +[[package]] +name = "types" +version = "0.2.0" +source = "git+https://github.com/aurora-is-near/lighthouse.git?rev=b624c3f0d3c5bc9ea46faa14c9cb2d90ee1e1dec#b624c3f0d3c5bc9ea46faa14c9cb2d90ee1e1dec" +dependencies = [ + "bls", + "cached_tree_hash", + "compare_fields", + "compare_fields_derive", + "derivative", + "eth2_hashing", + "eth2_interop_keypairs", + "eth2_serde_utils", + "eth2_ssz", + "eth2_ssz_derive 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "eth2_ssz_types", + "ethereum-types", + "hex 0.4.3", + "int_to_bytes", + "itertools", + "lazy_static", + "log", + "parking_lot", + "rand 0.8.5", + "rand_xorshift", + "rayon", + "regex", + "rusqlite", + "safe_arith", + "serde", + "serde_derive", + "serde_json", + "serde_with", + "serde_yaml", + "slog", + "smallvec", + "superstruct", + "swap_or_not_shuffle", + "tempfile", + "test_random_derive", + "tree_hash", + "tree_hash_derive 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "uint" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9db035e67dfaf7edd9aebfe8676afcd63eed53c8a4044fed514c8cccf1835177" +dependencies = [ + "byteorder", + "crunchy", + "rustc-hex", + "static_assertions", +] + +[[package]] +name = "uint" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a45526d29728d135c2900b0d30573fe3ee79fceb12ef534c7bb30e810a91b601" +dependencies = [ + "byteorder", + "crunchy", + "hex 0.4.3", + "static_assertions", +] + +[[package]] +name = "unicase" +version = "2.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "50f37be617794602aabbeee0be4f259dc1778fabe05e2d67ee8f79326d5cb4f6" +dependencies = [ + "version_check", +] + +[[package]] +name = "unicode-bidi" +version = "0.3.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "099b7128301d285f79ddd55b9a83d5e6b9e97c92e0ea0daebee7263e932de992" + +[[package]] +name = "unicode-ident" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dcc811dc4066ac62f84f11307873c4850cb653bfa9b1719cee2bd2204a4bc5dd" + +[[package]] +name = "unicode-normalization" +version = "0.1.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c5713f0fc4b5db668a2ac63cdb7bb4469d8c9fed047b1d0292cc7b0ce2ba921" +dependencies = [ + "tinyvec", +] + +[[package]] +name = "unicode-xid" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f962df74c8c05a667b5ee8bcf162993134c104e96440b663c8daa176dc772d8c" + +[[package]] +name = "untrusted" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a156c684c91ea7d62626509bce3cb4e1d9ed5c4d978f7b4352658f96a4c26b4a" + +[[package]] +name = "url" +version = "2.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d68c799ae75762b8c3fe375feb6600ef5602c883c5d21eb51c09f22b83c4643" +dependencies = [ + "form_urlencoded", + "idna", + "percent-encoding", + "serde", +] + +[[package]] +name = "urlencoding" +version = "1.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a1f0175e03a0973cf4afd476bef05c26e228520400eb1fd473ad417b1c00ffb" + +[[package]] +name = "utf-8" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09cc8ee72d2a9becf2f2febe0205bbed8fc6615b7cb429ad062dc7b7ddd036a9" + +[[package]] +name = "uuid" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bc5cf98d8186244414c848017f0e2676b3fcb46807f6668a97dfe67359a3c4b7" +dependencies = [ + "getrandom 0.2.7", +] + +[[package]] +name = "value-bag" +version = "1.0.0-alpha.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2209b78d1249f7e6f3293657c9779fe31ced465df091bbd433a1cf88e916ec55" +dependencies = [ + "ctor", + "version_check", +] + +[[package]] +name = "vcpkg" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" + +[[package]] +name = "version_check" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" + +[[package]] +name = "waker-fn" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d5b2c62b4012a3e1eca5a7e077d13b3bf498c4073e33ccd58626607748ceeca" + +[[package]] +name = "want" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ce8a968cb1cd110d136ff8b819a556d6fb6d919363c61534f6860c7eb172ba0" +dependencies = [ + "log", + "try-lock", +] + +[[package]] +name = "warp" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f41be6df54c97904af01aa23e613d4521eed7ab23537cede692d4058f6449407" +dependencies = [ + "bytes 0.5.6", + "futures", + "headers", + "http", + "hyper 0.13.10", + "log", + "mime", + "mime_guess", + "multipart", + "pin-project 0.4.30", + "scoped-tls", + "serde", + "serde_json", + "serde_urlencoded 0.6.1", + "tokio 0.2.25", + "tokio-tungstenite", + "tower-service", + "tracing", + "tracing-futures", + "urlencoding", +] + +[[package]] +name = "wasi" +version = "0.9.0+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519" + +[[package]] +name = "wasi" +version = "0.10.0+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a143597ca7c7793eff794def352d41792a93c481eb1042423ff7ff72ba2c31f" + +[[package]] +name = "wasi" +version = "0.11.0+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" + +[[package]] +name = "wasm-bindgen" +version = "0.2.83" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eaf9f5aceeec8be17c128b2e93e031fb8a4d469bb9c4ae2d7dc1888b26887268" +dependencies = [ + "cfg-if 1.0.0", + "wasm-bindgen-macro", +] + +[[package]] +name = "wasm-bindgen-backend" +version = "0.2.83" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c8ffb332579b0557b52d268b91feab8df3615f265d5270fec2a8c95b17c1142" +dependencies = [ + "bumpalo", + "log", + "once_cell", + "proc-macro2", + "quote", + "syn", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-futures" +version = "0.4.33" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23639446165ca5a5de86ae1d8896b737ae80319560fbaa4c2887b7da6e7ebd7d" +dependencies = [ + "cfg-if 1.0.0", + "js-sys", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "wasm-bindgen-macro" +version = "0.2.83" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "052be0f94026e6cbc75cdefc9bae13fd6052cdcaf532fa6c45e7ae33a1e6c810" +dependencies = [ + "quote", + "wasm-bindgen-macro-support", +] + +[[package]] +name = "wasm-bindgen-macro-support" +version = "0.2.83" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "07bc0c051dc5f23e307b13285f9d75df86bfdf816c5721e573dec1f9b8aa193c" +dependencies = [ + "proc-macro2", + "quote", + "syn", + "wasm-bindgen-backend", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-shared" +version = "0.2.83" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1c38c045535d93ec4f0b4defec448e4291638ee608530863b1e2ba115d4fff7f" + +[[package]] +name = "web-sys" +version = "0.3.60" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bcda906d8be16e728fd5adc5b729afad4e444e106ab28cd1c7256e54fa61510f" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "wee_alloc" +version = "0.4.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dbb3b5a6b2bb17cb6ad44a2e68a43e8d2722c997da10e928665c72ec6c0a0b8e" +dependencies = [ + "cfg-if 0.1.10", + "libc", + "memory_units", + "winapi 0.3.9", +] + +[[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.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1c831fbbee9e129a8cf93e7747a82da9d95ba8e16621cae60ec2cdc849bacb7b" +dependencies = [ + "either", + "libc", + "once_cell", +] + +[[package]] +name = "winapi" +version = "0.2.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "167dc9d6949a9b857f3451275e911c3f44255842c1f7a76f33c55103a909087a" + +[[package]] +name = "winapi" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" +dependencies = [ + "winapi-i686-pc-windows-gnu", + "winapi-x86_64-pc-windows-gnu", +] + +[[package]] +name = "winapi-build" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2d315eee3b34aca4797b2da6b13ed88266e6d612562a0c46390af8299fc699bc" + +[[package]] +name = "winapi-i686-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" + +[[package]] +name = "winapi-util" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178" +dependencies = [ + "winapi 0.3.9", +] + +[[package]] +name = "winapi-x86_64-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" + +[[package]] +name = "windows-sys" +version = "0.36.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ea04155a16a59f9eab786fe12a4a450e75cdb175f9e0d80da1e17db09f55b8d2" +dependencies = [ + "windows_aarch64_msvc", + "windows_i686_gnu", + "windows_i686_msvc", + "windows_x86_64_gnu", + "windows_x86_64_msvc", +] + +[[package]] +name = "windows_aarch64_msvc" +version = "0.36.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9bb8c3fd39ade2d67e9874ac4f3db21f0d710bee00fe7cab16949ec184eeaa47" + +[[package]] +name = "windows_i686_gnu" +version = "0.36.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "180e6ccf01daf4c426b846dfc66db1fc518f074baa793aa7d9b9aaeffad6a3b6" + +[[package]] +name = "windows_i686_msvc" +version = "0.36.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2e7917148b2812d1eeafaeb22a97e4813dfa60a3f8f78ebe204bcc88f12f024" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.36.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4dcd171b8776c41b97521e5da127a2d86ad280114807d0b2ab1e462bc764d9e1" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.36.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c811ca4a8c853ef420abd8592ba53ddbbac90410fab6903b3e79972a631f7680" + +[[package]] +name = "winreg" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "80d0f4e272c85def139476380b12f9ac60926689dd2e01d4923222f40580869d" +dependencies = [ + "winapi 0.3.9", +] + +[[package]] +name = "workspaces" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a5b213a32d18d7bd6c1b2775ef365f0f7c41fefae1dc4afe3675b0a314cee806" +dependencies = [ + "anyhow", + "async-trait", + "base64 0.13.0", + "borsh", + "chrono", + "dirs 3.0.2", + "hex 0.4.3", + "libc", + "near-account-id 0.14.0", + "near-crypto 0.14.0", + "near-jsonrpc-client", + "near-jsonrpc-primitives", + "near-primitives 0.14.0", + "near-sandbox-utils", + "portpicker", + "rand 0.8.5", + "reqwest", + "serde", + "serde_json", + "thiserror", + "tokio 1.21.1", + "tokio-retry", + "tracing", + "url", +] + +[[package]] +name = "ws2_32-sys" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d59cefebd0c892fa2dd6de581e937301d8552cb44489cdff035c6187cb63fa5e" +dependencies = [ + "winapi 0.2.8", + "winapi-build", +] + +[[package]] +name = "wyz" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85e60b0d1b5f99db2556934e21937020776a5d31520bf169e851ac44e6420214" + +[[package]] +name = "wyz" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "30b31594f29d27036c383b53b59ed3476874d518f0efb151b27a4c275141390e" +dependencies = [ + "tap", +] + +[[package]] +name = "xattr" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d1526bbe5aaeb5eb06885f4d987bcdfa5e23187055de9b83fe00156a821fabc" +dependencies = [ + "libc", +] + +[[package]] +name = "yaml-rust" +version = "0.4.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56c1936c4cc7a1c9ab21a1ebb602eb942ba868cbd44a99cb7cdc5892335e1c85" +dependencies = [ + "linked-hash-map", +] + +[[package]] +name = "zeroize" +version = "1.5.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c394b5bd0c6f669e7275d9c20aa90ae064cb22e75a1cad54e1b34088034b149f" +dependencies = [ + "zeroize_derive", +] + +[[package]] +name = "zeroize_derive" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f8f187641dad4f680d25c4bfc4225b418165984179f26ca76ec4fb6441d3a17" +dependencies = [ + "proc-macro2", + "quote", + "syn", + "synstructure", +] + +[[package]] +name = "zip" +version = "0.5.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93ab48844d61251bb3835145c521d88aa4031d7139e8485990f60ca911fa0815" +dependencies = [ + "byteorder", + "bzip2", + "crc32fast", + "flate2", + "thiserror", + "time", +] diff --git a/eth2near/eth_rpc_client/Cargo.toml b/eth2near/eth_rpc_client/Cargo.toml new file mode 100644 index 000000000..27c1b072b --- /dev/null +++ b/eth2near/eth_rpc_client/Cargo.toml @@ -0,0 +1,45 @@ +[package] +name = "eth_rpc_client" +version = "0.1.0" +edition = "2021" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] +log = { version = "0.4", features = ["std", "serde"] } +types = { git = "https://github.com/aurora-is-near/lighthouse.git", rev = "b624c3f0d3c5bc9ea46faa14c9cb2d90ee1e1dec" } +tree_hash = { git = "https://github.com/aurora-is-near/lighthouse.git", rev = "b624c3f0d3c5bc9ea46faa14c9cb2d90ee1e1dec" } +merkle_proof = { git = "https://github.com/aurora-is-near/lighthouse.git", rev = "b624c3f0d3c5bc9ea46faa14c9cb2d90ee1e1dec" } +serde_json = "1.0.74" +serde = { version = "1.0", features = ["derive"] } +eth2_hashing = { git = "https://github.com/aurora-is-near/lighthouse.git", rev = "b624c3f0d3c5bc9ea46faa14c9cb2d90ee1e1dec" } +ethereum-types = "0.9.2" +reqwest = { version = "0.11", features = ["blocking"] } +eth2_ssz = { git = "https://github.com/aurora-is-near/lighthouse.git", rev = "b624c3f0d3c5bc9ea46faa14c9cb2d90ee1e1dec" } +eth-types = { path = "../../contracts/near/eth-types/", features = ["eip1559"]} +contract_wrapper = { path = "../contract_wrapper" } +clap = { version = "3.1.6", features = ["derive"] } +tokio = { version = "1.1", features = ["macros", "rt", "time"] } +env_logger = "0.9.0" +borsh = "0.9.3" +futures = { version = "0.3.21", default-features = false } +async-std = "1.12.0" +hex = "*" +toml = "0.5.9" +finality-update-verify = { path = "../finality-update-verify" } +atomic_refcell = "0.1.8" +bitvec = "*" + +prometheus = { version = "0.9", features = ["process"] } +lazy_static = "1.4" +warp = "0.2" +thread = "*" + + +[patch] +[patch.crates-io] +eth2_ssz = { git = "https://github.com/aurora-is-near/lighthouse.git", rev = "b624c3f0d3c5bc9ea46faa14c9cb2d90ee1e1dec" } +eth2_ssz_types = { git = "https://github.com/aurora-is-near/lighthouse.git", rev = "b624c3f0d3c5bc9ea46faa14c9cb2d90ee1e1dec" } +eth2_hashing = { git = "https://github.com/aurora-is-near/lighthouse.git", rev = "b624c3f0d3c5bc9ea46faa14c9cb2d90ee1e1dec" } +tree_hash = { git = "https://github.com/aurora-is-near/lighthouse.git", rev = "b624c3f0d3c5bc9ea46faa14c9cb2d90ee1e1dec" } +eth2_serde_utils = { git = "https://github.com/aurora-is-near/lighthouse.git", rev = "b624c3f0d3c5bc9ea46faa14c9cb2d90ee1e1dec" } diff --git a/eth2near/eth_rpc_client/config_for_tests.toml b/eth2near/eth_rpc_client/config_for_tests.toml new file mode 100644 index 000000000..6fc23432e --- /dev/null +++ b/eth2near/eth_rpc_client/config_for_tests.toml @@ -0,0 +1,9 @@ +beacon_endpoint = "https://lodestar-goerli.chainsafe.io" +eth1_endpoint = "https://goerli.infura.io/v3/API_KEY" +path_to_attested_state_for_period = "./data/beacon_state_goerli_slot_3887699.json" +path_to_finality_state_for_period = "./data/beacon_state_goerli_slot_3887616.json" +first_slot = 3885632 +eth1_number = 0x73cb47 +path_to_block = "./data/beacon_block_goerli_slot_3885632.json" +path_to_header = "./data/beacon_header_goerli_slot_3885632.json" +path_to_light_client_update = "./data/beacon_light_client_update_goerli_period_474.json" \ No newline at end of file diff --git a/eth2near/eth_rpc_client/data/.gitattributes b/eth2near/eth_rpc_client/data/.gitattributes new file mode 100644 index 000000000..e03d8068c --- /dev/null +++ b/eth2near/eth_rpc_client/data/.gitattributes @@ -0,0 +1,2 @@ +beacon_state_goerli_slot_3887699.json filter=lfs diff=lfs merge=lfs -text +beacon_state_goerli_slot_3887616.json filter=lfs diff=lfs merge=lfs -text diff --git a/eth2near/eth2near-block-relay-rs/data/beacon_block_body_kiln_slot_741888.json b/eth2near/eth_rpc_client/data/beacon_block_body_kiln_slot_741888.json similarity index 100% rename from eth2near/eth2near-block-relay-rs/data/beacon_block_body_kiln_slot_741888.json rename to eth2near/eth_rpc_client/data/beacon_block_body_kiln_slot_741888.json diff --git a/eth2near/eth_rpc_client/data/beacon_block_goerli_slot_3885632.json b/eth2near/eth_rpc_client/data/beacon_block_goerli_slot_3885632.json new file mode 100644 index 000000000..121920a55 --- /dev/null +++ b/eth2near/eth_rpc_client/data/beacon_block_goerli_slot_3885632.json @@ -0,0 +1 @@ +{"data":{"message":{"slot":"3885632","proposer_index":"121460","parent_root":"0x0cb13db52b63240d561b36495723229e0424fc72a25e74c02b61ae448a5f6347","state_root":"0xad73703cc94bfa83619e913bb7de2850ff08d613008a74a80df4e6977f23517c","body":{"randao_reveal":"0xb8bfd46b24af04103b22e968e0a6ea1c7c4c4b7281eb3b79f5d99f347deb29ec19aabda2704e1292b00c143ef6507aeb0b9be61fd93a16646f34cda704f9be3af79e20a830e6ca48e30a64e90c42b9b2b0ab88e5000352cfd7e4088b866fcce2","eth1_data":{"deposit_root":"0xeacda316986a42993d085ded4d54f9a0f9f062afc06f8092926812c5becbd9a8","deposit_count":"181273","block_hash":"0xc1b91bb600c27d9e6feaa9499c42f603c07a88876b412b9e3fccd26ade526f48"},"graffiti":"0x74656b752f7632322e392e302b32382d67323566396636610000000000000000","proposer_slashings":[],"attester_slashings":[],"attestations":[{"aggregation_bits":"0x080000000000000000000080000000000000000000000004","data":{"slot":"3885631","index":"22","beacon_block_root":"0x11ad56ef6afea6c1f7d337f6d09213f918edbe2ae0a2dd5c914ed002d348659b","source":{"epoch":"121424","root":"0xd4932a533b2321efbdf14f2f5fb0047ea886bfa442a805f1008c7267fedec51d"},"target":{"epoch":"121425","root":"0xa054b44c76103ba3ba399c401d3c952df7f815c618d742e6c87285dfcb8fadd9"}},"signature":"0xa982bc12e9d6b760bfa164786b35de34ed6310ad2db900a6f0854d8856e4dee5896210b421d9b810eb4e6c1bfd09eb5200a8b20b1f300539edc51f0474ffe6f1ffff09bd573d4fabb123604447af75f38b964fe5740245af6756d69796bd4d04"},{"aggregation_bits":"0x000000000000000000000000000006000000002000040004","data":{"slot":"3885631","index":"59","beacon_block_root":"0x11ad56ef6afea6c1f7d337f6d09213f918edbe2ae0a2dd5c914ed002d348659b","source":{"epoch":"121424","root":"0xd4932a533b2321efbdf14f2f5fb0047ea886bfa442a805f1008c7267fedec51d"},"target":{"epoch":"121425","root":"0xa054b44c76103ba3ba399c401d3c952df7f815c618d742e6c87285dfcb8fadd9"}},"signature":"0x887dc63e56aadaea7bfc74c10a1d12d9a0e378846fcc41a57c1341a88ba0bf40d3d174f0d109b733216b749606f183cd1684d5e0fae451683bcef3335f187667a42d34fda5b15262a6ef02d355508d6c131d5351eaa24f8833ec7bda5180b3bb"},{"aggregation_bits":"0xb7f6dfdd37afdffffdaeff7f6fefeddfffaabef7fffbdf07","data":{"slot":"3885631","index":"57","beacon_block_root":"0x0cb13db52b63240d561b36495723229e0424fc72a25e74c02b61ae448a5f6347","source":{"epoch":"121424","root":"0xd4932a533b2321efbdf14f2f5fb0047ea886bfa442a805f1008c7267fedec51d"},"target":{"epoch":"121425","root":"0xa054b44c76103ba3ba399c401d3c952df7f815c618d742e6c87285dfcb8fadd9"}},"signature":"0xafbe392bcff64895a48a410509ba88c96700c4fa068308921dce463012affc9abb668fd94dce29f5d4a64a2e2e64bc7f039cec161f134cfa77a196dbf72b8fbc2eac75be2f9effea80442a7eb02d5eb27b92f772c23f68073e9f531a90b2a51f"},{"aggregation_bits":"0xffd6ffabe97fdd2fbfeffe7f67ff3ff3ed7feef72ffcbf06","data":{"slot":"3885631","index":"6","beacon_block_root":"0x0cb13db52b63240d561b36495723229e0424fc72a25e74c02b61ae448a5f6347","source":{"epoch":"121424","root":"0xd4932a533b2321efbdf14f2f5fb0047ea886bfa442a805f1008c7267fedec51d"},"target":{"epoch":"121425","root":"0xa054b44c76103ba3ba399c401d3c952df7f815c618d742e6c87285dfcb8fadd9"}},"signature":"0xa76449d46bd9d2de48dc7f158825c11b6f7b20f910290b44382482cb10b2d58c3c3ce00c1bc28871e9a6d5175bac442001922b26dad025864cd47d74434b55ab578177616bf94bbf1f05f304fc954a9ef7c2f108b1e00adb8cb30f6df08d9315"},{"aggregation_bits":"0xf77fffff737f6f2ebefefffbdffbfafd7ffbef3b7ffebd0f","data":{"slot":"3885631","index":"63","beacon_block_root":"0x0cb13db52b63240d561b36495723229e0424fc72a25e74c02b61ae448a5f6347","source":{"epoch":"121424","root":"0xd4932a533b2321efbdf14f2f5fb0047ea886bfa442a805f1008c7267fedec51d"},"target":{"epoch":"121425","root":"0xa054b44c76103ba3ba399c401d3c952df7f815c618d742e6c87285dfcb8fadd9"}},"signature":"0x8c5a5f822dfd5b04aea0d3fee1b1cc543761c426df1e711a96c3ec20297856c66ef9e36a0b3af57e4e8b8d8644087b78170b718b3645497efcc5c82e5d50d8cf4a501c180adfb1b1ba164589f821e16252a4d33d4a3e8317f60c1bff6bb21909"},{"aggregation_bits":"0x400000000000000000000000000012000000000000000004","data":{"slot":"3885631","index":"57","beacon_block_root":"0x11ad56ef6afea6c1f7d337f6d09213f918edbe2ae0a2dd5c914ed002d348659b","source":{"epoch":"121424","root":"0xd4932a533b2321efbdf14f2f5fb0047ea886bfa442a805f1008c7267fedec51d"},"target":{"epoch":"121425","root":"0xa054b44c76103ba3ba399c401d3c952df7f815c618d742e6c87285dfcb8fadd9"}},"signature":"0xaaa846a5255f013a255b20966527b9df94bf714ce35d13cbc309e612f7e042ef155ce9c2c06fc76e700774a4d72289d105a202c713e766e8e601e788b8098105bfb928910c311a401dd92efe7baac033560b65840e1798432f8d7a117e85a2c8"},{"aggregation_bits":"0x000002000000000000000000000000000004000000000004","data":{"slot":"3885631","index":"34","beacon_block_root":"0x11ad56ef6afea6c1f7d337f6d09213f918edbe2ae0a2dd5c914ed002d348659b","source":{"epoch":"121424","root":"0xd4932a533b2321efbdf14f2f5fb0047ea886bfa442a805f1008c7267fedec51d"},"target":{"epoch":"121425","root":"0xa054b44c76103ba3ba399c401d3c952df7f815c618d742e6c87285dfcb8fadd9"}},"signature":"0xa7e9e98e7ae22f2e44d6b5526643919dbd6f0d1f51820397ae8dd10f95d47ed8b4b0b1668d98725926f06a1da8d769610328ff5530ac8704a495368c64863d9b2da45fc7c8f3948374e3e76cb653525e6eaa0d46c53d19030e7b036fc05135b6"},{"aggregation_bits":"0xfff3b6fffffdfc6fddffefbf6cb7fbfffdff7c7fdfaf7707","data":{"slot":"3885631","index":"18","beacon_block_root":"0x0cb13db52b63240d561b36495723229e0424fc72a25e74c02b61ae448a5f6347","source":{"epoch":"121424","root":"0xd4932a533b2321efbdf14f2f5fb0047ea886bfa442a805f1008c7267fedec51d"},"target":{"epoch":"121425","root":"0xa054b44c76103ba3ba399c401d3c952df7f815c618d742e6c87285dfcb8fadd9"}},"signature":"0xa9130e1aa8d0e57da3504e84117b2ecba3fda3bf148ed1b0eab09da18d1f90b87bc5f0bed6fb9680c97b286d0fb461f9080f2a4c33c3fd207c70ebd39e219d6e83cf465c49b1336b4be935e933c8330bf71dd07f27cfb589fd2814a5d7da179a"},{"aggregation_bits":"0xadff734df6fedfb716fefaef7bf7fbfbf6fef71ffd9dfb06","data":{"slot":"3885631","index":"24","beacon_block_root":"0x0cb13db52b63240d561b36495723229e0424fc72a25e74c02b61ae448a5f6347","source":{"epoch":"121424","root":"0xd4932a533b2321efbdf14f2f5fb0047ea886bfa442a805f1008c7267fedec51d"},"target":{"epoch":"121425","root":"0xa054b44c76103ba3ba399c401d3c952df7f815c618d742e6c87285dfcb8fadd9"}},"signature":"0xb1b61f19776d49bec49b40f53b1a1e09c91ddd1d784890742c6a52f30305d64e0b84b6f16a8fb23d3bf6d38a81e2eacc0f1cfaf37e9461fe635e53c4d2974a2e28a75ae522a487bcf16bb90bfa02a620b700b0db90ec405adb67cda1899c3362"},{"aggregation_bits":"0x000000000000002000000000000800000000000000408104","data":{"slot":"3885631","index":"33","beacon_block_root":"0x11ad56ef6afea6c1f7d337f6d09213f918edbe2ae0a2dd5c914ed002d348659b","source":{"epoch":"121424","root":"0xd4932a533b2321efbdf14f2f5fb0047ea886bfa442a805f1008c7267fedec51d"},"target":{"epoch":"121425","root":"0xa054b44c76103ba3ba399c401d3c952df7f815c618d742e6c87285dfcb8fadd9"}},"signature":"0xb4a46260caa1deb8b92dd4766b6d868d22b0c05e915df86c5ff90f8d34af3c82db023cda1e5427eeacef7b84b3f515c609a618588df231499f9145d31a32687aa97a9c55fffc2ecf60279a8119684b4d13e64563616a11aa8bab18c85a43139e"},{"aggregation_bits":"0xdf6dd6d7ecb9dfefffaf7fdc65fc7fbfefdfffb7ffeaff06","data":{"slot":"3885631","index":"27","beacon_block_root":"0x0cb13db52b63240d561b36495723229e0424fc72a25e74c02b61ae448a5f6347","source":{"epoch":"121424","root":"0xd4932a533b2321efbdf14f2f5fb0047ea886bfa442a805f1008c7267fedec51d"},"target":{"epoch":"121425","root":"0xa054b44c76103ba3ba399c401d3c952df7f815c618d742e6c87285dfcb8fadd9"}},"signature":"0x98e94cb7018e519260625fb1c7b9799dbf4bf105b49132abe059bf2f9426e5bb6aab72a7976d167d0e74bb486ed83a3901af9c678210d6bfbac38e4d51ba9162138ee93c8523a6ca24b3abb646bebd253f7e312c4caec744e7835e47cc452980"},{"aggregation_bits":"0x000000000080000000000000200000000000000400000008","data":{"slot":"3885631","index":"63","beacon_block_root":"0x11ad56ef6afea6c1f7d337f6d09213f918edbe2ae0a2dd5c914ed002d348659b","source":{"epoch":"121424","root":"0xd4932a533b2321efbdf14f2f5fb0047ea886bfa442a805f1008c7267fedec51d"},"target":{"epoch":"121425","root":"0xa054b44c76103ba3ba399c401d3c952df7f815c618d742e6c87285dfcb8fadd9"}},"signature":"0x97b03d50ebcfdd17f9aa9d8c5fd57fa53e25329586f8b78af4961f6fd56d93d4385fde74762e214f33a543f7ac8817f110bffe5140e2dee7f74b5599053e514dfe2794a42b8409c4838bf4b9780edd94c61e6147066697560b8cc8b635179ffe"},{"aggregation_bits":"0xfaeefedfbffdf5ff7dd7f7ffdbfb27ffa23faeee7eefdf07","data":{"slot":"3885631","index":"42","beacon_block_root":"0x0cb13db52b63240d561b36495723229e0424fc72a25e74c02b61ae448a5f6347","source":{"epoch":"121424","root":"0xd4932a533b2321efbdf14f2f5fb0047ea886bfa442a805f1008c7267fedec51d"},"target":{"epoch":"121425","root":"0xa054b44c76103ba3ba399c401d3c952df7f815c618d742e6c87285dfcb8fadd9"}},"signature":"0xaff0bd8644b0e3ac54318e9b1f5bf9b764d3d8b69b6dc34221a81bb4f78995e20cf7c3b055ff4ec473fcb87b45d001a00c73ccc3a733f8250b75e2b5d4ec11fa5b9b6b9918cfebd39015e862b1b522d075573fc00004e8ca5f2b253cb543ad33"},{"aggregation_bits":"0x778bd7efffff7f7ff7bdc1af7fbeffff5ff2ecaaffef7706","data":{"slot":"3885631","index":"23","beacon_block_root":"0x0cb13db52b63240d561b36495723229e0424fc72a25e74c02b61ae448a5f6347","source":{"epoch":"121424","root":"0xd4932a533b2321efbdf14f2f5fb0047ea886bfa442a805f1008c7267fedec51d"},"target":{"epoch":"121425","root":"0xa054b44c76103ba3ba399c401d3c952df7f815c618d742e6c87285dfcb8fadd9"}},"signature":"0x8e70965fe96e7846ba693e2edc6b3f691f63d73528c330cd9cfa2e3c30bda161c3edae04f28e1530d58aaef638219e5104d229551cba14066124b15afe35a886c23eb3329ac36c1d80e813e706eb30311353e340775ebabf7effeb2bc73efddd"},{"aggregation_bits":"0x000040000001000000000000000000000000000000000004","data":{"slot":"3885631","index":"46","beacon_block_root":"0x11ad56ef6afea6c1f7d337f6d09213f918edbe2ae0a2dd5c914ed002d348659b","source":{"epoch":"121424","root":"0xd4932a533b2321efbdf14f2f5fb0047ea886bfa442a805f1008c7267fedec51d"},"target":{"epoch":"121425","root":"0xa054b44c76103ba3ba399c401d3c952df7f815c618d742e6c87285dfcb8fadd9"}},"signature":"0x828a65f7bd05baadf08938876ea747e69954f66e89db8b2be4e8aaf159a08c15720c3eb81bf5a0d2ad9b272e9d1588b8088e5fe2cc2a2b118bba14a474bc5d94ed89c254087ae1cb5618e131f8dc165704c78c08c75203a98147b4c67b7aeb6c"},{"aggregation_bits":"0x000008101000000000004000010000000000000000000004","data":{"slot":"3885631","index":"45","beacon_block_root":"0x11ad56ef6afea6c1f7d337f6d09213f918edbe2ae0a2dd5c914ed002d348659b","source":{"epoch":"121424","root":"0xd4932a533b2321efbdf14f2f5fb0047ea886bfa442a805f1008c7267fedec51d"},"target":{"epoch":"121425","root":"0xa054b44c76103ba3ba399c401d3c952df7f815c618d742e6c87285dfcb8fadd9"}},"signature":"0x98e81f36832c6d3c9e22d1e3d20415cf3fcd8db996db544407e43b448784b73401b8547839c55056066f1f1709fdf0a9151572e11dd69bf22044354e79ed570f28e6a5d0091960810469cb60a91b57c3ac418630329a9402f6340d59ae3a6487"},{"aggregation_bits":"0x400000000000000000000000000000800000000000000008","data":{"slot":"3885631","index":"30","beacon_block_root":"0x11ad56ef6afea6c1f7d337f6d09213f918edbe2ae0a2dd5c914ed002d348659b","source":{"epoch":"121424","root":"0xd4932a533b2321efbdf14f2f5fb0047ea886bfa442a805f1008c7267fedec51d"},"target":{"epoch":"121425","root":"0xa054b44c76103ba3ba399c401d3c952df7f815c618d742e6c87285dfcb8fadd9"}},"signature":"0x82f359418538216cebf5b3c7be6243b6534e0447ade5d88c0c12b49f8a0eb17d90b738ea4d199150020e0dc8d945dea716b6b12cf6bda78a294da30550085c3f18110eab9e1b82ea50f27e1b39598c87407447594e3b63bca8c68a53c87329c0"},{"aggregation_bits":"0x000000000000000000000004000800000000000000000004","data":{"slot":"3885631","index":"38","beacon_block_root":"0x11ad56ef6afea6c1f7d337f6d09213f918edbe2ae0a2dd5c914ed002d348659b","source":{"epoch":"121424","root":"0xd4932a533b2321efbdf14f2f5fb0047ea886bfa442a805f1008c7267fedec51d"},"target":{"epoch":"121425","root":"0xa054b44c76103ba3ba399c401d3c952df7f815c618d742e6c87285dfcb8fadd9"}},"signature":"0xa15603d059326d66368506c937ebc78bd831afbdf17f428b9689f1523c4250c641049147fc43450f5dc06680a5b552651376dcdacc804ce38b7caa6214112d086fadcef40ebc504d7c7db730670d3754f55e75b9c8cdf33073495fb541466ecb"},{"aggregation_bits":"0xb7fcef5f73f6dbfdbffbdfef7effbea7e7effbdfc56fff07","data":{"slot":"3885631","index":"10","beacon_block_root":"0x0cb13db52b63240d561b36495723229e0424fc72a25e74c02b61ae448a5f6347","source":{"epoch":"121424","root":"0xd4932a533b2321efbdf14f2f5fb0047ea886bfa442a805f1008c7267fedec51d"},"target":{"epoch":"121425","root":"0xa054b44c76103ba3ba399c401d3c952df7f815c618d742e6c87285dfcb8fadd9"}},"signature":"0xa25a2b9561a311c0ec01f289e57d6d04aca43026cf98e05655260d1e8a8461e6ad0311d6e2438c80bbcc9bb377a5277d1262d237351a6d1db682da9ce03b075efffc91c3bdf60cb89129b977ee8170ecbf27352a9e500300128fe0909d69ff8d"},{"aggregation_bits":"0x000000001000000000000020000000800000000000840004","data":{"slot":"3885631","index":"17","beacon_block_root":"0x11ad56ef6afea6c1f7d337f6d09213f918edbe2ae0a2dd5c914ed002d348659b","source":{"epoch":"121424","root":"0xd4932a533b2321efbdf14f2f5fb0047ea886bfa442a805f1008c7267fedec51d"},"target":{"epoch":"121425","root":"0xa054b44c76103ba3ba399c401d3c952df7f815c618d742e6c87285dfcb8fadd9"}},"signature":"0xb105f7990b925023dca46d85a215457a29a8ac57e6acca002f09320d1fdde951a6af670055b3bca788a79f2a711e069c023a878de71ab24840aa1358d264e7dd3a7242e2938a8fcd3874637589dad89662a7d950e43968a8919b359be06cef24"},{"aggregation_bits":"0x000000000000000020000000004000000002000000000004","data":{"slot":"3885631","index":"9","beacon_block_root":"0x11ad56ef6afea6c1f7d337f6d09213f918edbe2ae0a2dd5c914ed002d348659b","source":{"epoch":"121424","root":"0xd4932a533b2321efbdf14f2f5fb0047ea886bfa442a805f1008c7267fedec51d"},"target":{"epoch":"121425","root":"0xa054b44c76103ba3ba399c401d3c952df7f815c618d742e6c87285dfcb8fadd9"}},"signature":"0xb8d37e5f734ee9789f78da42962af7bacb91253fc1b36ecf430e31d3217fd832bbb324b427ba1a48f4a7456a3769cd3310a0f7e9abc45aee3182b4b5b921351d5fd82ba52e6582e2d518aca93c83eff7f1063c3498c4b9b4d01afeb676093a16"},{"aggregation_bits":"0xffeb7efffffffbdfd6bff5de4bffff9fdfedfbe3fdf7ff07","data":{"slot":"3885631","index":"58","beacon_block_root":"0x0cb13db52b63240d561b36495723229e0424fc72a25e74c02b61ae448a5f6347","source":{"epoch":"121424","root":"0xd4932a533b2321efbdf14f2f5fb0047ea886bfa442a805f1008c7267fedec51d"},"target":{"epoch":"121425","root":"0xa054b44c76103ba3ba399c401d3c952df7f815c618d742e6c87285dfcb8fadd9"}},"signature":"0x8321fcfc79b12807dc6e8fef260267026cf2efa39d76c61c5b81230ef9271a1e7215604ea61c41964ced2807751ced7e0f8facc0875915c25f59a1593172f7d5756e69603e2d32a32edf8e2aaaf85dca718f92b141e16f08e5fca89d919538f7"},{"aggregation_bits":"0x100000041800000000000000001000000000001004000004","data":{"slot":"3885631","index":"51","beacon_block_root":"0x11ad56ef6afea6c1f7d337f6d09213f918edbe2ae0a2dd5c914ed002d348659b","source":{"epoch":"121424","root":"0xd4932a533b2321efbdf14f2f5fb0047ea886bfa442a805f1008c7267fedec51d"},"target":{"epoch":"121425","root":"0xa054b44c76103ba3ba399c401d3c952df7f815c618d742e6c87285dfcb8fadd9"}},"signature":"0x9593c0c62dcc7c8cae253f0c1c310dda0bcec8595c20cbe0597d4f675cf8603aaa237434fdbfe81e6a6d83da9006e46815131954422e916d3b7f56c2164f6c60433dc137e361d3f05293127cd39316395b36ff4de1f2704126770dc268f99378"},{"aggregation_bits":"0x7fcdff78bbfdffdedfdbfeff76ff71ebffffff7f7febff07","data":{"slot":"3885631","index":"54","beacon_block_root":"0x0cb13db52b63240d561b36495723229e0424fc72a25e74c02b61ae448a5f6347","source":{"epoch":"121424","root":"0xd4932a533b2321efbdf14f2f5fb0047ea886bfa442a805f1008c7267fedec51d"},"target":{"epoch":"121425","root":"0xa054b44c76103ba3ba399c401d3c952df7f815c618d742e6c87285dfcb8fadd9"}},"signature":"0xadbfa786636061958c6d2d41114b9505794d3a9fa539bf4ae89ed5775ee168859b8ba78a6e64e463762271073c7f2ca60dfd0038ee68ccbe443bae55e8923df56a5dd77db7f4768f5b26e094e0157b80dce1d5a02e6258d86e29b68ace2b906f"},{"aggregation_bits":"0xecfcfdefdffeffd7ffdedf6ff7ffdebaeffff9fffefb7f07","data":{"slot":"3885631","index":"62","beacon_block_root":"0x0cb13db52b63240d561b36495723229e0424fc72a25e74c02b61ae448a5f6347","source":{"epoch":"121424","root":"0xd4932a533b2321efbdf14f2f5fb0047ea886bfa442a805f1008c7267fedec51d"},"target":{"epoch":"121425","root":"0xa054b44c76103ba3ba399c401d3c952df7f815c618d742e6c87285dfcb8fadd9"}},"signature":"0x83ea5908127b6d81b0e4dc37bffd315db652116f1540260bcca243febc912afead9a55f80de66f3138ea650ebfc89b400f45507ca023f4a571c33d9de47e94b6c7e2790ff542d6a16d27db6922dc10d48174d215acd4df8b356284745a9448a3"},{"aggregation_bits":"0x7f7f7dffbfffffbf7dfff7bdefffdfefdfb5fffdbbffbc07","data":{"slot":"3885631","index":"56","beacon_block_root":"0x0cb13db52b63240d561b36495723229e0424fc72a25e74c02b61ae448a5f6347","source":{"epoch":"121424","root":"0xd4932a533b2321efbdf14f2f5fb0047ea886bfa442a805f1008c7267fedec51d"},"target":{"epoch":"121425","root":"0xa054b44c76103ba3ba399c401d3c952df7f815c618d742e6c87285dfcb8fadd9"}},"signature":"0x8d803a395307bc57cd6dc49311281634c91b64b9725d421561889801126f303e9bb051ba650d8b026bf879d96cc698c1174d10ae6a651375f3d32a1dc1f7715a8d00a6a3d33d3e77f28c10ce9b8f355f0c988f434a75f4dfe2ed5489b2d9d817"},{"aggregation_bits":"0x000000000000001000000000000000000000000000000004","data":{"slot":"3885631","index":"18","beacon_block_root":"0x11ad56ef6afea6c1f7d337f6d09213f918edbe2ae0a2dd5c914ed002d348659b","source":{"epoch":"121424","root":"0xd4932a533b2321efbdf14f2f5fb0047ea886bfa442a805f1008c7267fedec51d"},"target":{"epoch":"121425","root":"0xa054b44c76103ba3ba399c401d3c952df7f815c618d742e6c87285dfcb8fadd9"}},"signature":"0xb42a767c374bd8ab760cf92ce136b5923872e54471d80fe09d1b3b75538e5ce60cb8f69be491a47417953a25e205eaff16713b57d4a4fb002ccf9912836d549d8255b92e8beea28a5e22156198f71b3167d2c3b224f004171eeabd4521b8a881"},{"aggregation_bits":"0x000000002000000000002000080000000000000000040004","data":{"slot":"3885631","index":"62","beacon_block_root":"0x11ad56ef6afea6c1f7d337f6d09213f918edbe2ae0a2dd5c914ed002d348659b","source":{"epoch":"121424","root":"0xd4932a533b2321efbdf14f2f5fb0047ea886bfa442a805f1008c7267fedec51d"},"target":{"epoch":"121425","root":"0xa054b44c76103ba3ba399c401d3c952df7f815c618d742e6c87285dfcb8fadd9"}},"signature":"0xaa512e5c33bcf135bc3ad8608f256217c7f3e53a714fc31d162b1e5a62a40b90d7f049dbca4c09b6a9c44b99e1a11ba615da58e2c2788d7fa484e25de1a08ccf81c510e683ee4cb1dd19d51ad67b17386e5bd0c1a98a58928dfb449700e5e9e7"},{"aggregation_bits":"0x000000000000000000000080002000000000000000020004","data":{"slot":"3885631","index":"60","beacon_block_root":"0x11ad56ef6afea6c1f7d337f6d09213f918edbe2ae0a2dd5c914ed002d348659b","source":{"epoch":"121424","root":"0xd4932a533b2321efbdf14f2f5fb0047ea886bfa442a805f1008c7267fedec51d"},"target":{"epoch":"121425","root":"0xa054b44c76103ba3ba399c401d3c952df7f815c618d742e6c87285dfcb8fadd9"}},"signature":"0xad81754547e4b40404c1506ce38662020e1a8ddf6490c627d0442546d7916fdb8a71c1931f9fb02065d4b09aeee450fa118c998793f041974e965f49c3e0f5b16e3421ad0a39696ddedee9e5c54f94c2294546522f99881ed5aea64c8a2e34cd"},{"aggregation_bits":"0xfdfff5ffde357f4fdedf7fe9ffdff2ff7fd7fc6edfffeb07","data":{"slot":"3885631","index":"31","beacon_block_root":"0x0cb13db52b63240d561b36495723229e0424fc72a25e74c02b61ae448a5f6347","source":{"epoch":"121424","root":"0xd4932a533b2321efbdf14f2f5fb0047ea886bfa442a805f1008c7267fedec51d"},"target":{"epoch":"121425","root":"0xa054b44c76103ba3ba399c401d3c952df7f815c618d742e6c87285dfcb8fadd9"}},"signature":"0x84fc0442407b61f022d33414aea66ea82008fba193a44eee8fe5f14ad366718615654e14ca8a0649f720c868de30f2010cc57f328e20902d0a950febc7a77ace707384219bc5fc90067a00a745a9e6f08982a8037df499daa92f742ed48f7e3b"},{"aggregation_bits":"0x000000020000000000000000000000000000000000100004","data":{"slot":"3885631","index":"54","beacon_block_root":"0x11ad56ef6afea6c1f7d337f6d09213f918edbe2ae0a2dd5c914ed002d348659b","source":{"epoch":"121424","root":"0xd4932a533b2321efbdf14f2f5fb0047ea886bfa442a805f1008c7267fedec51d"},"target":{"epoch":"121425","root":"0xa054b44c76103ba3ba399c401d3c952df7f815c618d742e6c87285dfcb8fadd9"}},"signature":"0x8a1a938e764c18891952d8779c7b2521bd16a29076e7c4ca7bc2c6c951e09ba542a938c6d0055c0d50b9cc851ff763ba18e68bab89c7ae2e4b4b40bad002684f901c0bf31f506b69c6357b236018d653d46c2c24f6c83595fc020c2092caa7f9"},{"aggregation_bits":"0x5bedf9fffdbe3fb7f7e6ffb7ff5ffbffdf5ffffeedb5bb07","data":{"slot":"3885631","index":"2","beacon_block_root":"0x0cb13db52b63240d561b36495723229e0424fc72a25e74c02b61ae448a5f6347","source":{"epoch":"121424","root":"0xd4932a533b2321efbdf14f2f5fb0047ea886bfa442a805f1008c7267fedec51d"},"target":{"epoch":"121425","root":"0xa054b44c76103ba3ba399c401d3c952df7f815c618d742e6c87285dfcb8fadd9"}},"signature":"0xb9812f3d190628b2ba6b96e9b78c06ed658917355bd58abe7e697a102148c1432918e5f35d6600b46aeb455408505d2a18bb5fe15b00dd5afc82f39724469d41229fc79f81b119bc1a9ee5b1976112bd45979f82f0aef38c643b67bc583f01f9"},{"aggregation_bits":"0x000000000000000000000000000000000010000010000004","data":{"slot":"3885631","index":"55","beacon_block_root":"0x11ad56ef6afea6c1f7d337f6d09213f918edbe2ae0a2dd5c914ed002d348659b","source":{"epoch":"121424","root":"0xd4932a533b2321efbdf14f2f5fb0047ea886bfa442a805f1008c7267fedec51d"},"target":{"epoch":"121425","root":"0xa054b44c76103ba3ba399c401d3c952df7f815c618d742e6c87285dfcb8fadd9"}},"signature":"0xa39e57e34cc9c954ec98569d4fe438ce2c0299f4f815b3c4615be3ee54f6883f784ac8dd2acfce7b6789e72ca140fe6c104b859934cfe5e865f40d14c6def808f59eaebf050501a03064ef50eaf4a2ebbc190168c21a5f3577747d4e9c6bcdb9"},{"aggregation_bits":"0x000040000000000000000000000000000000000004000004","data":{"slot":"3885631","index":"49","beacon_block_root":"0x11ad56ef6afea6c1f7d337f6d09213f918edbe2ae0a2dd5c914ed002d348659b","source":{"epoch":"121424","root":"0xd4932a533b2321efbdf14f2f5fb0047ea886bfa442a805f1008c7267fedec51d"},"target":{"epoch":"121425","root":"0xa054b44c76103ba3ba399c401d3c952df7f815c618d742e6c87285dfcb8fadd9"}},"signature":"0xa4d1ad6c0effb92d2b0861166c772017e667ed0fb0fb21032f654c371b3089aeebad29cd5b8b1f775b263bc941d8af610ad30fdd4a183e6be500632fa2fc4e7406785ddd7a11ebae54aed369eaabac40860bdd02ce6dfe1b2df4cfdf293d3647"},{"aggregation_bits":"0xff5fd7b777fdfffcbbfff97ffffffddeefffec7effcbff07","data":{"slot":"3885631","index":"25","beacon_block_root":"0x0cb13db52b63240d561b36495723229e0424fc72a25e74c02b61ae448a5f6347","source":{"epoch":"121424","root":"0xd4932a533b2321efbdf14f2f5fb0047ea886bfa442a805f1008c7267fedec51d"},"target":{"epoch":"121425","root":"0xa054b44c76103ba3ba399c401d3c952df7f815c618d742e6c87285dfcb8fadd9"}},"signature":"0x801c0bc81803cb5dbc5936c16908fd8c041d4f3e89ae2f187ffb3dd3ee3cfa4e7cddb9ad2fcbf1de3447635f60af119812e922cffa3db6216ddb97208ee839f0ef781ca76357df3b2c0070abab7c238c02668983a20b041c4a50e4df2b1e223b"},{"aggregation_bits":"0x00000000c000000000000000000000000000000000400004","data":{"slot":"3885631","index":"48","beacon_block_root":"0x11ad56ef6afea6c1f7d337f6d09213f918edbe2ae0a2dd5c914ed002d348659b","source":{"epoch":"121424","root":"0xd4932a533b2321efbdf14f2f5fb0047ea886bfa442a805f1008c7267fedec51d"},"target":{"epoch":"121425","root":"0xa054b44c76103ba3ba399c401d3c952df7f815c618d742e6c87285dfcb8fadd9"}},"signature":"0xa899ff9595df2266aa6a2f3e4e9713a72233a068d10f81292a493640395099121c4bf711c3c00bf6842a69cbaca88b9b11fd097e10051f5e62da7e47b39ea9b23f418298b28e7af374569a154568a6534aa1ed30daaf43dce7fa7ec0c58937cb"},{"aggregation_bits":"0x33be77bfffbfdfef8f7f5f75fbbfdfdf9cafef9f675bff06","data":{"slot":"3885631","index":"20","beacon_block_root":"0x0cb13db52b63240d561b36495723229e0424fc72a25e74c02b61ae448a5f6347","source":{"epoch":"121424","root":"0xd4932a533b2321efbdf14f2f5fb0047ea886bfa442a805f1008c7267fedec51d"},"target":{"epoch":"121425","root":"0xa054b44c76103ba3ba399c401d3c952df7f815c618d742e6c87285dfcb8fadd9"}},"signature":"0xa2fd3395a3b29976dd073cb5d863e4b310caada1279fa0b61dfda713e0b38354a8673dd7f5c71ea9a63d55fca911f76e017416c4bc356d167b1151e8c484602271f3d74e168a2de60962d0602eece18c6c3b1b2ac44a546ad047d760b7960856"},{"aggregation_bits":"0xfffffdfeebfbdb2cde7ffffeffbd7fff76fdf7afeffff907","data":{"slot":"3885631","index":"9","beacon_block_root":"0x0cb13db52b63240d561b36495723229e0424fc72a25e74c02b61ae448a5f6347","source":{"epoch":"121424","root":"0xd4932a533b2321efbdf14f2f5fb0047ea886bfa442a805f1008c7267fedec51d"},"target":{"epoch":"121425","root":"0xa054b44c76103ba3ba399c401d3c952df7f815c618d742e6c87285dfcb8fadd9"}},"signature":"0x9666577020f5b1b1341487a1088dff449de55f7b75866d97fb82e8ea79ed5ce73b64bb81083f1ae43b45df03d6edad2817be3eb289014b47a602e33801b6baad8b98882d7aad28b5e87aa95e4da38adf722c7a54cd82aff98574b0daf9743df0"},{"aggregation_bits":"0x000240000000000000000400000000000000000000008004","data":{"slot":"3885631","index":"26","beacon_block_root":"0x11ad56ef6afea6c1f7d337f6d09213f918edbe2ae0a2dd5c914ed002d348659b","source":{"epoch":"121424","root":"0xd4932a533b2321efbdf14f2f5fb0047ea886bfa442a805f1008c7267fedec51d"},"target":{"epoch":"121425","root":"0xa054b44c76103ba3ba399c401d3c952df7f815c618d742e6c87285dfcb8fadd9"}},"signature":"0x930b94acfe6f6153baada05acb73f438b45be8d9ad9b80f63dfd4fc2806fd8b52cd1a10c6033940b1cb496bb7f2d99f000606dbaa1ded84ffc7812ddebaa91e0afa9926f6e6f99f19350c363ceb732c7b2c7e48c619bae694dd0bbf2cd7f5d2b"},{"aggregation_bits":"0xfeabbeffff97e77ffdfbfbdffffddffddffe7efff9ff3f04","data":{"slot":"3885631","index":"49","beacon_block_root":"0x0cb13db52b63240d561b36495723229e0424fc72a25e74c02b61ae448a5f6347","source":{"epoch":"121424","root":"0xd4932a533b2321efbdf14f2f5fb0047ea886bfa442a805f1008c7267fedec51d"},"target":{"epoch":"121425","root":"0xa054b44c76103ba3ba399c401d3c952df7f815c618d742e6c87285dfcb8fadd9"}},"signature":"0x900f384fe2f03c8a242263f60791f1514121c6fb6183e90c17d0d0b7ea90420446cb7692e452e477d31b3c2fb058950214a147a9b9bbcf982ad7179a6bef164411eefa43e34722c82d82d2ab56b74ced7541a96504b2e29cb4570e5c3252ca9a"},{"aggregation_bits":"0xff175d3ef3ffa7fffff7f9aff73ffadbfaf7b6eebbfe6f07","data":{"slot":"3885631","index":"4","beacon_block_root":"0x0cb13db52b63240d561b36495723229e0424fc72a25e74c02b61ae448a5f6347","source":{"epoch":"121424","root":"0xd4932a533b2321efbdf14f2f5fb0047ea886bfa442a805f1008c7267fedec51d"},"target":{"epoch":"121425","root":"0xa054b44c76103ba3ba399c401d3c952df7f815c618d742e6c87285dfcb8fadd9"}},"signature":"0xae7704470baf13455c9b96cee45a12be2be8608b97787ac1f326dc94540470ad9e37f1718b17ba6dd4472bca9f10225f14f66c109d2594c9a4757df3aefb64dcc73be42f959923b08ebc9ff9424a1dfb3b764d587c1becff08f8878b4bb0f732"},{"aggregation_bits":"0x75fa5f6bed2fdfffff5fbfff7ff7ddf7b7ffffebfff66e05","data":{"slot":"3885631","index":"21","beacon_block_root":"0x0cb13db52b63240d561b36495723229e0424fc72a25e74c02b61ae448a5f6347","source":{"epoch":"121424","root":"0xd4932a533b2321efbdf14f2f5fb0047ea886bfa442a805f1008c7267fedec51d"},"target":{"epoch":"121425","root":"0xa054b44c76103ba3ba399c401d3c952df7f815c618d742e6c87285dfcb8fadd9"}},"signature":"0xb44b4a979b69bb07ab2713c97df847adfe6688cf09d4df0930f119cbec2caf9257495c706d901854475f8f02749812430b55334a295b45c2cbf08ae001ec1890fb4823a9e5650a239f59d91c9fe8b1ed73f39aeb60d734f2003f90df00397b29"},{"aggregation_bits":"0xffb7f7fecedfefbfedfdff6fbfdffefdffa9fff9bdfdf307","data":{"slot":"3885631","index":"60","beacon_block_root":"0x0cb13db52b63240d561b36495723229e0424fc72a25e74c02b61ae448a5f6347","source":{"epoch":"121424","root":"0xd4932a533b2321efbdf14f2f5fb0047ea886bfa442a805f1008c7267fedec51d"},"target":{"epoch":"121425","root":"0xa054b44c76103ba3ba399c401d3c952df7f815c618d742e6c87285dfcb8fadd9"}},"signature":"0x8ff608f7e1f87e29cf1a01864074d436016aa8de6fca04a81f5ae2ea1236d74b97b9192d052ca9096f4af40c626541c10116eba2dbb5cca8dc2d28a0391aabdedc1c467f26255a7f7fb053264b46e268520212f0cd93972682310e09545d6a7b"},{"aggregation_bits":"0x000000000000000000000000000000000000000004020006","data":{"slot":"3885631","index":"52","beacon_block_root":"0x11ad56ef6afea6c1f7d337f6d09213f918edbe2ae0a2dd5c914ed002d348659b","source":{"epoch":"121424","root":"0xd4932a533b2321efbdf14f2f5fb0047ea886bfa442a805f1008c7267fedec51d"},"target":{"epoch":"121425","root":"0xa054b44c76103ba3ba399c401d3c952df7f815c618d742e6c87285dfcb8fadd9"}},"signature":"0x906f1b75171a406205d5c7ab3ac2a598de1b9276944b833f1f31da2251478cd04dd45901a592211b7c9608ffc5c204de1104e87c85b842e4041d58017ea5a0bfcf60997738a8c387d79115c239a2d2ef217d835b9b0e73728e18caecf2e9e970"},{"aggregation_bits":"0x000000000000000000000004000000000000000080000004","data":{"slot":"3885631","index":"43","beacon_block_root":"0x11ad56ef6afea6c1f7d337f6d09213f918edbe2ae0a2dd5c914ed002d348659b","source":{"epoch":"121424","root":"0xd4932a533b2321efbdf14f2f5fb0047ea886bfa442a805f1008c7267fedec51d"},"target":{"epoch":"121425","root":"0xa054b44c76103ba3ba399c401d3c952df7f815c618d742e6c87285dfcb8fadd9"}},"signature":"0xb18cd150c3b50c3cb79346fb1c024cffc435d2d0d5ebb8677c4e1d89c70811fb9020227f94aaba805963806608b38db316ac46aa121dae51d12e4539fea8479806c7d9626571e7fbb808df3280e130ddea2e9df976046565ab808e6a63efa88c"},{"aggregation_bits":"0x000080000000000002000800000000000000000000000004","data":{"slot":"3885631","index":"56","beacon_block_root":"0x11ad56ef6afea6c1f7d337f6d09213f918edbe2ae0a2dd5c914ed002d348659b","source":{"epoch":"121424","root":"0xd4932a533b2321efbdf14f2f5fb0047ea886bfa442a805f1008c7267fedec51d"},"target":{"epoch":"121425","root":"0xa054b44c76103ba3ba399c401d3c952df7f815c618d742e6c87285dfcb8fadd9"}},"signature":"0x85c6ae31060ee95f6c21ee45928e49de35cf4c11f40a7bb03f80639fdf25e1c74199ba1132a2818160422fe854c7f496190efd1107a6956cfee7531f6239c5fcdcf98c3f259286ac485ef78ab7e8b655cea700387a42db80813099aef8bfb959"},{"aggregation_bits":"0xfdfed9fdf3f7deffffdde3fcfdfdefffbfe9fcf5ffbf6b07","data":{"slot":"3885631","index":"34","beacon_block_root":"0x0cb13db52b63240d561b36495723229e0424fc72a25e74c02b61ae448a5f6347","source":{"epoch":"121424","root":"0xd4932a533b2321efbdf14f2f5fb0047ea886bfa442a805f1008c7267fedec51d"},"target":{"epoch":"121425","root":"0xa054b44c76103ba3ba399c401d3c952df7f815c618d742e6c87285dfcb8fadd9"}},"signature":"0x8db47e6fb80ccbc644ebedc084eeefdc2c21626b5ca122f7268e5aaca2530ea3de772aa1183d7d12a6d4a65b31904588056ce2449c316ae9d8a8cd282d10c0a710abea2d315bcda1f3cbac172850babccf510230967a48c855d377a36ad5845a"},{"aggregation_bits":"0xd7ffff7ffffe7bfff7fbcf73db7f6aefebffffd3f9fff507","data":{"slot":"3885631","index":"35","beacon_block_root":"0x0cb13db52b63240d561b36495723229e0424fc72a25e74c02b61ae448a5f6347","source":{"epoch":"121424","root":"0xd4932a533b2321efbdf14f2f5fb0047ea886bfa442a805f1008c7267fedec51d"},"target":{"epoch":"121425","root":"0xa054b44c76103ba3ba399c401d3c952df7f815c618d742e6c87285dfcb8fadd9"}},"signature":"0x94f6fd0b4998163d4b46026cbb4918bc18a2277e72837da61b049dfff52402f840b47724b03989137679d9ebb89eb41a036ae3c7e275492ba06325d652d3d92d3bb666c7eef900e9d2668424f221ee0d5f78fc532584ac63c4146ca1e246e9be"},{"aggregation_bits":"0x000000000200000000400001800100000000000000000004","data":{"slot":"3885631","index":"27","beacon_block_root":"0x11ad56ef6afea6c1f7d337f6d09213f918edbe2ae0a2dd5c914ed002d348659b","source":{"epoch":"121424","root":"0xd4932a533b2321efbdf14f2f5fb0047ea886bfa442a805f1008c7267fedec51d"},"target":{"epoch":"121425","root":"0xa054b44c76103ba3ba399c401d3c952df7f815c618d742e6c87285dfcb8fadd9"}},"signature":"0x962e72235000bc2c29522602b3d2b13fa2b268adc50066ba14f8409c4fb8e4d78805d38f097fa999f6ad5c0f62428fc50cac1bb495e25d849885fdd328e6269407f25fa61e36e9473e677cd7c76e99c70ff9b8c642b3577974010c6c7ecf4c8d"},{"aggregation_bits":"0xf2567ff57fffcdddfe9bf7ddbffefefffffcfff5fbfefe0f","data":{"slot":"3885631","index":"14","beacon_block_root":"0x0cb13db52b63240d561b36495723229e0424fc72a25e74c02b61ae448a5f6347","source":{"epoch":"121424","root":"0xd4932a533b2321efbdf14f2f5fb0047ea886bfa442a805f1008c7267fedec51d"},"target":{"epoch":"121425","root":"0xa054b44c76103ba3ba399c401d3c952df7f815c618d742e6c87285dfcb8fadd9"}},"signature":"0x81938bf428c4b17539f87196d1b52fbc35249f15027cc7a0519a623a38557715aa32383d5bedeefaa570609da941b46603c8ca4d8a245ee7fd3c534874b400f146bc18e58e5b597405f8c7888812f7729c6274ca241fe4407e975c9873e89d28"},{"aggregation_bits":"0x7ef87ffffffb7fbfffffe2fbf7ffffcb7cdcb7dbffbfff07","data":{"slot":"3885631","index":"36","beacon_block_root":"0x0cb13db52b63240d561b36495723229e0424fc72a25e74c02b61ae448a5f6347","source":{"epoch":"121424","root":"0xd4932a533b2321efbdf14f2f5fb0047ea886bfa442a805f1008c7267fedec51d"},"target":{"epoch":"121425","root":"0xa054b44c76103ba3ba399c401d3c952df7f815c618d742e6c87285dfcb8fadd9"}},"signature":"0xa693a765b5bde80c2bb8f0ced69d9d0f96ddbfba9673566b5a83ed53b72a80b94ade0a8645d1a5424afe6808ad5017340d956de9b34ac9ccd5308169f89e11b1c61a964267ae73a5406e2e0d5913dd15803c0cbe5865e650555255afe0a50f30"},{"aggregation_bits":"0x7fdbabfbffe75df7dfe85fffff67f7efdfd3f7fbbffdff07","data":{"slot":"3885631","index":"11","beacon_block_root":"0x0cb13db52b63240d561b36495723229e0424fc72a25e74c02b61ae448a5f6347","source":{"epoch":"121424","root":"0xd4932a533b2321efbdf14f2f5fb0047ea886bfa442a805f1008c7267fedec51d"},"target":{"epoch":"121425","root":"0xa054b44c76103ba3ba399c401d3c952df7f815c618d742e6c87285dfcb8fadd9"}},"signature":"0x812068ac83ee8f22f87a6880ee1e724028755d7dac2ccf33d90a573d9e108f7353d244afb878eb3e08a835e2d6df6d2a119c39f9f61ed096479d933b53065b16e2380733907b6e728e65fd62b07ac159851cdcc7b6ef27869b8efd3cad2292b2"},{"aggregation_bits":"0x000000000040000008180000000000002000000002000004","data":{"slot":"3885631","index":"2","beacon_block_root":"0x11ad56ef6afea6c1f7d337f6d09213f918edbe2ae0a2dd5c914ed002d348659b","source":{"epoch":"121424","root":"0xd4932a533b2321efbdf14f2f5fb0047ea886bfa442a805f1008c7267fedec51d"},"target":{"epoch":"121425","root":"0xa054b44c76103ba3ba399c401d3c952df7f815c618d742e6c87285dfcb8fadd9"}},"signature":"0xa72269d7e7979c2aca3e5ff2b16ea81c2a35ec74f0d7fd8bb1c1903d03dd75717240c566c9f6feef5307f5a552e818620503c0c474861903f50bdd787b54b5245f444301b9c805e8a3827385a24fda05263b0db4248c720d1dad52b064937310"},{"aggregation_bits":"0x000000000000000000000000000000009000000000000204","data":{"slot":"3885631","index":"53","beacon_block_root":"0x11ad56ef6afea6c1f7d337f6d09213f918edbe2ae0a2dd5c914ed002d348659b","source":{"epoch":"121424","root":"0xd4932a533b2321efbdf14f2f5fb0047ea886bfa442a805f1008c7267fedec51d"},"target":{"epoch":"121425","root":"0xa054b44c76103ba3ba399c401d3c952df7f815c618d742e6c87285dfcb8fadd9"}},"signature":"0xa0c6e51d65164d4ea3d63fb0e82ca6514e91ab78f13c8cf8201951cfa024d97dac8a3b3f4c3141b9186bd9e23989b4c213b01accfea7031938c965183894e7492f00fddf6916141955545436a2953381d4b3462389b9051489e2c82a550a8156"},{"aggregation_bits":"0xfcffd7ef6fbeff55fff8badeaadfef6fffdf3ffff74fbf07","data":{"slot":"3885631","index":"45","beacon_block_root":"0x0cb13db52b63240d561b36495723229e0424fc72a25e74c02b61ae448a5f6347","source":{"epoch":"121424","root":"0xd4932a533b2321efbdf14f2f5fb0047ea886bfa442a805f1008c7267fedec51d"},"target":{"epoch":"121425","root":"0xa054b44c76103ba3ba399c401d3c952df7f815c618d742e6c87285dfcb8fadd9"}},"signature":"0x992509d47b31136c3674436185fe814862cdbbe1b337068159c262749beabb1d2ef92581aff919b84c18f93acbb82da80e000fdaf9cbd5b5d3d9430e98e658990d7a6faa8d8f9f7ea168322d35f5c6b8834dbd088803c793302f57b12fd18e76"},{"aggregation_bits":"0x9bdfebffff7ffffff7fdedf7755ff7efe7ff6fdfff7d7f07","data":{"slot":"3885631","index":"28","beacon_block_root":"0x0cb13db52b63240d561b36495723229e0424fc72a25e74c02b61ae448a5f6347","source":{"epoch":"121424","root":"0xd4932a533b2321efbdf14f2f5fb0047ea886bfa442a805f1008c7267fedec51d"},"target":{"epoch":"121425","root":"0xa054b44c76103ba3ba399c401d3c952df7f815c618d742e6c87285dfcb8fadd9"}},"signature":"0xb0514064ed7dd51debe4e7b87d5a4cc424ae1d6cc941b6108fad8491f1c6e7b7c652c0dd9467df0fa25271eda1fb627a048c572051aa324ee3300eefb730534defca066c1a7336b2879a46056a04e576b2c7a0c6e440b558e0c0ad5f02662418"},{"aggregation_bits":"0x000000000000000000000000000000080400000000000004","data":{"slot":"3885631","index":"40","beacon_block_root":"0x11ad56ef6afea6c1f7d337f6d09213f918edbe2ae0a2dd5c914ed002d348659b","source":{"epoch":"121424","root":"0xd4932a533b2321efbdf14f2f5fb0047ea886bfa442a805f1008c7267fedec51d"},"target":{"epoch":"121425","root":"0xa054b44c76103ba3ba399c401d3c952df7f815c618d742e6c87285dfcb8fadd9"}},"signature":"0xa4c58a50a3ac5c0c8435470149006e6f6f4e7ae0a323439fb1a3e856a12425e314282f19d96dddab2e273e08a5e58b400a9100e1652039c6ece953a69c92188da25aad305b1b775e5490d75055ad850aa767b8af39f401f999187c57a9877d95"},{"aggregation_bits":"0xf4f9ffe79cffefefff7fa7fbe7fff7fd7ffdd7e3bf776e07","data":{"slot":"3885631","index":"5","beacon_block_root":"0x0cb13db52b63240d561b36495723229e0424fc72a25e74c02b61ae448a5f6347","source":{"epoch":"121424","root":"0xd4932a533b2321efbdf14f2f5fb0047ea886bfa442a805f1008c7267fedec51d"},"target":{"epoch":"121425","root":"0xa054b44c76103ba3ba399c401d3c952df7f815c618d742e6c87285dfcb8fadd9"}},"signature":"0xaed91b0ad5fec0f6fd1d159b597540a75032b7001080d28bdbf1dfd2ce1e14d44274e9f67b2f2d74e8312eafc678c23d19c369c2818e11176f56e67954a5500d24bb9b3807d36dddba7b2235384e8bcb03ac8a06af28928d4836fbdf5bd02a5b"},{"aggregation_bits":"0xfffffc7ef7977fefbd6f7ff7fbfff749feedddfeef1f2f06","data":{"slot":"3885631","index":"55","beacon_block_root":"0x0cb13db52b63240d561b36495723229e0424fc72a25e74c02b61ae448a5f6347","source":{"epoch":"121424","root":"0xd4932a533b2321efbdf14f2f5fb0047ea886bfa442a805f1008c7267fedec51d"},"target":{"epoch":"121425","root":"0xa054b44c76103ba3ba399c401d3c952df7f815c618d742e6c87285dfcb8fadd9"}},"signature":"0x932957b9e80b0132845888a2c6dc060df1292648abb6392797364625d859a2375372aed6b174d2a4494aca9807a813ad01339210747901aee74f15eb438237b7a254f7173dd5d1deb87a43de5e238e89d3a85c2d20b9c14a21449943c3401e01"},{"aggregation_bits":"0xffdf7efef3fefff7e7feff3ffdff69bfffff3fffbffb7d07","data":{"slot":"3885631","index":"3","beacon_block_root":"0x0cb13db52b63240d561b36495723229e0424fc72a25e74c02b61ae448a5f6347","source":{"epoch":"121424","root":"0xd4932a533b2321efbdf14f2f5fb0047ea886bfa442a805f1008c7267fedec51d"},"target":{"epoch":"121425","root":"0xa054b44c76103ba3ba399c401d3c952df7f815c618d742e6c87285dfcb8fadd9"}},"signature":"0x8695648db300b763281fa8c4f509f46ddadeb9948b628f42ecf7dc6fc1f0e71829f429f3a6c381cb881035785f1af9fd148455c55526f88fa05604033afd48a4473d1796a180fa99ecccd455bd57316c65727deeb39ec8699bc134d99e7820b3"},{"aggregation_bits":"0xfdfeaefe77cef7ebf72dee7fffffdfdf3fbbfffffdffff07","data":{"slot":"3885631","index":"13","beacon_block_root":"0x0cb13db52b63240d561b36495723229e0424fc72a25e74c02b61ae448a5f6347","source":{"epoch":"121424","root":"0xd4932a533b2321efbdf14f2f5fb0047ea886bfa442a805f1008c7267fedec51d"},"target":{"epoch":"121425","root":"0xa054b44c76103ba3ba399c401d3c952df7f815c618d742e6c87285dfcb8fadd9"}},"signature":"0x8a06e31be8ef782910184cf9dd2601238faa6b7dd9eb9d6e3af4c61df1ff7eee28cdb9e79d18459ba952509926b0f95905748dca0d475d3db0e59d88abeb53a2cedf2e2528ce8a9556348b202f85da4e75ae1f350a176c6598867044f0b41349"},{"aggregation_bits":"0x7be7ff7fbbf7ebffff7f7fffd5bedfffeff75e99feffdf07","data":{"slot":"3885631","index":"50","beacon_block_root":"0x0cb13db52b63240d561b36495723229e0424fc72a25e74c02b61ae448a5f6347","source":{"epoch":"121424","root":"0xd4932a533b2321efbdf14f2f5fb0047ea886bfa442a805f1008c7267fedec51d"},"target":{"epoch":"121425","root":"0xa054b44c76103ba3ba399c401d3c952df7f815c618d742e6c87285dfcb8fadd9"}},"signature":"0x8815fcc703e0dda8cd7f4312ca83900d44036a0b3ce56cf886ded1e2f2a2d97c145827960ed2956c385a0b3203304dbe126874a8f51d291cddaee817a760d26db7fdd09d7254ce668e890e9e719fd15aa68d2f457542d1ff9271003f1e120249"},{"aggregation_bits":"0xafffeff9c567efafe5df7ffff36fffffbdf7ebecfb3fa707","data":{"slot":"3885631","index":"51","beacon_block_root":"0x0cb13db52b63240d561b36495723229e0424fc72a25e74c02b61ae448a5f6347","source":{"epoch":"121424","root":"0xd4932a533b2321efbdf14f2f5fb0047ea886bfa442a805f1008c7267fedec51d"},"target":{"epoch":"121425","root":"0xa054b44c76103ba3ba399c401d3c952df7f815c618d742e6c87285dfcb8fadd9"}},"signature":"0xa3ad5edaee059d7a12338901dc69a30276a0e288b2ade7ef9d6ad4a9a19f52194b51a8c982b0c5affc1a45ad441a699211d97efa4a0cdfdc0e8d07fbc02bb4002323317370df8cf6f7edbd5b10050f2831158e6dca01029425d4c8fd8e5c5640"},{"aggregation_bits":"0x000000000000000000000002082000000000004000000006","data":{"slot":"3885631","index":"7","beacon_block_root":"0x11ad56ef6afea6c1f7d337f6d09213f918edbe2ae0a2dd5c914ed002d348659b","source":{"epoch":"121424","root":"0xd4932a533b2321efbdf14f2f5fb0047ea886bfa442a805f1008c7267fedec51d"},"target":{"epoch":"121425","root":"0xa054b44c76103ba3ba399c401d3c952df7f815c618d742e6c87285dfcb8fadd9"}},"signature":"0x8f6577894d458c3a20ba0bb803dfe8dd635f3d7d8033daa2140d880ae6dd014871087fac69c288b243ed17c90d60c8260889f0d391f6394ec125027d4242fae8c028f29f68b662b6941e8568971c056744307b4430561d2ad1b925bfb87432a3"},{"aggregation_bits":"0xd7fdafff77fffffbdfddbb7ffdffddaffefefaffafff3a07","data":{"slot":"3885631","index":"26","beacon_block_root":"0x0cb13db52b63240d561b36495723229e0424fc72a25e74c02b61ae448a5f6347","source":{"epoch":"121424","root":"0xd4932a533b2321efbdf14f2f5fb0047ea886bfa442a805f1008c7267fedec51d"},"target":{"epoch":"121425","root":"0xa054b44c76103ba3ba399c401d3c952df7f815c618d742e6c87285dfcb8fadd9"}},"signature":"0x94edf8ff8d957021df58cafa7564ac0f29ba02e0a162c1f32da3bb1fcaf080cb35c8de7d1f31b77e40edfc847dca246207f3459fadfc202e8016f7e380e709816c9db1446d7bf03deaea95aca7fc6fdcbc7f1780ac1a817a808d8704c794be5d"},{"aggregation_bits":"0xfdfdff7fedfefffffedffbcfffffff5bfff7ff6d7e7bef06","data":{"slot":"3885631","index":"17","beacon_block_root":"0x0cb13db52b63240d561b36495723229e0424fc72a25e74c02b61ae448a5f6347","source":{"epoch":"121424","root":"0xd4932a533b2321efbdf14f2f5fb0047ea886bfa442a805f1008c7267fedec51d"},"target":{"epoch":"121425","root":"0xa054b44c76103ba3ba399c401d3c952df7f815c618d742e6c87285dfcb8fadd9"}},"signature":"0xa4f9db1f3ee4ba8386a74879f2950b3d0cf84dc736264d84bda0ac0ecaf8994a384aa3ae4d0b2e6781ec893cde9c3d9c0b85c4db9bc57dddce5cc1f7e52c5e494ec88d27ce9f2e1dcc10f5952a94cdb2e0f67d41b80c0c77bc02259c3b802794"},{"aggregation_bits":"0xfffeaff7ff77fbfff5fffffbfff7f737bfb6dff7e7bfff07","data":{"slot":"3885631","index":"19","beacon_block_root":"0x0cb13db52b63240d561b36495723229e0424fc72a25e74c02b61ae448a5f6347","source":{"epoch":"121424","root":"0xd4932a533b2321efbdf14f2f5fb0047ea886bfa442a805f1008c7267fedec51d"},"target":{"epoch":"121425","root":"0xa054b44c76103ba3ba399c401d3c952df7f815c618d742e6c87285dfcb8fadd9"}},"signature":"0xa0f329509f9c40199b03aa74ca2e7eb6a0b0a69db92fa3fadc78951ac5ce074d5f12a96cf60345d3be22d2b185b873571700136e2305c49fd539dcfabf3d640462013d8b01f884563f896a1a31b9d6ed71a3e843a561d2ef2c480dddcbb26db3"},{"aggregation_bits":"0xdfddffbf37fbbf7f9ffff9fddebdbfffd9ff7ffffd97ef07","data":{"slot":"3885631","index":"48","beacon_block_root":"0x0cb13db52b63240d561b36495723229e0424fc72a25e74c02b61ae448a5f6347","source":{"epoch":"121424","root":"0xd4932a533b2321efbdf14f2f5fb0047ea886bfa442a805f1008c7267fedec51d"},"target":{"epoch":"121425","root":"0xa054b44c76103ba3ba399c401d3c952df7f815c618d742e6c87285dfcb8fadd9"}},"signature":"0xa0474003e6125f9a99cf67f486c5c5cfd586c0861ebc1e80d674a99cd268efbbd50e32f88adaad2bdd810882cd6af4321014605a17c249be237b821abe97e457c3e09b8df815c4a93a01d3581b653acbbad2755bf390b0798c69e1a98325576d"},{"aggregation_bits":"0x000004000000000020000000000000000000000000000408","data":{"slot":"3885631","index":"47","beacon_block_root":"0x11ad56ef6afea6c1f7d337f6d09213f918edbe2ae0a2dd5c914ed002d348659b","source":{"epoch":"121424","root":"0xd4932a533b2321efbdf14f2f5fb0047ea886bfa442a805f1008c7267fedec51d"},"target":{"epoch":"121425","root":"0xa054b44c76103ba3ba399c401d3c952df7f815c618d742e6c87285dfcb8fadd9"}},"signature":"0xb639b7433bd8ba2de39b4572f1a7427d04f24f1e8f096f7ff6dd79e99e30f5a86efe65f37af3649e1fa3e8cd2b7e31cf09dee6f91d00742e8fea1f0708aa73190243d7b77a0776727d21e1a8c9da7af183b7e2901695db4029c801f7bc35a03e"},{"aggregation_bits":"0x000000000000040020000800000000000010000000000004","data":{"slot":"3885631","index":"58","beacon_block_root":"0x11ad56ef6afea6c1f7d337f6d09213f918edbe2ae0a2dd5c914ed002d348659b","source":{"epoch":"121424","root":"0xd4932a533b2321efbdf14f2f5fb0047ea886bfa442a805f1008c7267fedec51d"},"target":{"epoch":"121425","root":"0xa054b44c76103ba3ba399c401d3c952df7f815c618d742e6c87285dfcb8fadd9"}},"signature":"0x99149bed5dfd9f54f8a228a779a0fabb3de54dc94c43893cc1236714c2a519b05a8f414cb428be183fe32ab1b7cdb95e01a878386e7826cb0e57281f1b2b096857ee299851a2e8d0dbeb0ff8bd4c462c7130ce0f26c5fd985750c53ed9e3b364"},{"aggregation_bits":"0x7bba7e9efdd3fbfff3fffffdfdfff5fafbffff7f7bd1ea05","data":{"slot":"3885631","index":"52","beacon_block_root":"0x0cb13db52b63240d561b36495723229e0424fc72a25e74c02b61ae448a5f6347","source":{"epoch":"121424","root":"0xd4932a533b2321efbdf14f2f5fb0047ea886bfa442a805f1008c7267fedec51d"},"target":{"epoch":"121425","root":"0xa054b44c76103ba3ba399c401d3c952df7f815c618d742e6c87285dfcb8fadd9"}},"signature":"0x90e5ecaf442f2312dea232cd7c4f3f872bbe24d0e99f809bd909981eb1f96107727ec35544af04edbfd103252f2266fc07b15214a3f4e534f1f9c8940ec5180b07311ebda90db28de9a4ba6b7733d47703807831283bf05a19e31f03c7b3fe62"},{"aggregation_bits":"0x000000000000000000000000000000201000000000000004","data":{"slot":"3885631","index":"25","beacon_block_root":"0x11ad56ef6afea6c1f7d337f6d09213f918edbe2ae0a2dd5c914ed002d348659b","source":{"epoch":"121424","root":"0xd4932a533b2321efbdf14f2f5fb0047ea886bfa442a805f1008c7267fedec51d"},"target":{"epoch":"121425","root":"0xa054b44c76103ba3ba399c401d3c952df7f815c618d742e6c87285dfcb8fadd9"}},"signature":"0x808b3b6eda3b2519548660e321a77da3e6c5b616fcaeda94669545a8b2d504ce39e816f7e8e317773e4d6ef48fc06e7918ee335452dd50003e345fc38e9db727baf425ab98245af2a67bda3492a4df9459780cb187b4222de3c82c3a5d07e9de"},{"aggregation_bits":"0x000000000000000000010000040000000000004000000004","data":{"slot":"3885631","index":"44","beacon_block_root":"0x11ad56ef6afea6c1f7d337f6d09213f918edbe2ae0a2dd5c914ed002d348659b","source":{"epoch":"121424","root":"0xd4932a533b2321efbdf14f2f5fb0047ea886bfa442a805f1008c7267fedec51d"},"target":{"epoch":"121425","root":"0xa054b44c76103ba3ba399c401d3c952df7f815c618d742e6c87285dfcb8fadd9"}},"signature":"0x8f9e292afeb8e5ca9bdb38cdced551abadb8a4c96708dd4ea6dec05f5d82861d56866502e08af04b1550f137ef165ce113e165d6d9f342530a754b466ca00edc2679a4b416e6329c094f986c642bd6caeb44c538b9c2d7dae592f7857a2fff9e"},{"aggregation_bits":"0x000000000000000000100000000000000000000000000104","data":{"slot":"3885631","index":"37","beacon_block_root":"0x11ad56ef6afea6c1f7d337f6d09213f918edbe2ae0a2dd5c914ed002d348659b","source":{"epoch":"121424","root":"0xd4932a533b2321efbdf14f2f5fb0047ea886bfa442a805f1008c7267fedec51d"},"target":{"epoch":"121425","root":"0xa054b44c76103ba3ba399c401d3c952df7f815c618d742e6c87285dfcb8fadd9"}},"signature":"0x8475f9c03abc0b4babdad14ea4df9e354708bbc1091d18499cec29e62fc162500efddf84b80f88a05ce5551592c187b50646ebd28f76e6280144ae6216932be792c859e1e60cc66f30dbe9b9c9d82d47dd172a77affcf58ed584532b70fa8746"},{"aggregation_bits":"0xb77fffff3fefbfffb7ff7dfefcafb73ff9ffdbffe6f3ff0e","data":{"slot":"3885631","index":"30","beacon_block_root":"0x0cb13db52b63240d561b36495723229e0424fc72a25e74c02b61ae448a5f6347","source":{"epoch":"121424","root":"0xd4932a533b2321efbdf14f2f5fb0047ea886bfa442a805f1008c7267fedec51d"},"target":{"epoch":"121425","root":"0xa054b44c76103ba3ba399c401d3c952df7f815c618d742e6c87285dfcb8fadd9"}},"signature":"0x8d8b2785a50f0f7d41dd0c385d1dc9b4cf0c4248583dbad06674014da777cb8646054e5ad12ba25a54c3ffa36b9653640605b138203c0151bd6294acbf0d8d9050136dec02a76843977bf0bd60e134d84d957a7be4a93814a16f7398545ab187"},{"aggregation_bits":"0x7dbf3fcffffffddffcfffdffbd47f8daffefffefffaf5e07","data":{"slot":"3885631","index":"33","beacon_block_root":"0x0cb13db52b63240d561b36495723229e0424fc72a25e74c02b61ae448a5f6347","source":{"epoch":"121424","root":"0xd4932a533b2321efbdf14f2f5fb0047ea886bfa442a805f1008c7267fedec51d"},"target":{"epoch":"121425","root":"0xa054b44c76103ba3ba399c401d3c952df7f815c618d742e6c87285dfcb8fadd9"}},"signature":"0x80ac040cc640d2c9389c698b48fd5edb2f3050c6de51d9355cf3394ac492989084959e4eb66884954b2fdf194d9cdc4f0eed773b00d00cd6c7f750302a729a95a989ccac903d4bc8f394c475d06a8136befb92b62fec364c5f950241f3fe07b3"},{"aggregation_bits":"0x000100000000000000000000000000200000000000000004","data":{"slot":"3885631","index":"36","beacon_block_root":"0x11ad56ef6afea6c1f7d337f6d09213f918edbe2ae0a2dd5c914ed002d348659b","source":{"epoch":"121424","root":"0xd4932a533b2321efbdf14f2f5fb0047ea886bfa442a805f1008c7267fedec51d"},"target":{"epoch":"121425","root":"0xa054b44c76103ba3ba399c401d3c952df7f815c618d742e6c87285dfcb8fadd9"}},"signature":"0x99ed989dcabd8a4054bbd1fa6302688849674e83e024d899b96e3c0b72bed1acbc55ebd131671c26c6c4054e6b130120075b4d3f27318027d806ceb04eb6f610cc3c90c044fbd3cacc2a778cb38d177b064047943249943aa80a52c71e6ce524"},{"aggregation_bits":"0xffffdefdfeffbdbefafeffeffb7f7fbb5d5fffbeffad7106","data":{"slot":"3885631","index":"44","beacon_block_root":"0x0cb13db52b63240d561b36495723229e0424fc72a25e74c02b61ae448a5f6347","source":{"epoch":"121424","root":"0xd4932a533b2321efbdf14f2f5fb0047ea886bfa442a805f1008c7267fedec51d"},"target":{"epoch":"121425","root":"0xa054b44c76103ba3ba399c401d3c952df7f815c618d742e6c87285dfcb8fadd9"}},"signature":"0xb8c51ee9af30ff6892e0139cf72bef7b801f626258d490fa1b1b1fba809836f3e0a8f7fd986cf5c00d9b602fea50310d01ad1d063c69eb53a07a180798eb635f08760b154afc7cb260861f779abd844f46d677acd8675879b9a286a769681985"},{"aggregation_bits":"0x000108000000000000000080000000002040002000000004","data":{"slot":"3885631","index":"20","beacon_block_root":"0x11ad56ef6afea6c1f7d337f6d09213f918edbe2ae0a2dd5c914ed002d348659b","source":{"epoch":"121424","root":"0xd4932a533b2321efbdf14f2f5fb0047ea886bfa442a805f1008c7267fedec51d"},"target":{"epoch":"121425","root":"0xa054b44c76103ba3ba399c401d3c952df7f815c618d742e6c87285dfcb8fadd9"}},"signature":"0x91574af609ecdc08dda48b212c62893677b7d7eb78c17a86ebd863ed0cc24fd623f6088ab30adab1ed7a56a6f44e92dd0555f0d6883eb389ef52cf50ca67855500a031e6dfc06b8c2fcbed1eb214b73d92914d5de228b470f96baf85b577910d"},{"aggregation_bits":"0x020000480000000001000000000000008000000000000004","data":{"slot":"3885631","index":"61","beacon_block_root":"0x11ad56ef6afea6c1f7d337f6d09213f918edbe2ae0a2dd5c914ed002d348659b","source":{"epoch":"121424","root":"0xd4932a533b2321efbdf14f2f5fb0047ea886bfa442a805f1008c7267fedec51d"},"target":{"epoch":"121425","root":"0xa054b44c76103ba3ba399c401d3c952df7f815c618d742e6c87285dfcb8fadd9"}},"signature":"0x8d7333c9978dfab288858658d0a3a5cca53a62563141c56b3a0fc7386432f893c9c45c168a6e47d8a4e2def1b8c4f90206a18d366ccbbc86708563cbf7d076a399693cd5c8d2bc0d6172dcf1633d6f550cc16956c2cf737291f18c51e2800eb6"},{"aggregation_bits":"0xfeffdd9bffbff7ffbfdfffeffefbdfd7fbddbfebdff5df05","data":{"slot":"3885631","index":"40","beacon_block_root":"0x0cb13db52b63240d561b36495723229e0424fc72a25e74c02b61ae448a5f6347","source":{"epoch":"121424","root":"0xd4932a533b2321efbdf14f2f5fb0047ea886bfa442a805f1008c7267fedec51d"},"target":{"epoch":"121425","root":"0xa054b44c76103ba3ba399c401d3c952df7f815c618d742e6c87285dfcb8fadd9"}},"signature":"0x8cca7105a29b50689755bf50ac3de98c6e36f030b18fc22d8e9cb78565851eaa6abc9b5617885fb24a476586a89c2b4609853f6035f42517e532ee2f3849ace4e700b65cbbfbee67a78ae160bc96930d99e725a1886eb12db8ee2ce24fd1de60"},{"aggregation_bits":"0xfeffdb5efffefefb7fffdd7e677796ff9ffddbfb77fcff07","data":{"slot":"3885631","index":"8","beacon_block_root":"0x0cb13db52b63240d561b36495723229e0424fc72a25e74c02b61ae448a5f6347","source":{"epoch":"121424","root":"0xd4932a533b2321efbdf14f2f5fb0047ea886bfa442a805f1008c7267fedec51d"},"target":{"epoch":"121425","root":"0xa054b44c76103ba3ba399c401d3c952df7f815c618d742e6c87285dfcb8fadd9"}},"signature":"0xadb6313cdc359c8b77fbd49f920a74c74dd47022b754a64a62985c237c1d83746eb6fa88526abffc7e53c204de9ae9a80143f6f27a5904a8710cc143ad09022c217b25f3e680068aecc93a6282b3d7a37785e3a2d0f3747540ebf811f80e8dd2"},{"aggregation_bits":"0xfb7b53befafffebfffffdffe7effffbcff777bfb6f3cdc07","data":{"slot":"3885631","index":"1","beacon_block_root":"0x0cb13db52b63240d561b36495723229e0424fc72a25e74c02b61ae448a5f6347","source":{"epoch":"121424","root":"0xd4932a533b2321efbdf14f2f5fb0047ea886bfa442a805f1008c7267fedec51d"},"target":{"epoch":"121425","root":"0xa054b44c76103ba3ba399c401d3c952df7f815c618d742e6c87285dfcb8fadd9"}},"signature":"0x90e4b76f9de69f2f5bca05f8ec1be1d298be3d1f5a0fa72280bcff85d8ac0df08dc7fca28d41d6673a070a7094387c6e0e5085f7f0151e333677eec49581e8ffd8ac1ae274e2680319fbd9bcc161f134515ba7cb35fa4a4d04932b5123faa712"},{"aggregation_bits":"0x000000120101200008000400000000040000000002600004","data":{"slot":"3885631","index":"24","beacon_block_root":"0x11ad56ef6afea6c1f7d337f6d09213f918edbe2ae0a2dd5c914ed002d348659b","source":{"epoch":"121424","root":"0xd4932a533b2321efbdf14f2f5fb0047ea886bfa442a805f1008c7267fedec51d"},"target":{"epoch":"121425","root":"0xa054b44c76103ba3ba399c401d3c952df7f815c618d742e6c87285dfcb8fadd9"}},"signature":"0x806e611dfd717c07f2c6ff65d168152cce065f0fea85338f377b8a0628230be4040aa98b1f9f6eb988a1631e9f5746341359ce1d8e35ff452a74f6a872834e12ffa260275c05d24325a2dfd695425b4f7425f2d7432e953afe51a92f339022f0"},{"aggregation_bits":"0xfdffeb7f33fffd7f7fafdfebeffdffbdffff3cff6fe7ad07","data":{"slot":"3885631","index":"43","beacon_block_root":"0x0cb13db52b63240d561b36495723229e0424fc72a25e74c02b61ae448a5f6347","source":{"epoch":"121424","root":"0xd4932a533b2321efbdf14f2f5fb0047ea886bfa442a805f1008c7267fedec51d"},"target":{"epoch":"121425","root":"0xa054b44c76103ba3ba399c401d3c952df7f815c618d742e6c87285dfcb8fadd9"}},"signature":"0xb0dbabae40d4b9a6c8b66e34c85835a1168078c89085f1aa7de142b7136a5a4ac527aa7d62b9b3f5042d7624d93569d01682159584b8a1dafdde47521f44488428b68dce22ed03b352096888a6ba9d6e7dfac0316a80a479c4b30887d7d3a66a"},{"aggregation_bits":"0xbfddd6fdffffefcffb4d3fffffef7dbfffffffffdfbefe07","data":{"slot":"3885631","index":"37","beacon_block_root":"0x0cb13db52b63240d561b36495723229e0424fc72a25e74c02b61ae448a5f6347","source":{"epoch":"121424","root":"0xd4932a533b2321efbdf14f2f5fb0047ea886bfa442a805f1008c7267fedec51d"},"target":{"epoch":"121425","root":"0xa054b44c76103ba3ba399c401d3c952df7f815c618d742e6c87285dfcb8fadd9"}},"signature":"0x99d401b811cf942c5424e0713358cc76fdd5ebc21e3c1142f87299da8a6981b8ba1235260ac457a0772a019b9e025a27178390e91dd740726d9acacab7d750d1cee81aca83dbc7645e652ee3ee0b5a0d104b2ac0e59edd83d550bc6ada8369e7"},{"aggregation_bits":"0x000000000000000000000000000000000000000000001004","data":{"slot":"3885631","index":"21","beacon_block_root":"0x11ad56ef6afea6c1f7d337f6d09213f918edbe2ae0a2dd5c914ed002d348659b","source":{"epoch":"121424","root":"0xd4932a533b2321efbdf14f2f5fb0047ea886bfa442a805f1008c7267fedec51d"},"target":{"epoch":"121425","root":"0xa054b44c76103ba3ba399c401d3c952df7f815c618d742e6c87285dfcb8fadd9"}},"signature":"0x8ef4336b2338b51177d5dd8b2e52e2b90b272a6353b900c6e582e1073c03ea9577a6657b443b455520226100bda0a889013185b38a9ee16c3ddf36414c807733382f7c91ed048d9d5954d6a895dc034160bf1cb1ee09fa4275858057377bc801"},{"aggregation_bits":"0x000000000100000104000000000000001000000000000004","data":{"slot":"3885631","index":"39","beacon_block_root":"0x11ad56ef6afea6c1f7d337f6d09213f918edbe2ae0a2dd5c914ed002d348659b","source":{"epoch":"121424","root":"0xd4932a533b2321efbdf14f2f5fb0047ea886bfa442a805f1008c7267fedec51d"},"target":{"epoch":"121425","root":"0xa054b44c76103ba3ba399c401d3c952df7f815c618d742e6c87285dfcb8fadd9"}},"signature":"0xacdb8862cbe449caa89422b959608b49ba1b7c10fcb4f457087b4510f3554b9c36ebe7b2e880d9b331c668616d425bf40de9c0eb965e34083b84efd3a72f163f34d0ff531af97777138d0dca4c0aac6adc0ff236426fa9e2ec4b9cb4c50cf306"},{"aggregation_bits":"0xfcc7f107ffeffddcdafdafdfbb7fbbf64f7bfffffddfef07","data":{"slot":"3885631","index":"61","beacon_block_root":"0x0cb13db52b63240d561b36495723229e0424fc72a25e74c02b61ae448a5f6347","source":{"epoch":"121424","root":"0xd4932a533b2321efbdf14f2f5fb0047ea886bfa442a805f1008c7267fedec51d"},"target":{"epoch":"121425","root":"0xa054b44c76103ba3ba399c401d3c952df7f815c618d742e6c87285dfcb8fadd9"}},"signature":"0xa151adf0c1fc4edc8ae6e94f0bc837680164a4e11ea9dd204d44445309cee4802f54dd98326c87998da776a23556de870eb3fe0ccfc4a9407096b30d5a055dd4bbc3cef4767147c0b2bacd4b09df50d4c307746eae662d57b4d82bea7b920444"},{"aggregation_bits":"0x57bf7f7ef3fbffdffefbfefdd7b7fded4ffbffe7feffed07","data":{"slot":"3885631","index":"53","beacon_block_root":"0x0cb13db52b63240d561b36495723229e0424fc72a25e74c02b61ae448a5f6347","source":{"epoch":"121424","root":"0xd4932a533b2321efbdf14f2f5fb0047ea886bfa442a805f1008c7267fedec51d"},"target":{"epoch":"121425","root":"0xa054b44c76103ba3ba399c401d3c952df7f815c618d742e6c87285dfcb8fadd9"}},"signature":"0x8709bb61b5b80663b4054a7af621d435e068fa4da894e6897db6b438fafbda8df3667623af2abf2914194d9c12feed7b0b765efbcc598723dc468dff5bcf6f0461bad9d75bb2bbac50fbb6d1f662e2f22c4ae71249073ae5ecbe3ae4887bacd8"},{"aggregation_bits":"0x777eff77fddf7ffefffff7addbbffbffeff7f5ffff96fb07","data":{"slot":"3885631","index":"29","beacon_block_root":"0x0cb13db52b63240d561b36495723229e0424fc72a25e74c02b61ae448a5f6347","source":{"epoch":"121424","root":"0xd4932a533b2321efbdf14f2f5fb0047ea886bfa442a805f1008c7267fedec51d"},"target":{"epoch":"121425","root":"0xa054b44c76103ba3ba399c401d3c952df7f815c618d742e6c87285dfcb8fadd9"}},"signature":"0xb88f825a3f32ae403045f87eb9bfe6821946a8bfba06c56e37c6d71c189f431dc85b9a80789d7360923467e63ceb253801a10aa4c25c210f22081f8f566c3244ed73589799833d84d475d148e0c86ac4f0c3173d7eb606a1762e550ecacf7101"},{"aggregation_bits":"0x000000000000000000000008000000000000000000800004","data":{"slot":"3885631","index":"28","beacon_block_root":"0x11ad56ef6afea6c1f7d337f6d09213f918edbe2ae0a2dd5c914ed002d348659b","source":{"epoch":"121424","root":"0xd4932a533b2321efbdf14f2f5fb0047ea886bfa442a805f1008c7267fedec51d"},"target":{"epoch":"121425","root":"0xa054b44c76103ba3ba399c401d3c952df7f815c618d742e6c87285dfcb8fadd9"}},"signature":"0xa19779e534313190c6ee611d15cbb215d7cbb8d9fb6c4c3b52ab9076c1b97d437d4a7593e336bdd965a4f2210e8fe708133a53e8f993758008aedfd92926a7f29928b6fe117a8a7557c7ebb9839f641aef2875bcb284a522eaa9da0e35d2b558"},{"aggregation_bits":"0xb29f1ffffffffbbeef776d7efffffffbffbfff5dedff7f07","data":{"slot":"3885631","index":"22","beacon_block_root":"0x0cb13db52b63240d561b36495723229e0424fc72a25e74c02b61ae448a5f6347","source":{"epoch":"121424","root":"0xd4932a533b2321efbdf14f2f5fb0047ea886bfa442a805f1008c7267fedec51d"},"target":{"epoch":"121425","root":"0xa054b44c76103ba3ba399c401d3c952df7f815c618d742e6c87285dfcb8fadd9"}},"signature":"0xb48f4747ea37c620010863bfd116b49c72e5b57c632bfcb07d44ab6933b60e5bb851169cabec531fd99c60881f567dbc12b9af61b183757c2d0f973752295d0c63bf5d6c9ec7c21c1ccd56dfa4f4fe0fd94cb2fbf419234e2eec71a516028645"},{"aggregation_bits":"0xf7f7fbfeffeffdfbdffe65fef7fcffb9b7dffeffffb7ff07","data":{"slot":"3885631","index":"41","beacon_block_root":"0x0cb13db52b63240d561b36495723229e0424fc72a25e74c02b61ae448a5f6347","source":{"epoch":"121424","root":"0xd4932a533b2321efbdf14f2f5fb0047ea886bfa442a805f1008c7267fedec51d"},"target":{"epoch":"121425","root":"0xa054b44c76103ba3ba399c401d3c952df7f815c618d742e6c87285dfcb8fadd9"}},"signature":"0xb4b99d671cb26de98201d834f9c118e5fb5143001dcb579635569a1bea74e9d6d06c7d0a9184b5aaa8c746e94cf345620f6c855d8e07512a716d82f29317b7b3ad32beedf61a46edd470be4083b8b9938cdf31084047235ac77970c3d92fbe60"},{"aggregation_bits":"0xbffff6f7fefffed9febfffefd677ffff7ffffd6f9ff7ff04","data":{"slot":"3885631","index":"0","beacon_block_root":"0x0cb13db52b63240d561b36495723229e0424fc72a25e74c02b61ae448a5f6347","source":{"epoch":"121424","root":"0xd4932a533b2321efbdf14f2f5fb0047ea886bfa442a805f1008c7267fedec51d"},"target":{"epoch":"121425","root":"0xa054b44c76103ba3ba399c401d3c952df7f815c618d742e6c87285dfcb8fadd9"}},"signature":"0x89e01ab433f26e2f46a1bd62584bfc18fa885fac6816f54525fb54b5b1bace2804b37ceb4d8ea99fba8d645a4dd3b89a102b26ac80326b7e507099742d1eba43d11d97672f9ce37c86663576023ebc91eb4662a425c601e60e319534b9aab422"},{"aggregation_bits":"0x000000000000000000000000204000000000000000000004","data":{"slot":"3885631","index":"29","beacon_block_root":"0x11ad56ef6afea6c1f7d337f6d09213f918edbe2ae0a2dd5c914ed002d348659b","source":{"epoch":"121424","root":"0xd4932a533b2321efbdf14f2f5fb0047ea886bfa442a805f1008c7267fedec51d"},"target":{"epoch":"121425","root":"0xa054b44c76103ba3ba399c401d3c952df7f815c618d742e6c87285dfcb8fadd9"}},"signature":"0xb791a0877f9fbda644e3c5ad16dd6744175a72b513d2a93ceeab87c3ce3070b8b0fc9fcff523803f4aff7f0ad32269ad11a850baf5ca92cc4ffd80fcf6dcb5d98b54694fc0aee36c9c9495b6672f8ec774eefc20897408d4a83733373cac91bc"},{"aggregation_bits":"0x000000000000000000000001000000000000000000000004","data":{"slot":"3885631","index":"41","beacon_block_root":"0x11ad56ef6afea6c1f7d337f6d09213f918edbe2ae0a2dd5c914ed002d348659b","source":{"epoch":"121424","root":"0xd4932a533b2321efbdf14f2f5fb0047ea886bfa442a805f1008c7267fedec51d"},"target":{"epoch":"121425","root":"0xa054b44c76103ba3ba399c401d3c952df7f815c618d742e6c87285dfcb8fadd9"}},"signature":"0xb9d10721f7ed16b7a0493c6fd1a8ce0e3a730b2f53e8a77ad2aa84e8f6ff34c113b0735ed6b8ac91ec0afe782f0cabce03fe853439033c01806d80d9987ecddb49ac9785a12e7a2249586582f3c5126b1156fc53a299a090059b79b4f9b87f5d"},{"aggregation_bits":"0x000000000002000080000000000090001000000000000004","data":{"slot":"3885631","index":"42","beacon_block_root":"0x11ad56ef6afea6c1f7d337f6d09213f918edbe2ae0a2dd5c914ed002d348659b","source":{"epoch":"121424","root":"0xd4932a533b2321efbdf14f2f5fb0047ea886bfa442a805f1008c7267fedec51d"},"target":{"epoch":"121425","root":"0xa054b44c76103ba3ba399c401d3c952df7f815c618d742e6c87285dfcb8fadd9"}},"signature":"0x878addd9655fed27a8089895046d754414c88344f550a8f09536c37d2051457070d6150390209cad292f1b44dcf326070f048a07ea576261e95a74d160cddf3ae15e7df1d778aea1247e367c699b83816991143bde27a2e016bcdbd4c3c9334d"},{"aggregation_bits":"0xfbffffff6efffebedaffeffffffde9fbbe7fbf976fbaff06","data":{"slot":"3885631","index":"59","beacon_block_root":"0x0cb13db52b63240d561b36495723229e0424fc72a25e74c02b61ae448a5f6347","source":{"epoch":"121424","root":"0xd4932a533b2321efbdf14f2f5fb0047ea886bfa442a805f1008c7267fedec51d"},"target":{"epoch":"121425","root":"0xa054b44c76103ba3ba399c401d3c952df7f815c618d742e6c87285dfcb8fadd9"}},"signature":"0x91bc1dcfe16ec08acf49b99d14c8d5824cd23dabc03bb8818c2cde38c6cbab32aa82ee6e086c15ab7690f60a71ca881a08e0891ce76fd5a8b9b0127b4e8467c9a03457212af32b1a4bf17517e0c0e61708447f951c4ddac42ef6b498d1fec813"},{"aggregation_bits":"0x880000000000000000400200000000000005010000008004","data":{"slot":"3885631","index":"23","beacon_block_root":"0x11ad56ef6afea6c1f7d337f6d09213f918edbe2ae0a2dd5c914ed002d348659b","source":{"epoch":"121424","root":"0xd4932a533b2321efbdf14f2f5fb0047ea886bfa442a805f1008c7267fedec51d"},"target":{"epoch":"121425","root":"0xa054b44c76103ba3ba399c401d3c952df7f815c618d742e6c87285dfcb8fadd9"}},"signature":"0xb7ba3987725628359690ceb741568cb8b203ce9f94828b69957db39f293c204a429023f2b353ec0b322023233daca34e13866746d945fc308ce369bfba057603ba0652ef5f25676f805292d9cd26b0db5ad8c66b5ebc87f4547a62b13b57a2eb"},{"aggregation_bits":"0xb6dfbbfee39efddefffffffbeefffff7ffb9ffafc7ffff07","data":{"slot":"3885631","index":"46","beacon_block_root":"0x0cb13db52b63240d561b36495723229e0424fc72a25e74c02b61ae448a5f6347","source":{"epoch":"121424","root":"0xd4932a533b2321efbdf14f2f5fb0047ea886bfa442a805f1008c7267fedec51d"},"target":{"epoch":"121425","root":"0xa054b44c76103ba3ba399c401d3c952df7f815c618d742e6c87285dfcb8fadd9"}},"signature":"0x8b0ddffefb209f706a09bd9ea5bed52a67c9799b395d04b7d4a701ed89783019a76b3c37cdc995d0fe2236a32c4082530d49e779498d013c0a942d08066bb254a740ee78d64b85495414f8a718a1f38c79f62b2187b64acfefacea951b5ef0e9"},{"aggregation_bits":"0x000000800000800000000000000000000000002000000004","data":{"slot":"3885631","index":"35","beacon_block_root":"0x11ad56ef6afea6c1f7d337f6d09213f918edbe2ae0a2dd5c914ed002d348659b","source":{"epoch":"121424","root":"0xd4932a533b2321efbdf14f2f5fb0047ea886bfa442a805f1008c7267fedec51d"},"target":{"epoch":"121425","root":"0xa054b44c76103ba3ba399c401d3c952df7f815c618d742e6c87285dfcb8fadd9"}},"signature":"0xa5c1797081a5deec0f28f4021eda272aae37c6131f7be9785aea27b7305c5abdfa0c90778cec7da0dcdc9c5091ba310c0d6d16b0d8110a5166b7788f50d6842e5163798945dfdd5149a04c4afa0c410d5771d3579e73647cdc80baa1dbdfc297"},{"aggregation_bits":"0x000000002080000000000000002001008000000000000404","data":{"slot":"3885631","index":"31","beacon_block_root":"0x11ad56ef6afea6c1f7d337f6d09213f918edbe2ae0a2dd5c914ed002d348659b","source":{"epoch":"121424","root":"0xd4932a533b2321efbdf14f2f5fb0047ea886bfa442a805f1008c7267fedec51d"},"target":{"epoch":"121425","root":"0xa054b44c76103ba3ba399c401d3c952df7f815c618d742e6c87285dfcb8fadd9"}},"signature":"0x91cfb88f715ff44298185f0da0f5edf4de8858417cc2ab68f90ed323f0bff16160f4faa14d5aae4bc4d446073ab04a9006167223b71fed02f8ebce2dfc42a20ead85548a078cb20f2a523b33dbb53bdc045f7fbd59776456f8015dc6c1d75a80"},{"aggregation_bits":"0x79bfbfef7f5fffb7bfffecbdb6df75fffd0ddfbfff7cf505","data":{"slot":"3885631","index":"7","beacon_block_root":"0x0cb13db52b63240d561b36495723229e0424fc72a25e74c02b61ae448a5f6347","source":{"epoch":"121424","root":"0xd4932a533b2321efbdf14f2f5fb0047ea886bfa442a805f1008c7267fedec51d"},"target":{"epoch":"121425","root":"0xa054b44c76103ba3ba399c401d3c952df7f815c618d742e6c87285dfcb8fadd9"}},"signature":"0x92a4b307de86c1821d991c9d7d8487beb84d8f1618b8c4bc8a7bba95c7f569cbc2c90bbb3ab1c688e8e8c59c14338e5f08403b6dddb53779cae94fe54e9c7f73c1b7ffe66819ca6f61f04f06cb0a28962e48ac8d7978f3043fe52d08c03335ef"},{"aggregation_bits":"0xffdf5f3dc1afb8f9775dbe778fbfdffffdffff9fdbffff06","data":{"slot":"3885631","index":"12","beacon_block_root":"0x0cb13db52b63240d561b36495723229e0424fc72a25e74c02b61ae448a5f6347","source":{"epoch":"121424","root":"0xd4932a533b2321efbdf14f2f5fb0047ea886bfa442a805f1008c7267fedec51d"},"target":{"epoch":"121425","root":"0xa054b44c76103ba3ba399c401d3c952df7f815c618d742e6c87285dfcb8fadd9"}},"signature":"0x859c8a3a3ad8f626b3039e9c7c3fcb6668f34eec43ce927ea7969898a7d31db042edd0fa5c8a60986611e1d7efc5e1221093e4adae04339012d7dc3a2d9fb8aa3bc4996706df61584f9d31e013db63a685cb38c857e7b4f23493a8751c584bfc"},{"aggregation_bits":"0x090000000000000000000800000000000000000000088004","data":{"slot":"3885631","index":"5","beacon_block_root":"0x11ad56ef6afea6c1f7d337f6d09213f918edbe2ae0a2dd5c914ed002d348659b","source":{"epoch":"121424","root":"0xd4932a533b2321efbdf14f2f5fb0047ea886bfa442a805f1008c7267fedec51d"},"target":{"epoch":"121425","root":"0xa054b44c76103ba3ba399c401d3c952df7f815c618d742e6c87285dfcb8fadd9"}},"signature":"0x82c55812ee8093c020ac749b8d7f89d7554dc17cb82dc0b5465cd7b53d11796320444d450b5566cc6734accd49c8d3bd00bd69dc70397a22b28ba03d7884a23b27a8fee10e326c28939d9392a2740d939ec81de6ff5bbbf865ed7d76d490ee58"},{"aggregation_bits":"0xbfdffedfffefefffffbffffb2f7fffbfd7bfddf7ffeaf506","data":{"slot":"3885631","index":"15","beacon_block_root":"0x0cb13db52b63240d561b36495723229e0424fc72a25e74c02b61ae448a5f6347","source":{"epoch":"121424","root":"0xd4932a533b2321efbdf14f2f5fb0047ea886bfa442a805f1008c7267fedec51d"},"target":{"epoch":"121425","root":"0xa054b44c76103ba3ba399c401d3c952df7f815c618d742e6c87285dfcb8fadd9"}},"signature":"0xb7528eabfe88ad93e3dbc8d5de59bd818606856ae252663dbb3c7478e3fe227b00ab617823b82ca0f7b11d476446818407ba3698a116c95a2bc1aed6b5c281ae93b35a901e244f50a0efe0dd2429d4967ec4def28b630dce909a2aba9e6baa4b"},{"aggregation_bits":"0x7ffe6b7efaffdfffdfffffffff5f7fe797ffeedfdfdffa0d","data":{"slot":"3885631","index":"47","beacon_block_root":"0x0cb13db52b63240d561b36495723229e0424fc72a25e74c02b61ae448a5f6347","source":{"epoch":"121424","root":"0xd4932a533b2321efbdf14f2f5fb0047ea886bfa442a805f1008c7267fedec51d"},"target":{"epoch":"121425","root":"0xa054b44c76103ba3ba399c401d3c952df7f815c618d742e6c87285dfcb8fadd9"}},"signature":"0xb308ae74b3e1d75c2ccee00658cf822e09cff9d31f063570291b4c1fa47853c9bd3e16f810c61e1a13c862d63c17061508ba5e4d44e1fa4017fd3afbbc110691172efd42c07d109bd03e465b2c074f7cf403064a8952134c5d67497817a03d37"},{"aggregation_bits":"0x6b9fffae6ffe7633ffff9ffbfdf7fd7f6f3b7eff73f7ff06","data":{"slot":"3885631","index":"38","beacon_block_root":"0x0cb13db52b63240d561b36495723229e0424fc72a25e74c02b61ae448a5f6347","source":{"epoch":"121424","root":"0xd4932a533b2321efbdf14f2f5fb0047ea886bfa442a805f1008c7267fedec51d"},"target":{"epoch":"121425","root":"0xa054b44c76103ba3ba399c401d3c952df7f815c618d742e6c87285dfcb8fadd9"}},"signature":"0x8ce0388b5a505eb54a2587c9096e2280d3cd276e09b03d12a884a090fca3a0c693c63a7a8dbdf86f6384e7f6be718330138f04031fdb14f9cf63cadefb8309a9e11510f960ddf46e77658bab56220c2d9950cc77aa4c4393b7baa991c9796d0d"},{"aggregation_bits":"0xfdefdbff7cdfcffeebffb7eebfdff7eeaff5fcb7ef77fd07","data":{"slot":"3885631","index":"39","beacon_block_root":"0x0cb13db52b63240d561b36495723229e0424fc72a25e74c02b61ae448a5f6347","source":{"epoch":"121424","root":"0xd4932a533b2321efbdf14f2f5fb0047ea886bfa442a805f1008c7267fedec51d"},"target":{"epoch":"121425","root":"0xa054b44c76103ba3ba399c401d3c952df7f815c618d742e6c87285dfcb8fadd9"}},"signature":"0xa56b54b805b8c47c6f67c9801d3215a1dc6d98c2d250707b9f7bb73217a112fbf39663c2370514859c71cf83263df3b50e87e2fc112c73e6be572d1abeb96f848e62ceca27d1f965d14618f2f8a1cfff540ad6a2374638866f5d72d20bf6da5d"},{"aggregation_bits":"0xdfb87fff7bb9ffeff7ff7ffffdfdbfeffff6dbb7e739ef05","data":{"slot":"3885631","index":"16","beacon_block_root":"0x0cb13db52b63240d561b36495723229e0424fc72a25e74c02b61ae448a5f6347","source":{"epoch":"121424","root":"0xd4932a533b2321efbdf14f2f5fb0047ea886bfa442a805f1008c7267fedec51d"},"target":{"epoch":"121425","root":"0xa054b44c76103ba3ba399c401d3c952df7f815c618d742e6c87285dfcb8fadd9"}},"signature":"0xa32b4ee6c66d9422f14c95fd8dcb369917e1bf37a9adf0521887cbdca08d05dc5e2523929c45190cfdf84fd606990a1e13c1ebadd68694ae340c46f5f94b12ed5c02961c9d625194b7868dc1ee321029ba37c821e9532a9f5a4f92fb1f39ad10"},{"aggregation_bits":"0x73ffbffcfddff3f7bfeebeffeefaeebffefffffbdfb7f707","data":{"slot":"3885631","index":"32","beacon_block_root":"0x0cb13db52b63240d561b36495723229e0424fc72a25e74c02b61ae448a5f6347","source":{"epoch":"121424","root":"0xd4932a533b2321efbdf14f2f5fb0047ea886bfa442a805f1008c7267fedec51d"},"target":{"epoch":"121425","root":"0xa054b44c76103ba3ba399c401d3c952df7f815c618d742e6c87285dfcb8fadd9"}},"signature":"0xb9669d108b756404f44cf109fc6b560b26384a452ff22aeda3face6c5fae020a2e3185c7e0e4332670607c0a7ddac8a81873627bf9f53b7f736a488b6063c8c9a5b6771394aeaf14424bcfa67778857fed08d2ccbe2e8190d06593ca4d9ae49f"},{"aggregation_bits":"0x000120000000000000000800000000000000000000000004","data":{"slot":"3885630","index":"24","beacon_block_root":"0xb89c674a5e5ca6434875cc53b7ffcd1ec31a68bce8f4d28d65ea2f5962483123","source":{"epoch":"121424","root":"0xd4932a533b2321efbdf14f2f5fb0047ea886bfa442a805f1008c7267fedec51d"},"target":{"epoch":"121425","root":"0xa054b44c76103ba3ba399c401d3c952df7f815c618d742e6c87285dfcb8fadd9"}},"signature":"0x972bc4ffc1e41ce87a3bf1adeb90b53654bf1958f30c32dc8636b9a89a4175601e846dd6cadc27c385a7c4b617063c95047eb43b79512e5f303c14644a00ba59ff11abbe3001c60585e799dc32d12dd80a56bb94828f9435f3f3fefeac2fd89f"},{"aggregation_bits":"0x000000200000000000040100000000000001000000000004","data":{"slot":"3885630","index":"37","beacon_block_root":"0xb89c674a5e5ca6434875cc53b7ffcd1ec31a68bce8f4d28d65ea2f5962483123","source":{"epoch":"121424","root":"0xd4932a533b2321efbdf14f2f5fb0047ea886bfa442a805f1008c7267fedec51d"},"target":{"epoch":"121425","root":"0xa054b44c76103ba3ba399c401d3c952df7f815c618d742e6c87285dfcb8fadd9"}},"signature":"0x87c57b43ed9ee7d965514fbb6ced20678d5c728081234f0f6a4075468d270595ebfe0c0534fd0feb09544f4b364af1da184d824f65ca69aaa6e64222cf1cd4b9cc6682269e7b6d7f49656503e74d2794d82334e04d9d72b4ee341513ad89edc2"},{"aggregation_bits":"0x000000000000002000000000000000000040002000000004","data":{"slot":"3885630","index":"5","beacon_block_root":"0xb89c674a5e5ca6434875cc53b7ffcd1ec31a68bce8f4d28d65ea2f5962483123","source":{"epoch":"121424","root":"0xd4932a533b2321efbdf14f2f5fb0047ea886bfa442a805f1008c7267fedec51d"},"target":{"epoch":"121425","root":"0xa054b44c76103ba3ba399c401d3c952df7f815c618d742e6c87285dfcb8fadd9"}},"signature":"0x88d1a21434372a8f4ef316aa2e08a19820f316590ce291c9455f959202af6dedde0f6f75bb5759fab4670f3c21dc728f118b38db71170398489516568a1e0d6e28e7e99aa563bde7d4d99675fd86ba3cc103ee9c1223a40ab0b1f6f2a525aedd"},{"aggregation_bits":"0x0005018000040c0000000040000040440001000002110206","data":{"slot":"3885630","index":"41","beacon_block_root":"0x11ad56ef6afea6c1f7d337f6d09213f918edbe2ae0a2dd5c914ed002d348659b","source":{"epoch":"121424","root":"0xd4932a533b2321efbdf14f2f5fb0047ea886bfa442a805f1008c7267fedec51d"},"target":{"epoch":"121425","root":"0xa054b44c76103ba3ba399c401d3c952df7f815c618d742e6c87285dfcb8fadd9"}},"signature":"0x92854265ace29cc8b7e4b2264cb4948009ea169464b71e7f51e6b2b9f5445a719bd6566db2405e6f5f5f9eb1c9d4815603ddbd6b348054093d24852835de099e1e07ba8d322321a35e486bbcf9a55607796f9fd677d50d4c699317ab18de75bb"},{"aggregation_bits":"0x400000000000000000000400000000000000000000000004","data":{"slot":"3885630","index":"14","beacon_block_root":"0xb89c674a5e5ca6434875cc53b7ffcd1ec31a68bce8f4d28d65ea2f5962483123","source":{"epoch":"121424","root":"0xd4932a533b2321efbdf14f2f5fb0047ea886bfa442a805f1008c7267fedec51d"},"target":{"epoch":"121425","root":"0xa054b44c76103ba3ba399c401d3c952df7f815c618d742e6c87285dfcb8fadd9"}},"signature":"0xa138e1fcdcea86c4368576064700d36c671c85f69145bcfadfe8670a443278dd07dd1051040b7162dd0a64ee418b311f01e925057314e796865403cf027815e67586e7217550c8a74f84243cff6f9bd23f235ced103f730b6ef1df733b37d26e"},{"aggregation_bits":"0x000000000880400010012100400000000000000000000004","data":{"slot":"3885630","index":"7","beacon_block_root":"0x11ad56ef6afea6c1f7d337f6d09213f918edbe2ae0a2dd5c914ed002d348659b","source":{"epoch":"121424","root":"0xd4932a533b2321efbdf14f2f5fb0047ea886bfa442a805f1008c7267fedec51d"},"target":{"epoch":"121425","root":"0xa054b44c76103ba3ba399c401d3c952df7f815c618d742e6c87285dfcb8fadd9"}},"signature":"0x8e1e01fb013c4ad0a4e66c4476364436f07d4e48c9fb96c00e2f48bc80cc1aba2e11b444b143554f5d7baf8603bcc89e13f36807481b81ec3beb89ad07da893561ae66965f337b50dca1421fa3fdbbf31174a028bb260f0bb5591d29ef76e1eb"},{"aggregation_bits":"0x000000010000000080020000000080000000000000000004","data":{"slot":"3885630","index":"51","beacon_block_root":"0xb89c674a5e5ca6434875cc53b7ffcd1ec31a68bce8f4d28d65ea2f5962483123","source":{"epoch":"121424","root":"0xd4932a533b2321efbdf14f2f5fb0047ea886bfa442a805f1008c7267fedec51d"},"target":{"epoch":"121425","root":"0xa054b44c76103ba3ba399c401d3c952df7f815c618d742e6c87285dfcb8fadd9"}},"signature":"0xab50fe5b2156db9750d28f213466e80f1977c7bc64f12c0153977560afea1a61e193a22103304963cb32cfdcc09b09fa04071e88f23f211436b5fd479132069e7f0b23ac62d4abbc01e1cc883099641d38efe93dd2f2da95c24f98c0c52dac22"},{"aggregation_bits":"0x000000000100000000000000000000000000200800000004","data":{"slot":"3885630","index":"25","beacon_block_root":"0x11ad56ef6afea6c1f7d337f6d09213f918edbe2ae0a2dd5c914ed002d348659b","source":{"epoch":"121424","root":"0xd4932a533b2321efbdf14f2f5fb0047ea886bfa442a805f1008c7267fedec51d"},"target":{"epoch":"121425","root":"0xa054b44c76103ba3ba399c401d3c952df7f815c618d742e6c87285dfcb8fadd9"}},"signature":"0xac13e3f1309812138422c8e22a50ca7a156baca26d92988d764ce0d7de6aa283999a026b9dad011f3cddc5f075e87fad15dc18312648c04728a599c94580977b2d2d5ff8f2d2434090f6a5d9f2ab210eea878210c76ff85003fd2e68d93ac539"},{"aggregation_bits":"0x000000000004000000000000000000000020000000000104","data":{"slot":"3885630","index":"44","beacon_block_root":"0x11ad56ef6afea6c1f7d337f6d09213f918edbe2ae0a2dd5c914ed002d348659b","source":{"epoch":"121424","root":"0xd4932a533b2321efbdf14f2f5fb0047ea886bfa442a805f1008c7267fedec51d"},"target":{"epoch":"121425","root":"0xa054b44c76103ba3ba399c401d3c952df7f815c618d742e6c87285dfcb8fadd9"}},"signature":"0x91deb3ac86cb68ae68ff292bf9a6b55c617798fc45cd9c6fc89a766c4a8ae1bd96836ef34f85d059e8dea09f7a72f901184d220ff235f167502df9b0f5e35b0265128a44e8526628293fb0025cbfffdb2736c73de78f93ab894c5d843257cfff"},{"aggregation_bits":"0x000004000000000000002000000000001000000000000004","data":{"slot":"3885630","index":"50","beacon_block_root":"0xb89c674a5e5ca6434875cc53b7ffcd1ec31a68bce8f4d28d65ea2f5962483123","source":{"epoch":"121424","root":"0xd4932a533b2321efbdf14f2f5fb0047ea886bfa442a805f1008c7267fedec51d"},"target":{"epoch":"121425","root":"0xa054b44c76103ba3ba399c401d3c952df7f815c618d742e6c87285dfcb8fadd9"}},"signature":"0xa46878400633ef0b5d6d952bf149a08ef0a8cdcf0e3e2594b04cf606592b9e54254b55de7db695f7627d82d71ef0e337099d65cef685aa38df49e2fce82e3b7f81bd04c2bbed757be654c98a06dd71334d90e89731fb7555a349b8ab91158fd0"},{"aggregation_bits":"0x000000020000001000000200000000000080400000000008","data":{"slot":"3885630","index":"28","beacon_block_root":"0xb89c674a5e5ca6434875cc53b7ffcd1ec31a68bce8f4d28d65ea2f5962483123","source":{"epoch":"121424","root":"0xd4932a533b2321efbdf14f2f5fb0047ea886bfa442a805f1008c7267fedec51d"},"target":{"epoch":"121425","root":"0xa054b44c76103ba3ba399c401d3c952df7f815c618d742e6c87285dfcb8fadd9"}},"signature":"0x948b12af55fa2cb0dacd704c8cb64162242dccfec2c692b844eeeb1607cd1be76613f70adb9013d063717d4eeeeeed0719b679b3d89a97c1def65fc20f4071f35120651a28fed07be578bbf33485138d13be60daa952e84c364a5b915d8a9d79"},{"aggregation_bits":"0x000000000000000000000000000000000010000000000008","data":{"slot":"3885630","index":"61","beacon_block_root":"0xb89c674a5e5ca6434875cc53b7ffcd1ec31a68bce8f4d28d65ea2f5962483123","source":{"epoch":"121424","root":"0xd4932a533b2321efbdf14f2f5fb0047ea886bfa442a805f1008c7267fedec51d"},"target":{"epoch":"121425","root":"0xa054b44c76103ba3ba399c401d3c952df7f815c618d742e6c87285dfcb8fadd9"}},"signature":"0xb3a5f58be42f910e7256042bbbb0627f62dd4f5717b9357480a7605276915d31ae0f622e1a5d50c14944213e90b9f6f80cf7400358c46835c91968c61f32aeb007b58d0bcd8ce2c7b4ac02b7c8c38e1fa2b9ace614bda2cc2b5a659c51854389"},{"aggregation_bits":"0x000000000000000000000000000000000080000000000004","data":{"slot":"3885630","index":"58","beacon_block_root":"0x11ad56ef6afea6c1f7d337f6d09213f918edbe2ae0a2dd5c914ed002d348659b","source":{"epoch":"121424","root":"0xd4932a533b2321efbdf14f2f5fb0047ea886bfa442a805f1008c7267fedec51d"},"target":{"epoch":"121425","root":"0xa054b44c76103ba3ba399c401d3c952df7f815c618d742e6c87285dfcb8fadd9"}},"signature":"0xb5f45c14e4e779c22bcffc5b1cdb4c8b0d47d14144ffd583eaca726d5b96bf62ccd8524839aeb0e4f0dd18f87508bdf410c5b59a52d6fdc089a74a6c7236634e38378d21ce91fef9d486e5e67e367014af8b720c728eec2c9d8485f0201882f3"},{"aggregation_bits":"0x000000000000000000000000000000001000000001000004","data":{"slot":"3885630","index":"59","beacon_block_root":"0x11ad56ef6afea6c1f7d337f6d09213f918edbe2ae0a2dd5c914ed002d348659b","source":{"epoch":"121424","root":"0xd4932a533b2321efbdf14f2f5fb0047ea886bfa442a805f1008c7267fedec51d"},"target":{"epoch":"121425","root":"0xa054b44c76103ba3ba399c401d3c952df7f815c618d742e6c87285dfcb8fadd9"}},"signature":"0xabd68fa26c4af6c714a14c955399df43628b53ee1423974451cabe32b0a6b29d3d4d59063881da9d44b634885c30a258079b1f3e0fe481f02f7f3781313a21e13da1bf5f67e1fd6bdca6192354757123ddaf55a694dbfbc154527d74d530ffa5"},{"aggregation_bits":"0x000040000000000000000000000000000000000000000004","data":{"slot":"3885630","index":"56","beacon_block_root":"0xb89c674a5e5ca6434875cc53b7ffcd1ec31a68bce8f4d28d65ea2f5962483123","source":{"epoch":"121424","root":"0xd4932a533b2321efbdf14f2f5fb0047ea886bfa442a805f1008c7267fedec51d"},"target":{"epoch":"121425","root":"0xa054b44c76103ba3ba399c401d3c952df7f815c618d742e6c87285dfcb8fadd9"}},"signature":"0x8e648d8e5bdb730862aedc53d941668125072ad1b28b901ae75d256f6b16ee8287cd1afe3f0fbf1d717d607abaa18e8c16e86146a2bbde4944311fe7ebce457234e3cd79dec243660c0578f892daeca7235b84ac49edbfbfc0dd069f525d3939"},{"aggregation_bits":"0x080000000000000000001000000000100000000000002004","data":{"slot":"3885630","index":"55","beacon_block_root":"0x11ad56ef6afea6c1f7d337f6d09213f918edbe2ae0a2dd5c914ed002d348659b","source":{"epoch":"121424","root":"0xd4932a533b2321efbdf14f2f5fb0047ea886bfa442a805f1008c7267fedec51d"},"target":{"epoch":"121425","root":"0xa054b44c76103ba3ba399c401d3c952df7f815c618d742e6c87285dfcb8fadd9"}},"signature":"0xa306c025c92ce9435ff1ae314b6e05993d2ba5a1170e353fba68741aa67fdb15e92923a77e495a19d4287f11b88a6591025da8e16869cf608e747f84f6beb0c0b1c2e3e9aaa516bdfab6967c8c08ee8aabfd3f9a091209bc9f8c45505ac5f41c"}],"deposits":[],"voluntary_exits":[],"sync_aggregate":{"sync_committee_bits":"0xdf7edcbffefffcf77f7c1e2dc7f7dfed37bfffdfdff7dffdede9dfafebff7affbbfbbff6d3f9faf7b1dfffff3dfddbffffefdf3dfcffddff7fffff7bf7fcfecd","sync_committee_signature":"0xad3d96c6ef51c60c30f7e523823ae59bbe0063c2e4e27ca2c766af7b446ff892afed42138c1a24e71746c6ecf76799b30a68da543efb8ee2b21bc772495b47d3d090ba405bf863317346f8e8efb02ba8c1506eacf114b81d24ec5361e3f17bd3"},"execution_payload":{"parent_hash":"0xac46946bd3cdc031d852b978c172e2d0d9bdd79500daa9b9d7e858e63615c765","fee_recipient":"0x000095e79eac4d76aab57cb2c1f091d553b36ca0","state_root":"0x14164c822a0be2761257855d2ed74e5448d2ae24d114755492ae9ce665d3b23a","receipts_root":"0x3cb23b6de7dd991aef588090b4489639dfffe01cff6bb87b7e572d98f4c9e163","logs_bloom":"0x8024000100000000000008008206008000100000200000000401800008800030000008080040220008000000000000000002100000190040001002040020004002800000c53010800800300801000020000080004000100001000000000000004000100802000000000000000000080000100000000024000002001020000000000000004c010080005000010000004000004002000012080000104010004000020400000000004000109003000001000000000000040200004000000060200200204002008000400000000200000004008000200002001040010000080020000010101000000200102000000080000000401000000000400800000002000201","prev_randao":"0x117b5960bec150ca25ddf28141af33c49bdd2cd9efd6b85a3bbad724d3be0a30","block_number":"7588706","gas_limit":"30000000","gas_used":"4326272","timestamp":"1663135584","extra_data":"0x","base_fee_per_gas":"2288831325","block_hash":"0x60fb5ec66ae0b024fb109479d570ef2128b8a074bb804c327812534d170b6c0f","transactions":["0x02f8b10526849502f90085016c276710830112e6940b218efdd54b5782cab6496d897313551bd0ca0280b844095ea7b3000000000000000000000000f91bb752490473b8342a3e964e855b9f9a2a668e0000000000000000000000000000000000000000000000001bc16d674ec80064c080a0a6e99489c395b42f245811990e5739f5d43dcae288d178079518a7414894f281a00253de5f823aaeb564cf2b0410650e6a53cc13279c6aa7bf20cdde4c5dbd53af","0x02f8af05028459682f0084eaa0c61882c8d594fb7378d0997b0092be6bbf278ca9b8058c24752f80b84440c10f19000000000000000000000000ad40e9288d09180f7d30f1ac39867093c0fabd0a0000000000000000000000000000000000000000000000a2a15d09519be00000c080a06a4ef040d105078bc0cfe811e3d1de647655604eda8f5ec17c0191e8e8df38aaa07501b5cf3852968f615acebce67b2b80e2989668172007d93e8ba3e6a81a6865","0x02f8af05248459682f0084f7690e9482b4c794fa158c9b780a4213f3201ae74cca013712c8538d80b844095ea7b30000000000000000000000008f138cfc5de71fcde7fdecd87eac6aa6a536bf850000000000000000000000000000000000000000000000008ac7230489e80000c001a0c673aa08ed0cc5a97fe27d3a5dd2c3172c24488fd90c37c6d07c0cde26ab5a00a0092965de93a24031c76e87ea572c1512690a23b3e555ed7c80cc6e740e0c912a","0x02f8af05108459682f0084f7690e9482b72e94cc7bb2d219a0fc08033e130629c2b854b7ba919580b844095ea7b3000000000000000000000000805fe47d1fe7d86496753bb4b36206953c1ae6600000000000000000000000000000000000000000000000004563918244f40000c080a013e2be9e27d42e32e2d678d1e860d6d4dc046051816ecbdb839e7914e9a49510a01ac60f455cb7f81b4ed400de5284652bf775a21101cb88fc95d558c8e9e98d23","0x02f9023105138459682f0084eaa0c6188338ea7b948f138cfc5de71fcde7fdecd87eac6aa6a536bf8580b901c4a642959d00000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000160000000000000000000000000000000000000000000000000000000006322ce4d0000000000000000000000000000000000000000000000008ac7230489e80000000000000000000000000000000000000000000000000001158e460913d000000000000000000000000000000000000000000000000000022b1c8c1227a000000000000000000000000000000000000000000000000000004563918244f400000000000000000000000000000000000000000000000000004563918244f400000000000000000000000000000000000000000000000000008ac7230489e80000000000000000000000000000fa158c9b780a4213f3201ae74cca013712c8538d000000000000000000000000245b8abbc1b70b370d1b81398de0a7920b25e7caffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000000000000000000000000000000000000000000000000000074254432f55534400000000000000000000000000000000000000000000000000c001a0e44f550801040fa643af8b15d52ad116297de7bb511c5dbbcff6c34edc047da6a02cc073bb9dfc0108bf279093e2f20256738dedc2ad01a543a66cc2f4c0ba1b7e","0x02f8af05048459682f0084f7690e9482b3da94d87ba7a50b2e7e660f678a895e4b72e7cb4ccd9c80b844095ea7b30000000000000000000000008ca1651eadef97d3ac36c25dae4a552c1368f27d00000000000000000000000000000000000000000000000000000007fcc147c7c080a0e938c9b15fbe7de9ccd30d17d826634754de31ca8df7c0fa427f480191f87051a02b9c75e137b22a8b05140a844ef66cc870fcb3af45eeb46ed5648e12bbe1cc63","0xf902ed8301ca1a84a5f1f026830557309400007d0ba516a2ba02d77907d3a1348c1187ae6280b9028429dd214d00000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000061000000000000000000000000805fe47d1fe7d86496753bb4b36206953c1ae6600000000000000000000000000000000000000000000000000d9695880d778c1b000000000000000000000000000000000000000000000000000000000000010086faa5a0b1b3b980fe6b27ce5863af9ca3c887d52a624d73a2a4d9717c5992d20000000000000000000000000000000000000000000000000000000000000014a0b5cbdc4d14c4f4d36483ec0de310919f3b2d90000000000000000000000000000000000000000000000000000000000000000000000000000000000000016065f49bd49de252a7f0d9100776c70f0da398368ef9866f8e21fbb0e3e630e74f000000000000000000000000336a943995bd6b8c9a1b17e1a4b066384440eb85000000000000000000000000000080383847bd75f91c168269aa74004877592f0000000000000000000000000000000000000000000000001bc16d674ec800000000000000000000000000000000000000000000000000000000000000000120000000000000000000000000dc31ee1784292379fbb2964b3b9c4124d8f89c600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000014336a943995bd6b8c9a1b17e1a4b066384440eb850000000000000000000000002da00b14d309a984c72a52b67b7f9526e680bba8fa0c466a41cc10a6c063cd88fc70a0274d237d77ab140cd88bb1c2cea7868faa0c5b511d46b79abcb311b2f5a035ce","0xf902ed8301ca1b84a5f1f026830557309400007d0ba516a2ba02d77907d3a1348c1187ae6280b9028429dd214d00000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000013881000000000000000000000000805fe47d1fe7d86496753bb4b36206953c1ae6600000000000000000000000000000000000000000000000000d9695880d778c1b00000000000000000000000000000000000000000000000000000000000001006481f78ec5c295fa9a1cffcf9bf48f6899211d2f481fae231e4a790bec4487240000000000000000000000000000000000000000000000000000000000000014af28cb0d9e045170e1642321b964740784e7dc64000000000000000000000000000000000000000000000000000000000000000000000000000000000000016065f49bd49de252a7f0d9100776c70f0da398368ef9866f8e21fbb0e3e630e74f0000000000000000000000001f8c3653202b7795719ce4719ed37d290b07be05000000000000000000000000000080383847bd75f91c168269aa74004877592f0000000000000000000000000000000000000000000000001bc16d674ec800000000000000000000000000000000000000000000000000000000000000000120000000000000000000000000cc7bb2d219a0fc08033e130629c2b854b7ba919500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000141f8c3653202b7795719ce4719ed37d290b07be050000000000000000000000002ea0208bc574ccdb98586054b4c89db653dfcda4dc489cc09770c8b91fdd1d2fab3ea04f480e6d447fde1daf2a46ad92cd10a236c77da3fe2786f18bd0a8d0513b1bef","0x02f88f05198459682f00849f9fba618301be10946e88ddccbf76b2335e29ec3e4b9f5eb03bbaac3f80a4a0712d680000000000000000000000000000000000000000000000000000000000000001c001a05467897fccd02a7e1d847d54f6878a22b7dd6dc12a2dc9439683f9603be3ada1a06026cdbdc957c1d501e61d75d12a850996a23c7d4477039e5d0610c9a10e3731"]}}},"signature":"0x90aca2fff31ad0425a0f2a25bd92d948b5d34dfcddb15ea7fc3a7984708c70b28f531971d7b73fafd68d54ecb9e6275a0f7153c4e53c2a66b0a004338cf252e07d101e7807667bb456f38df5eff4a6b27cf1a1b51c70eb3af5297c484ad462be"},"version":"bellatrix","execution_optimistic":false} diff --git a/eth2near/eth2near-block-relay-rs/data/beacon_block_header_response_kiln_slot_741888.json b/eth2near/eth_rpc_client/data/beacon_block_header_response_kiln_slot_741888.json similarity index 100% rename from eth2near/eth2near-block-relay-rs/data/beacon_block_header_response_kiln_slot_741888.json rename to eth2near/eth_rpc_client/data/beacon_block_header_response_kiln_slot_741888.json diff --git a/eth2near/eth2near-block-relay-rs/data/beacon_block_header_struct_kiln_slot_741888.json b/eth2near/eth_rpc_client/data/beacon_block_header_struct_kiln_slot_741888.json similarity index 100% rename from eth2near/eth2near-block-relay-rs/data/beacon_block_header_struct_kiln_slot_741888.json rename to eth2near/eth_rpc_client/data/beacon_block_header_struct_kiln_slot_741888.json diff --git a/eth2near/eth2near-block-relay-rs/data/beacon_block_kiln_slot_741888.json b/eth2near/eth_rpc_client/data/beacon_block_kiln_slot_741888.json similarity index 100% rename from eth2near/eth2near-block-relay-rs/data/beacon_block_kiln_slot_741888.json rename to eth2near/eth_rpc_client/data/beacon_block_kiln_slot_741888.json diff --git a/eth2near/eth_rpc_client/data/beacon_header_goerli_slot_3885632.json b/eth2near/eth_rpc_client/data/beacon_header_goerli_slot_3885632.json new file mode 100644 index 000000000..58eb72099 --- /dev/null +++ b/eth2near/eth_rpc_client/data/beacon_header_goerli_slot_3885632.json @@ -0,0 +1 @@ +{"data":{"root":"0xa1600e330efcf934b23706365793966c4fed60d34dcdd897620810315b5abda8","canonical":true,"header":{"message":{"slot":"3885632","proposer_index":"121460","parent_root":"0x0cb13db52b63240d561b36495723229e0424fc72a25e74c02b61ae448a5f6347","state_root":"0xad73703cc94bfa83619e913bb7de2850ff08d613008a74a80df4e6977f23517c","body_root":"0x6b603cb237df9ebab0c7dc55d37ea99a2cfa381a49d220493df8f3cc3922905d"},"signature":"0x90aca2fff31ad0425a0f2a25bd92d948b5d34dfcddb15ea7fc3a7984708c70b28f531971d7b73fafd68d54ecb9e6275a0f7153c4e53c2a66b0a004338cf252e07d101e7807667bb456f38df5eff4a6b27cf1a1b51c70eb3af5297c484ad462be"}}} \ No newline at end of file diff --git a/eth2near/eth_rpc_client/data/beacon_light_client_update_goerli_period_474.json b/eth2near/eth_rpc_client/data/beacon_light_client_update_goerli_period_474.json new file mode 100644 index 000000000..262ff83ae --- /dev/null +++ b/eth2near/eth_rpc_client/data/beacon_light_client_update_goerli_period_474.json @@ -0,0 +1 @@ +{"data":[{"attested_header":{"slot":"3887699","proposer_index":"81534","parent_root":"0x31ef16b31813e729e2a819861124abdd5035d0a505b347e5e3251174b219678f","state_root":"0x40d770deed75c993dda5754129b026629f789fea127023294fb6bf0c474fc6e9","body_root":"0xd5dbed4a0357abcc4c3dc08e9c3acaf3d7c4ae04ef642a6e5ad9404a3e80d8ab"},"next_sync_committee":{"pubkeys":["0xa5d19e55a92ce975c3fc420a8232128d667f2b1cd2701e739a3493843c7c1d02e5d1602e8595c68ac07e61d28a161032","0xb9541e02a4716756ab93cf95b34ddb9c962a39d8959d397a36c083548c757f668ff56e99a503f07dae1453b6f6170df1","0x96977e30c3a497dbcb08b5449228d78627333ccf97f1cb70052fb71088b47fd4b52cebc82564536c44851774967406f9","0xa74a2b1678b4438fd510a33344348f0899a887d5b65cd56a26eff5be4b9b73ef86d4e4d423942400dae6928ed84ef763","0xa41732bc0d82f26f55b289c7e7f5be5cd96550b872f3b371f472b8bf7792195352e5a8cd2ec752c2d020ce9db11100be","0x9912751d9ab89c55d2be2b6d69625179d201849eed9dfc2525e2f5f4059d7e19610b90044fb618a80b2fc3369d9ab413","0xaf669d16244c5012fce4dd6ef9b5c474301a9e5665cde9b33ca5102fdab235a67339ef149f8044afd0409f2bb602534c","0x909df6160b331ca3e9cfdb3c9f4295f2dfbaebb41f278e1ad3a1ef9f65176a08336d35c1319b9bb8af46a1e9761ca317","0xa67402d4f393bb089cf0ecc9d7dfc4feb5ce841294b5db76b0790487f68dc0a30d5cade85f7f34ac779a07d91e5590b7","0xb376fe563916d66cf04ae9e5f04435e6224efedf8c539aeb6a2a2a26b9d02ef73a91d8b64befa5b84d36dbeff6aed8b3","0x85938637477efa4650aca7e161d14e7c342c4bf20eab9989141047d1bd9fa9d299338304b7b7d7c42f9cfe11855cdb81","0x84d54c90516ab8d6e32f6598e4be6404a24a1d433623e4f45a3955af9a1b3ac45529beb1ec82a1df0c11c781a09d6614","0xab616fd56e2417c77caf388ebc4d68ad274d3c001d5a7b4b603026d528401c8956eea19b3e8a53d5f7281e42ea8e016a","0xb221d04e6a6143f8429edd5909f33e5f2b1e856f4909946e0d3a627b97e8fbb0932498dc844d4631031d04f91e0b69eb","0x83bdde1bf6a6668e2e6c06e68fa61bd4cbbac594c6602b9400e9df779ef3b0fa1475d44514199c68afa7ac37e657ac85","0xb0840afb175686abfe56408f89ce13d61d945513b7d9c57001e47da6a977f00df74e1990494e019402a8a8221be388e4","0x88fc5bc7027b9e105882b75e20e04da441c8893949efb051f39036c05fb086a538eee6b5a9b219b2421a8cc5eba5d9e1","0x94d583fca5742c0e78ee2c76130befc0fbfdbe9e25d1f0e6f7f7ab41d6e02ee8a328669028443dbb87533cba3f2fa441","0x83048e51096b86eb986dc47ec63f1460d6f101e580c08dadef9ff277e01573874dcb2b7b21b7e659811b1615ae755dea","0xa21a56a0f2c9c0c81f8f6272e6d9987d2a8679fa228743ec71c782a245126dd9ed5ab02a144e6be0b85b64a3c1525976","0xb4f7fe77c536f4fd70e73e5c0db37340d7897921d8c45bdf8e97cb212be8653c515807fe6abbd3e00c9988ba3ca2e425","0xb6ca34a7227add5b944b5b4b53f722d3aea877a746c8c2b246f9a456fe4cb041bbaade9466851739c1a397f69d423b55","0xb38783bdcc794f9c10da92f973bfe3b3c21abb22a6ec7bf899a6d235c6d164b61f09257dd85b612cf9743af99d4fbdf9","0xa6b217ae422013fad653cefa3efa5f9f1cce71f4bf0885465e33ef9f130829c8a92819d789e04dafa5f4bd9f7eba50c6","0x8341f646643ccebd8a4858367a84bfefc31c463ca890294902fac78748eaf06fd12d61faa19cccf23ba187a8f155f7c9","0xababf3d6c86e349e4033719f3d0965ae569e7ef882dc1e3234b4e4eead183d2ecb113cdb1f902c5f9af94ddbdecb8d58","0xa975f5dc9b2b06d7cc2ce1e06a4f84778fe45efdd9a8cd7366b951069338fd3d2c0c90827d67d71609aee82016199819","0x940e481b61937989ffbb5dc555d9af9c977080495ac1037608fc52c2ea3f72a6a66911e70f7154b0db12302b804b373c","0xa4c59d8af44e428cd74ae855f2ca67a06ba5eee5fb9da04694faf2ff2e70d8eaafdb5bbb5a301d1b587890fbd760fb31","0x83ab416455127267b92300eea2b58afc25be10665d36d316881ca9e6771e566596fd78f898d8136e59660dcb05f187e2","0xa0cace2b688b29e40d4f7c43de2b0d2d931f08b577b0df98b554f1909d949a264e620400aa04ed18d3dd8101a7f98928","0xb2837c94fcf3b27a89b44202f6047a3b7a429ae5e40fd92d88edaff33156faba102f2b606d47665c83c7c12a8147a0b3","0xa975111fe39664e484fac77a4bde6c11c5eb1ee585cff788624bc1998c064f1adc84de2b684d061e7fbfe7b411afbfdb","0xa9614fc8e69b338fc21d8cbbc219852b8c36fcd75937294507d3a6b7aea63408ecbc18b383fc93ba03b1d0c9a49873bc","0xb2a4ba247c0519713ae8ab0ba901337267d7f8b17c388dfad0b5df5697e2448a16b55903bbea757bfb53f1f1b48938f1","0xb5ad47471eeb31af6b5be954284794c60d5ab2db0e126e8e14a042c5bef9e13b2904c370cacab273ea96558a386ddecf","0xa32d7c00aa684dbd53bf77dfe87861dc589283f8448a5ba80e64459db3c0dc1115468481aae7524f1255afa4906d537e","0xa3b4c680e4257bfd949eb839e8e4aa6906028618fb655805c5a3049ee5515495b29ca614c8f965cb65059e51eadfab42","0xa91d62e9dbc68575e5a777f005fa8738d73731766274447b34ff16b32aa137833fb625f22501a6a9e019ca91a9a15008","0x8036d64bd21f196c89e3adb67a8821fc730f8879057a855da7d87214dbef006ddec2f8808b9cebabab1cb60c7e74a083","0xa1fb253e04c1104973121f183196e9d87772cc0a4236208bf83800506e856446cfba6b43cee3b14e4534dff559bc1a6b","0x909136853c15f8e27c0ee0a2e6f97fd13068b762eea087db54ed1ff5e18c1db433157bf7def458af023862e8d75535a4","0xa78ea6593f9b02915588cce40a70cc77ecf65fbbba147c6c1a5ba7f0d5b7b6dbed881fce6b7cfe2a548af03b7985ef1e","0x966ae896219a953cbb8876ca1f25781907608cc7cf119d89fab190af910fd8a3d19c65d2e0c5d2adc6241b010e695b9a","0x83e2c4e92486cb951b079db5139db5d65b59e6a6ae4c88e358cd84db986b837df8e0c50571756a1252866e7ed91a8c9e","0x8ddfe5fb3e45bbd2a4a4e391df29b3170729352d149127b3cc33abc3afa33b41e34a447600cfa7ff1cf426efe6d609dc","0x83f95953f2a0811f4a56753c2561f2d308b1bbd2d1cf41e04cf75b7f63b2497eb8142677244f162a9f051338ecf70e20","0xabc4f1a57a7161931a14eaee0972314077f2641caebb7a8cf3ad40b7e7c68449b5ab50aab90184e1898f93e1d6baab48","0x99075231ea40a4ae85d4b80a7d10970ea86a2bd1621e1630ce7d8a1bda68d55c35f14d58e491ecc39e462c12fc9a5bcb","0xb5496fb5d61ab729ce53b6553e329ee59f15dd51524fad58c7958aed2faef7c3419a2b6de95e8735165b4954a8071a5a","0xa0bd5a155946a3478b310ffc4d7db84b18ddb8085757e45b3bf06115cb13aca8ea073ac9bc9572da1291db1fb9b13dde","0x8aa79ab0eb8ed7ee3ea47d54eeef2d3f409833ce99860bd006315eb5c10c92570bf073f87200c1cf6dc8407ef30530f2","0xb51db1fccb69207d81135c5d0e0712a406a0eab20f2d73f4358f258794cb4e4337df8418310036a4302c5e6ba04211e3","0xafc771ef44c9e599245527f535f6d538b7aa2d5a7b9f3ce309156809a1608061611183fb9418f69afcafa0b46f7e7cd0","0x8716ec585e1ada392491961fb67e715834d679180668b5e86ae87789543eb2404cc539d25a94c0841f19c6bffd5aed31","0xa04fa7a494ebd3685e68ce643a4099616a3b9cb4e7ae012c62d8d694c889da69e24ff8bf4c182f47a8ee7f2490a3a4d2","0x95f15c1f61787008e4faf381b24e659200dc59d4a3803c2541d4833b201fdb65494d6a8bd235368f58524b71a80a0eef","0x86dc014198c1afa677edb2a49e37eec92a4c07c4773c76bad8eb27af9023f7ba6d695c117f84e37c847280c0026f03ca","0xb462404172bad89a92d69c6c8a24723c0e493ab5acf3046fe700e108bd551e66072c70cba4a278f18dded59bffdd51c3","0x8059f21b6dad95b6b09e1e42a76d7ae5f50c8e7c38419a0beeed7962c5014af81e9f2a3649a2599f396d1b94073e4bc1","0x8883d77378171b32e0521d64feb0043c48c7eeba8336de897f1ca27afe7fbb091d6cef47bb12b5eb0c9fdc8c63ca34ba","0xb982ed465eb2ab524f4cee2b110b7c30068622d4e9240b134806541e04ea08154b8a94e376594b663493c9a1ad91f99a","0xaed7fb4c681353e802ffe9ad2a868e1c4a61496cf0e767f310a9fbac20b71961abde27b96dcbf42753d6037f56cab89b","0xb4eb1822db6093eee0cc7a85478a3abdebb34a4c14dfc78220cb83b7e61a23c9bf25fb7ac471cbf4412a49e4e3d56193","0x989f654dc9e751f408d445db02b2805ba948e3d5ffdadd2d66523d43dbec2c6ce683603ccbf7cf010dc2cc2dfdba4a16","0x92b6abb0603c14a898cf81968a60deacc5c0229f834d820e7aaa60d87e52b94ba44fd6d7aff46d652658c9be9181a443","0x9932d94fad2b5c3f5a7cf96ef4b564c0899d9eef297c482d36c62aa9e79bcc2da25f312e100fdb53856f4be4e673f417","0xb1a70bdab4869ae6710e4c616c44aca18ba68418a16509b36d0ccdefbe4733de05c215ced8cd34decbf10e1a0e63ac11","0x8e792669702b546a66855b386f6d5ba38ab2101c0cc9bbb55b94e41a70ae41fb1318781e31392a58aaa356d0966ad235","0x9259118388e3f3adcec8e9f888ebe16390c34dcf6b847c3b313655b28c790b12ed391545394b7a7bd8e2161bb3733adf","0xb8384325fafd472f20efebb32713f2bc776000633dac15fd7c8bfe449f5c269420ccca86113ce24f22a120e9c36f8250","0x878c9de86de202c4efdeeba82ef06d26fa5b9f073c42dfbb546abab6ef657f1b55a5b415a60f79ed064ee59a4df00e05","0x8f96e06e6e6548c333c9695107eedd80d4d7ff7a4395198f2856b984378a4c0205b55094a76b9095bf24c7bb115ad1ef","0xb7ac9144a0a2e97532a92222a77e5ab478876c611b95af149bf09df6d2be9040e9ab5dfa8abc15e55e515761408b9852","0xb97dbabf9f44a40eff8a6c8fc72d8d74b29a392ec06fd76fc4d4627f14da2227e5e3c44843598f154379f20f81b683fc","0xa314b455ccb9f41046c805fbe8e580292375c0f0e487b8abc4e5fd75fb8e8ab159be6deee568e17506eee55e42f83f4c","0x82bf8d4353260285da3ee47856b674eb42b40aeaeb3126ee505a488aee425f8ff2de38a97b06eaa708690edaa18e8a6f","0x981f17d773c2f0d79789b5842e725392de9e0715aa2751700214107af8fd954cb90cec3b19e49d5c486b0035a214d273","0xa4433c981dad016a92553d0d8a2f4647ec81f1ed86ba58241204f383c07f09e852f840ca45dfbf7c08001bf0cc42ff4a","0xa69ce07177f0cae13440770a759747d4c5b97efdf706c7780e503e996e8f2220fe99c2a249f8b097c8535cd6897358f3","0x849ffc2714795d7db6c974fe64e2ace507b3acbefe9bc6d01e55f2991ff6b6afeaf55a49f33aae182e884f54b36142f7","0x989e5915f2eaaec0ff52eba0d756a5e74742e1a51d0f2bed5620200f8c3716ba3cefe077226ac2cf994c07557e31f4ad","0x8b2ea06697ee288da68bf3b94aa0cbf4c9926620a91cc74d97d5c5c9fe22ffdc40f0adeceb6cdd7b8865c4323bad923e","0x87416f03d64d609c517cb3c53478500e0c7fa5e474507e89b60b24173588c9e61c9e8b35adf0e0c7ac5dc362850f7bfa","0x83d0d77c4ec2691e45eeed8d0869cd012885c25a1371f91b3cd7f39e3a61c96cdd3096d2e7d7c5640a0427add9da22ee","0xabff1db58e31b4885dabaeb1970ca96d5dc3a8842806d5932a144c38f782c5e38c45259bd90377b6c8e5108699363d8a","0x946fb768f6ae02ca03743021dbdf2e25ac441b4898515cf5e1a4b1a158ddc25e97dc4f125863c0985c6fa9cfe97b59ef","0xaf16fbbf5e09207eefe2499ef10681aa9240140252e9de3ca7fcf2aaa16b868395c57d6ea638deeab6cbba798c243ba8","0x8267de7b22961336b67ec7ec704033a2f2a2a456fb063379a20acd3f449701755d32cf443089326b46c96b73756d24ba","0xafd77b86f6ba2d99ea56a1eebb741ef3350eb71ad4b932c2b4ea245d72e04f82ddcf4e3d47a56d2e43a5831a65bdd0b8","0x91f7ceb3d03726a3eb6bfacdad47d88ff61d0a0a77a49d983fe0c28bce34739a09965c04a08e7ed0b5b79d86086ec006","0xa87936ab79ef651830c417daec8f182c9bde78b45c943f27d1dda44d09a6b4d9a6d790e09abe65d56ed1f2576a6ae031","0x88f53206d0091cab3cfe6201c7467dfe258d14cf5de081ab936a13188247da0e938419e62ff046ae74324451d70312e7","0xa418240ee8837b03ab58eab1da116bf90eecd7adc2a373cac5e179b7b0dbea226c80900f2ba930c7e595c67ab36e1c3c","0x855321973606d67de223937e07f6e01e82de77646de48b1998442aabf2016d4c5e8c96c66b977e812e0c3e764884743f","0x922234d1a169aec4ece0063d8ed944dc474ec083e8da08c0f120f986a20f6a7aa42e00d36d8b3f8ee33aecac4e541a58","0x8da86d3794ea1b67819000e5217ebdfe7295a66ffe17f27d4d3bacc4fdb4dab224b32eab5f3a7bb3fa312c106dc45051","0xb94f8862247ab6a9d29813399c283391c450e561474e25346dc394774f896ec2fd85d1d62ab985538890e1720aa543c2","0xa5965552749c534b6e97714a72cc5d509dfeab9d1f38b19a1ebe3ceeed11c76ea9c776606940abd88d2897f55998881e","0xa608a1a1446dff9f4893da5ac9182f3ac371c721cff62d25b4b1640f862993fb89a4509f88f80615213f89a5e7320af7","0xa181a1c4a49783f2daffbe5d4ad1dccf6f18f06d3d0cb6385f5f1dd8d9fd01a82d7212eae2068c64e038f1132e2f4c47","0x92c7ab533c523204390d4446ddb9c6bca21400da7be2a9f68b84970680808bb2eac00d1b22373c4adcdf321c02fdc844","0xacccf044cb78087233f5e4c713765029c9e77acfe4de65d3185409c3e88c7563d3c4b587a9ee9b9e13746ee0c224cd14","0xaa1c4b7a1c4c22d4831dd61bf4b876c5d656f08a5418aa429d05e36838adf83ee2e715f50142c90ad1fec917d1d54327","0xb51edee4b2cba6fe8a33e685c2f4dd4a1d87dee93b97c919e82fea746c73b24a4260711944fc473e6400166c781ba1bf","0x863d5a1e50d91ae69a45236e4447dd8757f55a8845a9944096efc877b7eb49855a16abf817baa6f0b632c6e8a2e0cd76","0x832bb9aaa1b50a5a8e00ec4e28274e12bb77bb919322fff05172cce670febe584130dadd2ded85c216e931ac71c2023e","0x9065bb21dcc16fb82b0e898b394240f1c777de0551fdfc8930509d05d41deae70e451a5e313607d682526aa0c8a20251","0x96a6686d949e1ff89b42e31ffd8ae053a1f0beca289af0a7386f696048b274edd69369854ea9b154c61d6f8783a3472a","0x86f184fcaa953a7ee381812456dffb246489009e37fa39b1bc41db51c7041256825dff8e15a4a2368619d030a5cab77b","0x99bae64e40355050e21918c372e9fbd1fbc2ed9aaae84612cf16bf448f8e5f53f456da2212c8592dcbee74e52c15b71c","0xaf8150fd4e46b4afc87e1be9456c55d461f8ef9fd2fe14f16bd9f5732bfb4b50578ed88d4b6eaf55546540f6f6272f5b","0x8967448eef5098c980aef8df769520f2c9454a63feede05d6b44fc3bdec5825ba3d4b0b6413c6e5f05e9b83a20e7951e","0x84f0ab13712b08d1ebbe14b19d9d38909347e3dcdcbb2221fe5a0a4d127aa78447eff7051d5341d8a22d54ce12a687fe","0xaa087356e68eb50085e134815dceef533642e0e3a4426446e40b6d8349ed0421363192c77138bc1e4b6b0980ac0b0f5d","0xba0051ae329183a901ee6635c9e9a088c6438f8143f00e1c36d3046f93454c30656ff5d5dc57c29034d5a51607d71e13","0xa62f5e400f1d1f3a5b1a4641ab67075472a42452ac82591822247345880c180cc5a2f8cad7229b191e872ca8da3be0ec","0x97a478b128382c75d64b96169eda857a407f8eb77eb7cde6b00c616435b2fe5da6368574585863a2bb9b58e8c3c124b4","0xb070a5ba0ebbac3272df3e973fe7f03b6b4e742980c7fc9c09a8279c75c720b28326326e8aab8a3fde1f4215a37119ea","0x82ba674893021619f4dece43b577d0b9ca0f9c295253f8bf7e264a63547f9fe910333dc1197b8a6e04e5baca1ea65add","0xaacb1d161fabf30b9e17ee927f3d99d973413565ae6991f9059685d132483cdc6fbde745514fa7abcbd2468a5d143ed6","0x84c7a919970c4c9b6714d6e05b6fa1cf5ee63bed8fbbebc2660c2a0bd240fcdc4b833b582247c99501e9c77d78f73cd4","0x932b8d47e67385719448554d10164eb0fb64c7724526be2b1bbf296d91e62cdd4ad5c3587132b9b4f2ee8bceb3fa8755","0x93abf10a967f5bc04af2d771677fe206eb74df275edeaa11ef00c94130330609671a7a55c8affd569939dbc9cc1decc5","0xb53a27d6194a470af1cba7f726d9aa1164c3a68ce48064111dfe1fcc3c9a5d29561ad1051c087b8dc1360b5bc6957ea9","0xb433daa3244fc479119c0aa458e35f11ded98fbca8cc8e25da931eea0293dac05e53cbb4402ee6d18b7d9dce0c11ec0c","0x8a686982113af1496254d1ddab076e8fce54585590985163bd3b2b03728b983221ee8200576b60f8de802177c7c57474","0xae0e5620a66604b0b363377cca273c31e408686e00033741d43021dca2ba4f444b2953f3663a4b5fe142fba2900c7e57","0xb7cf70afe02c48a2e22a570fadec7e81c2dda8b8023a3886608cc28377325f452e3d63b3f12864398ec246538aba4818","0x87a8dbad5cd2e3cf6359801fc7a7b2ff397964cc7c7615b941a8c34cb88bb68dc947be764883f8a4e47e3b151d5abb20","0xac2bb6e811a9d684899bc2dca7aa3357b4d9bb0fd4a51f15cd62e2700f20906ad450d13dee6040204c0218110bf375ee","0xa69a2523be2ef1ecf2b77a56b168f6acf2cd0869d5d171e7f51e2845467bdd94b964e5122cd574d26a81c7134d181b4f","0xab480e58a64e4cead176fee4dfb80a1d61463004abc6c60c658a79994f753bdff1013160ea1655a4470e5ef9841104db","0xa891cfd7d6d83e0da186f22a33610cfe1bccfc24b180bddc7fd472d6bd7cd9a9bdcc3e98dd22e65c27dd607b21b8ed23","0x939352767d12a7ccbb4025f9215faea404df3b04b2a038126473e28101824b8fcf687545ca8442c70eb4effe5cb45ae1","0xaf370c77aa604ccf8fa4881499551c358cd782794a4c673f7beb196ea97827f54b7b88fea23ce4663c10c6efcdc9a65d","0xa54d4819f45e5ddd27150c0a4ff704548caf77df9e359fa04af7ac14eac6903bb947b865ee7ac15f9ef08a66f258f86b","0x899a7b3435d02c3a9d63b0357acd9ea73f7ea354bc70b1b8527735afbd55e783c291dd61730cb2ca9b5acaec3665df72","0x8ff7160dec3a263f1acd1742fe92aad7fa99ec2fa2e2beb2cdd6689285c955b0dbe870c106b17f7647ce8a39d7234d22","0xb851a625b559fa9a308c40036ac41daead3f9420aa6f06024dbdf020dbde845610b549da249a84af8d45de0c8e9f9a2c","0xb04037f2e0facf0a5ba77fa894441645268b1d0f0749e4155ce32bae5c5b06c24a36dc9676fefeff6f575390239fd84f","0x8a0e588a1fb06d2368dad6c1fae8daf59056388c6149ad5e66ed08158913e6d9b1851b37c959f24b7d1b4d37ed746f7b","0x888ff371e449a8477ef9255dc39a0335c3edfb682a64a43d522d984141d2e8a2bab36b0f670a7d164bf1661469353941","0xaed41e48ccfad91f2cd23e58f56e3597f29ecaf783c23021772a5ac4b427c2731340ff4340ef6bdf5f2f05d0dcd933da","0xb222c3dc0049d9a1bc0e42a012d6315bd90a7426d4db9fd6e7708b8766b6c26d3f3e78aa9ebdacf04d486f46117524aa","0x8c6a81fddb8bbe2a8661594bedac03147aa2c18d01ecdc943c39b63ea855710d6a54d55d00d83b09d0f2dd8f36b36265","0x96b49faa131ed0a531c4964d0de59f00fa0dfac1e08e3725f57d591d6de010844eb7b3b2fe7eb1733c2697a9d6c953ac","0xa28334b2b0ae542e4357ab2cccb6ce2a4da650127d1c85782b6f618d4516898698e2254c4226f4830454fd32cb514171","0xb2e3189cce4b52a374855d174190d18d06b7050e4b1cb9dccf40fb435bcc7ab75d1026eb4a801706e5859af040b6bd4b","0x93aed644f791ca30af4ef9512821a0d818364d2f8896f71d17e51569f9bb093def84b2b504e7a3f53f7f41441211d8a0","0x81c689a453b63004963b5597ff29aacfc075c20775c649b6f3245e77606e5e8f21626647a5fa13a055f683fb32d4bbe4","0xa6ac8301664778175db13b669404167cb31671a771263b9334dd785e22eaaf55bfc1075f684454753369225b4b265980","0x88c421d52babb15259b6862097cd30e0f3f07f73e3fe2af5b059fcc785b6a65d6d86b929d5cb2048139d13f36c946fb0","0xb99bbf789ba197e03fca29fd5af972e6695aa26c11d3aef83b6bbfda359f5db8d589a571ab52b5f574ed463541b22c23","0xb4d5b9c4ce0f5da327dea0e267fd891c855a45fc2d432465b8d1a658a8d355fa1a2219b6fefca1e8b128b34dfc7bbea5","0xaba2315f6e596dba92336f0e2c227a49184a26a93c0cefa4ad9f0b1375567a913b66d54fdc28b297aa3ba0c434e62527","0x926466daf5f3811e4e6f1a186e1b017965a23d123922735ae172c837fcc15ee85c449abf4af6fa2d6ec4f8cd06287f3f","0x84ca69ef818b0d4508ef59254adf546612d2cf361d0c7bdea849cc833839ebf2b2ca0700e1c7fb3b9c803a4105cbd344","0xb2113e5bd155dfe588f017997218a0fc771150fb7dd740768aa1fe7bd30036c63f6d747b7989ac26a3f87720bf862702","0xab119166e3145115a398a4218d0bd56b38695f5b7045d24ec65e7eb9cdf14e77da38ab5ccb0f680edf1d0a9ef364d86d","0x978e68aa5f44daf9cfb9220147ff509ffde89d121d08d982a0fabae9f07cb3145c2312ad200f2f0dc051820fc54d07c0","0xa25dba59984d7b2ae5774c23b0bf4e99023fab811feca5fc81a2966dd67fafcf893b252f823888dc5428fb8b64b3320e","0x88e1428917e5bf8b9b261d44fcb3d2dc12234fc7013307b61b3bceba390988f5f3cd87227501bba890af968110cd6f25","0x9287f04bbb95318131e23ec8e48a3cc38db949841cc0e17c2ec2bac3ce9ac5580f52956f50e3b1fe1fca0ae02255f865","0x99c996c7e5e6e3eb4325995e943d42ee7e577c641d91812895dc3f7cbbcb8a7f7aafd42d211aa7caf7291300b646fc45","0x851b71706460ce85862a114d968df88f3b36bc538a7154d7e2a51da6cea36d49c60236ac1f88eb36b8a47e86bcb23370","0x8e7e9e6e754d146aa487b545ea69d9b1e39d551d9a2b789cfbc404be5ae0e9448e7af43ec63b3ae8d346f65c2f32e5a0","0x8ad6eff05d1f8c60a47d4b613d3e11e9a756fca519be4806880aceaf2f8e25d326da87f461de36ad6d0a1f2576da77c6","0x8bdead73c9c33b4b7085aaaf730453c4e491f26cac05cd92dce1ec7623544bcf7f460c97ff3a193a3b17b13a090ee93f","0x962019316c8b98423cde0cbd872d35bd8e4d94857de8350a893a51371607697f2900916771acbec1cd3974ac8fc868dc","0xace0bb1b176ef62b6e54ea4e45a3a92608cfbc950e299fa40e04d285fb30ba8adbd4969714c7e4f57b8b247f478e47d7","0xa148b91364728e8754a85fd73e67d53c21c4d7a3af13b52383c2ae2a7ca296a209e3db826165934531c5ee25de9f871c","0x91a4b3a461b8f79a818df752107e62561af0df291cdaa88e589ad90dc9200670671adf8ed10aa749c704eb247124caae","0xad4c0453884c7f7c5f3dd7bc5d836741665812964141cb38709032fed4623569188612e1248584e82e68f371b0190a77","0x80fe6ff435b85c9c53221b50ee62ffa384b3d7f0ad3ea1f919180edae16950cbe396deba312d6d3645bbcd82e2ff87df","0xa3021a3468b267a5b6febcab0b57df11cba0554d8c299fd9cb638174dc9085647bbb8ffc02ccd4cee95aa3b9a1d6e2ad","0x99dee523e2ab62b31bf5484278800d8204ba12854735ffa59a2015d9e450927cf11bef05f6b1a35d057988e5841d6bba","0x995d5f1c6b14bd4e996b0faf1114ded691b15ed38bea252c7981e7db68db975fa86eb1d0f48fff12c5552f68a080ea29","0xabf2b875731a92682e3605c5013faea7a40cb79a6d669749e85b9c85d6a70aa7e55188cbd3471ce6aeb0ffe9a62773ee","0x883b970bbb71b541cc16c2125fae957b1a07ffce39e5d3b37329fb4c3633841a2cfdc8c21ff3179abc99fb4c2eb5ce09","0x95848000f3332dcb8e9ccc8834dc490c2024006227320f57ed6c7c437172e4d9b19601a75a46c73c5479deab87d11662","0xab4d32fd4fb41191a1560450a29446a4421a02a755ddfa09570354adf150b6efe1d56cc3d4e2379dc98a355264f36992","0x99d468cd68849d27f311277054fd5e7b8851c4a75151434c68bf0b0cd2f57001347f7cd719931414fb2e113d7a90dcf1","0x81999dbd972435a0f9a74e010454338996e32453926ed878b7a950b1c7b1fbd354f2eeb676ce38e5696fddc0b6d41139","0x8f5d756428108fd79c1cdf2aa5eb0ff427ee5529e43a0d69a28f92f2033b8b6130d07ff5d506ea8afde8a550a204856a","0xb512417f6fef0f61e1720cd1a71406302311a659404ed329f6f1df35907e26eebd535ea813f92c92006cb6ef9aeb7d28","0xb103d3c7170481a362c093f78675050b89bf82daa775d2771dad16fdc1392e768ae8c870e5e4cafece150173d561dda6","0xa7758b9b2c1319579983970b0208e90eae14b67710368b8715184f7405a404e6d63cdfde31e4fa7327693070b77474f2","0x8284eb42824b6acd2fbe72db9b8741ac4c8f9ecd05ca65c2ccca5a8d0d91c4bec5d859fcbee1f5ac4998ded18aa700f7","0x9839a82e885482148a24938d944d27fd5215e875e23f8050d995df0d4016452e3111b82ad01bb971b5fe6ab694c1b663","0xab7dbe5181f018049bc351add2e187e330f43120b7e11824ecf6008309de7aa80bab865c5f6287f55e41e7ed6a851513","0xb3baebcb4dd51472438c54c561831809eaf2f4bc6eef3301fdb0f1814169ea880629b02870dc05ee72693421cf0cd6a9","0xa71361c4c0f0c4e8a923171edb8a9160f0f7da9b91b2c3136f9b790878a3faf3f185b635684a0c9bc742287edbd9a372","0xab1b34b8ae916e5a8262581ef5bf022390f2010827e89b033e4f9c1938313c4df24312683eb4d542832694283b0d6122","0xb97dc014a3f50117c24d768283112decd70ce989dac1f1a1acf37def39ef9ca89eca67fb181dfc5690cbd337b2a5ad21","0xa2529a6addf033782c89baa7571aa1af9bf07c283286d2a187ec3bf112fe43af789a3befad505c97045016bb4975330c","0x934609afc7411088038e24c2329cfaf09e4abc2733af78ed6161e76cb901bba303a082e5fe614dc3296ce88c0f17d047","0x8235e8d5e5e6cd8cdae75947b74c06b9881de078e43202930ae4dd368e564f0a0d4c7503878131588a3dbc44e9b34f37","0xb9c106097278540c54c8f4919cea96939db2dc58f01bfce2baaef56aa48e6dd7154bdd0477867dfd4bd3640a535b8d58","0xa314ae4021ee8507fecf308d54112f5e73ca116cc78ea054ec78ead1997e2cd4ddcabdf0278130d64e9667ee67c48d4c","0x96cd04c59021ff72f9d2e68226559b6ab1a5d094b8ee66e45acd29f17bcaa089846964cb14e9056cbeaafc34febc0e29","0x8765a8b82ab57bda596a14a4b6ac5c706b1cb465b73becebe3eeb3553310111d2eb9c44a1a43e77e2fcd8262ef4d95fb","0x85c4b0555afa8e2bcf4d4cd264309456cb846c29d35e6566890310e722d5ea470082240ac8559e9446a60647910da045","0xa0e02dcd84a83ea23b3e3c66e9a08864f2edfdebce2a54700395029f6398020744ccc87351b8b00c1323fcfcd0d1a034","0xa914c9bfbaf0e41d755bbb3aa18a6cd233c8a32d9dfc85d4cf901ec069047971a508ddda67e18acfa8fcb7a735120b4b","0xac587efbdee01361ef32f8e865651dacf4e4ee96936b48837e17d5413c0cf681c3501cbb50078469ba8a65e40bc9591b","0xb58e18f59c6ca7b8b3a2cdef82f1eef0567b152276b3d355380d24eb7922f21b563bde0974e930aac6689d156fdf3543","0x8d769836e3ed3757883ae600331f515d17d26777df9e98fc05766a926cb563558f641f494ba9c7fe492161177ece8550","0x8fa7f498724b31a9691012777a3149ed4e99cc9346465ea72d404197f8732ea511be4df79dedef0c14724d31afe7be98","0xaf27a2e0db6a92539cd9bf2d2dcc8f45c91d1f6a8c235b36d03aa10598e87e95dba09e4e638e875dc2c127dd6d8519ee","0xb39454b46c08eeee85309d40831a2aae4fcde977a444484a147ced1625980166f3c5a94136280440b33ffdc5d266c164","0xa8cf8aa5e9f97f5c69bac8579cd1382db5e506bc1cd8c7979bda80222d54f9b79527f731406ef651fbabb623d5ad1d19","0xa94fe47ae7f051cb315ae8134910f9e8ff6b09b93b4ed7fbf117fd0a083a2cb6ca90cf5dfc8714a17ea37e4d74323d1c","0x82196f1d1b52ad96c1771d3b33ac82d94a1beb1b2ac4b0f8a7755505c9237a8357f93d8f6e97f268116ca5a2eaee8d8a","0x97978e373d1f36fc71616322bb85615fb6f8a8d2f3ac42dcde137bf9320085e239ee0e213b5bfd3356d273999ae69633","0xab35c82dda7e1e0360af2c51a846f2413c2b590b28f753134cb8962788b6eedb8f9c5833bb0b2e6ac2a577984f6bd560","0x8c30dc9d0b01972a37d7ce83539b974a08f2d086fdd5921fd6758537e3a01bdbb1f0f7bcf71e5421847c304280520e59","0x85ed642d6fd921f4d7ab0bf56ff4865b9558b933ca4dc24ce0fd3ebfdb0876f241eae4fb484e8539412fdcd09efc8c4c","0x855a6c967b4a20b156a61e533bb56d4d17d893fbd259a862f134f8058a4b84295dc89314aa03d74576b9fb6e13300d55","0xa1a565acb1c145bd119b3e513e158e437b7db857b5ffdeecbc66451b3b7c7bec060c7617a6290ddc4bf7e2536973c88d","0xacb180e3df6b74a677f03df01d1bd3a8da00b24e469a42abb3d72a1831123b2afda931ebe305578d1a1fd9c74453a7d7","0xab5345378dfb263387a837b7581ee4e188697b63b941e79be836ccc49d1a0cf702d5e1b30753e98d13b2277a39ce5f40","0xad05f0d9a66660c8de6dc2a78d34f328da97dac907664eeda951381163fb0c6071ed29ee03c1677c890244b81fb331c3","0x867b996d2e025c990644ee407b65d54ce4d06520a15e5e7f12214582a23b24ff381b01a8fcc65bff97271e48d5739646","0xab7f4c4e3d1196df843dbdc49c57625ef0478e6a7470006b26d1c570e342248a7f2948cc7a7814a679adc5c9d5b7a6a8","0xa0d11ef611fdc05cf04ab372f4781ea524aa2f19025f9eed48d64a69aa356131d7185b3a151672c624e5b000be6b158b","0x849e2a5ed3d7d652436e34cae56ca06c7d83b10e15d1195f07aeccd0cc8031a1ae1607bc9e0a51417e258cfcf3e2341b","0x82e70092e66595b6d37265c1cb305dc728b0a95fb89f063d1835d074f5e05ca80bbf61b0f0d44606bf448b5a1e128fd0","0x94f378a935ba5e39ddd0a5e53ac93a4872e5c2ecd6de37b48d601d9232c76d9a3352381efe611a8465b8862f58afdc6d","0x98a856d18e3741dcadbc130ce53ed571cbb71561cffbe9ba09e4382475b11a09d0d548ccfef37afd3960dbc3efe36edb","0xa175b6b817118ec1712cb974e6886d8a4226d0e8e6f6a0f4578650a83208d3acbabfe4257bbdad7f367dba585308d7a7","0x90a615c6ceb4bb0713a0ea5c1dc2d8d3ac704dfe095d0b017c58473ee9a589cb83fbd3013206baa912ebb6984ba05225","0xb064540aa658b3ce4036c3fee4c8272da781f0e6de3fb683db705a5dd8429272b0973d18f1bc277324e1fbe2b56d6b39","0x86ad78b239029b1b1f5ad21fb1c8227d9f6a47023dfda3a2fba1b47c96ccefaa8ee021e5252cef389bda197c58b20fdd","0xb93820fff50304b1ec3b882311a93f95a62ed20289becdd4703163a6515fd7d78442a07159e3a0dc7cb7fb5ca302ae9a","0xb6def8adea5e32ffed9ad8c7ee98c44cee3f109dab4fd1bbd33af5c05c1c2be1678d20d791e9c11c361ed19fc0c1a631","0x833675b787436105ef311512ee0cc02278049e5ec323bd4241e3693ec09184b13f75d345f11d013b3183a842b9a1255b","0x869d67ca1d724b18810fac7b388bc7070e40df11c96ced79b9c9e178b4043f63412505e23b53ba59dd3554b95ad03c41","0x8e88b964ebd9afd2960cd335ac69d3399684566fc0cda96d208924334a10ed331d72424a6965e2699a7ff9532c81f6bd","0x84bb2950bcf113dd4bb358a8aaec569c77da94f6ba4710d25f859be02cf2b60ed55c549ceb56e81f75ecb567fce9dd4f","0x932b305b9dc7e16f1d80a36d7642ee9626dd0bedc7e869e9a46c4a28e003f557883c44fcebc31fe92320cafbd22b6ec0","0xa28c6705f326c302e59a456f84b170c8c54820e4060aa7881d3a50dfab32569450268f18f191f2f36568ad69ed2d2ea0","0x81d34f7a36df90015fb466436e24b0df794a60e7d25807c40585d4858a335ac21bf53b6d754926e4c0ec511ea34551cf","0x8dab314716ece5bd8a1ad7499db9dbcf4c26c3b37c3ab04e11e4a0ed6bda17110fe5ad0e7c3dae0a343539b36caa4e43","0xb355246573c0ecae81703aef9aa58fa5b68c97a2c252522ef4423531a8f8b4d99cfd73b71eaa2a6e08a72a2068c12f6e","0xb0eee1be5e7b578118f2a99577b250f134461c45ca4cc65e9f9f7284f4db14bb9295b27499b26c1e08ada0be894c2fcb","0x8e5ac2d7296dbf802f88418b890db3d73415b3f84ce49e17546296d732f7fe0cdc6ae4abcdbf091b8eac4cca1a7b3867","0x8496d1aafb2d81a4b62c0a29706741bdd2e56fa24c7b75a1eae18fc3615d9e76140b8f21c4ef91d474684a75e231348a","0x9499fe2e9e391cc611f37a4de9c536866296a685d03a95fb280b0b22f71c673e1e27e83645c16cd4a4b47b1c8e458690","0xb6c6ac88dca0e1c5a786d794129c081c37a092c714ee63eb2ca0529ae12de5e9d71710092101931d40968d09c96b5cc0","0x9480dab7b352ec6e39949a10e5c6e322eb13f26417554839112034cb40017196019abf22121fb370501c5fa0de92bd02","0x97880f5faf861043ac320a74765f7696b6b2ef680b421f3a5139cb2d647c95a9e9d4fbf05933611f4ba9460005810d58","0x986f7371a406c664d88f90cd72d6830ea9c1296e848c17de40b2e84b6f5c3ba535e8b062383a7891f5d18e10ab323e70","0x940b001f85ba4203cf350d3dc98b135f79763aa583fafed7fc1526ebcf64c63cbf4daf7b4bbc4230d1dbfe3fc8229fbe","0x85857c5be4096e804cd9da0bf29780e517e04e7b09d4d6fb7d63aa0d8d21014292f1c7aa39a4dcc417f02dabc6187577","0x965a2ebebc17552eb7669dea6a814b762caf159003f2d2f8bcb2672ad554c6d328b66c356cd5ae9d6907a58c362e15ae","0x8d093967f1d9a3d1cfd6c8af863cd43d5ff528a18f611e93f0c50200ff4b9c02f5c7a30f1fb5cf6d36180c8721cf1e79","0xa10d52bd0b0156f8b85a2118b661a7dbd001c3d73d6c5d7fbcd057dfa44f146a7d449579ddbabde0e9a133bb7ed526a9","0xa54411a6a50d9fe472868a43f5d2cc2c4d952265187d791896a744f1654d2c3bc2a64dd1d3e87b7b07ba53cc374bcd25","0x8697b68f8bce87162bb1f8952c651b77b69eb874394ff8abc309ca83fc15efe6f80114712d4166034d849661d61fec62","0x8ca98593797413d1ae060bddd1a519dc2c6c293fcefbe2ab1d0615593fb5c4677dbdf576ac2e5771418c997a58f1a06b","0xb6c04a153b7ec7dc748698da8013ecbdd73825905e8f02086a55c3c42b1a751756da8352ff818e264e1f831f02d3266a","0x984214e7fc9f7dbc4d6b94a6e8c264f784845cb7fc31b67e37dd4b05cffee6ea84f71a698cc7fbe24c4d6c5d15d6fe56","0x98912177f60e7be9f67c5bb152e7d7b64c56c605ae1ef08b84e3c21026f6d2a3b0e856df133b4f902540a3b80d467c02","0xa4fd6759e4c175da7ffca082230d798a6b575a77b54ecee461b6b545d51817f2aff96f14de77b9a50a4e355136d01126","0x89812faafb4085549cc37793aa4f231e99eac95846dde97cddb462cf1f2c47612d51057f6c84c0ce59b854a024a558d0","0xabaa35bc8053b765341550561287a0b9b548da68e9c7388ecabb14e78651b8a621640f485616780185ed5bb27fc0134e","0x95ba7d8d692823c99e2cbcdf647e1c579aecb9d1d54f289bfb9cbfe7313a6bc899b5a0b50d393b85182984169a73aab9","0xa27232e2dfcd4f4c8765421ce2e34ace9bc67d2e4113d41cc286f0751e9cbba5ab68a4d3f4619552eb7a650445288dd4","0xa9963c3499b1c245370d77bfb3ff037c075d67b7d9785eae29d454d0e567c95733650f75efecb9907e45e90e27506766","0x94cacf0a4926ec41211ab8f3818aeef8f034696a9c878fc253a5e30629c38c0012c6f7b9b02382f5166393999ae48c06","0xb5a51c43e68b8f48cbeecbb5a5360b3b1a4b8c1c2a8fa6d9c64f17dfdc1b337005b053400ccefd844621a867321ee9c1","0xae2cec8e6fcfb76124f13243b128d86f0147190a83e8429c4d212179ee9d461ea5d500a57090e53cdcd2aa332186a7b0","0x899886c0ce3ec4e1d6155de6601ca699771c93f66955e5d6489ccfa1086405acd76d35623528af8c7197b3d87b5bcf1e","0x99189c4c3992b59c9f4bb73963284986efd44976ef4e881d7ea151c392589a70ea308e9ed6ff4a02ea68bf3219fe911d","0xb60109e3feb101ad8460296db25ea182630d9ef782e4d9452a2db38b6a6fb8930c265bf956836797572189da3ac9f2b7","0xa8f175fc592775bc5c1b316e898c2e0621c961669abdd5d6a69fdde29a08ddfe35811be2cf00d268ab443f408257bfdb","0x87ab8525d80caf9d0daa88b8b5b9463b112898c5a9b0f26be6d2bb4bdb9aff287112633d1fb4c20ca623fed6138845e4","0xa5a7470157489585b33a3baed0ccb695c9662900a04e8b4192c412c829fee6da65447b88a7bec8da51a0ad77eabba0b9","0x8e0d2cd06cdad7c2a6c3c095ab8210e3fb32fd705cb788a164fa00b754c71924db6ba151c7a13586ac7a8f63dda280a3","0x9208559be1a7753cd08f5e7a80bffc4cc6bbc905572d6a86dd872756c87c1854b48114afec143866a23e70f40d02989c","0xb5b82042b9e6aab2b2c57a23bb679e9d55a37b735521dfbf9b2c2b60799ca358c075160095f23c7b9191bb0ff2bd41ad","0x987491d968768a9001b7a0619c82689dc10136028556e5e0ef272debdc6a2178e3895b33c08e55e5ac9c880a5192f9f8","0x8b0d50dce38de5508a49417ebf0ac7d80191d9675de6d9f68dc9915fe5a6f95ce918f409c63e6726301617afb8d336bf","0x99e50e39f78a230a7ad267797065838a69a5c26fadfd69e4cb9f5708c4d5cdcddb23ba30a04e3f0233ab4333dcc5801c","0x8a3471e70d2fe1f9cc8d4e2815dcfa540ac28a902c2aa297c8c0ed366afc22df4286123569fad2ca5320271500d22908","0x96ea0aa6a656877ed35bed485ec9c33234048aef41780fbe7605110bc111ed2dfbbcca8a643bcd61067e0ca16a5d9b90","0xaaaf592ff3362786ca4804c1138579c435b7538a39b83cde5ddbe828e8d58f5edacb0c4d53e37b8e1fab2d3a32e934ab","0xaf0601727268266132047d0605d0aa725416f06c18599c89abb3ca7057bfb8231b258289b78e299b84a57f72feb625a5","0xb6b9ce79ed139694c18c06f628a88549bcb180c3571ca5790c539d731b1b956290d17a922bdc9bce9aa686d22b81d627","0xa792f8ef2bcf82da3d0e263e697685f77e6c14a5ae77cc8d293b09bb08776cf1a5160ee967494aeee40236f2d1634ee8","0x91fb7a51b2d310503e465330809b3826da7826ace56c87c08704ab99aa5ff142e284cfe358bdbf82743bcf84803eb95e","0x843ecd7aabbb9c6338d64248ea940e7d2157ce1ae45511786ebeef1369968b192ba9ca02cfed168d16738395cbb2c38e","0x98d4875ccafc9f49dc08725433988c9df34ad3ba814d0ca2c356d966c88ffa0258b29101c5cf50c4fc10903c1e107bd3","0x952879cbeb6ff450f99310e3ba2db52d3120eb86b830a6af8211f256eac2184d3585b40d734554efff964413aef7ef32","0xb40713ad676161297885c2064de5e3585c6ade3d480886a0494b15346bd4609f73129f106210cdde2cc4bc9e374490c7","0x93f776e311d63057c2fb569cbee7751541fe7981310acf5dece431c9589c6aabd471fbccde870334b141446f42d9f16b","0xab970fa42a6edebb6719b26359e28bb620c42b4561393e3e12e9ab17687a58a65e2acd12da6e6a96d9337a10c1866b0b","0xa23aa7ef4b93607e16d9b8de2390a0511107abdf7af983a9776e36050f5f6ab5c8eb5b37e0392325ea385fc5159f510f","0xa9fc834ceaeab11aa31d7da21f9f5163a4342153c6f9ead4d70df8e22b17720a9c069046ec903fe4de8d3dbf19cfa4df","0x8365579628b3c8ae0fbd6d58e177960a34fe3da128b554eb73c6f01fddd08381a922bee99d99b555682eb37f721e52c9","0xa037cff915b9b055d24991c680ab3ed3bb8ecd06220d829eb3b69faaa157e183cb25772ce994cf306f3098c4e0f3869a","0xa805544dd8b9f9ce3e99385caddd85c60a6d7dec25dea7c2aaec12045e6bd87f9e53bf97d448805243235a1c98902ea0","0x897b79e96e24d6db8278856bf78fe8273b7eba1cbfb88110624115f5c3192d8cc1436eb230f3c66e08e4a27dc4da8079","0x8dcf55b06e367cee173983451c4d264fbd07283f32af69d1b67942a4e571b36520f14b511d3cee5be0d3f36329ce7267","0xa8f28b12fe4e5defa4bba9bf2e97f4cf89ce63d46a83c88badf1102a110be27c845e14b9d9eea7a80bcc05fac4486c47","0xac5521b12593566505cf9108119bf302e4ba19d3fa2ceac4c8ccfa1d7d238fa895aa6dbc5efbfb2a4d030d2decd6723e","0xaada264bf9249ebe05412c964a82a877f3423826afee358a445446651517d970cfd6bfd0ac860ec415bbf781caf8419d","0xb4790281ca5527b966ef41d46c55dc24ae7958016f3ee937ef6d5591e002a8e5dd479c253680151131a7e3c37ca9779e","0x932576439a189858650e775e4bbc38bf14a367b06b3b63d46b55d0af5fd24f5e8ccd2476b12736bb49e8dee838199824","0x9806522e9af3ed586d57823718b062227799209ea016ce3e6498a7bf3771b34505b4733ff4263e2a0e716db57b528560","0x96438f2e7de63206ecf13333388779f9a69d34e5faa8fadb0940cc281dd76a18e5f6ac68900aaff0dbec2df214f5d35d","0xb7c273b5814fc7bb86ec8601f58215db871d6d55abf7ee83045d105413c06e70b47ebfed79d34d78ae51572622a0e30f","0x8b177dfe5c664e3e0ba0f88aa8d7874fef47d111ebac924d2d9a682e4d012c8287821d1432264ef87903d4ce671afb30","0x8e5ea8b4547730d46dfa4dcf4339f20c7daf53d71ac5974ea1befb4dd426c844b6eb912b4c0ebe810104efc638334bf3","0xa7926484fcf9af737ae682a3a570380de40a4265f9a35993fd316e9c9ba19101b0281ae60f15aa222a10ce48f94209bb","0xa35b696c436f79064359f041c2baff0d0d2e4c1d59c68cc26e491411c43ab352b1b1299e9eda1c45422bb299177a21e6","0xb4019a28eb4e073ec8011d16f1c84eba2a93eae61d30d993c79af4bd2e3b5c85bcacfe8834bedc08c8a977a91c7296e1","0x930f448c4d14d40528f4dd47e87c519b5761d36f5f9cfaf406b618d5ec7d2dbcef317d09d04ba8df397695265d1211f7","0xb7a1f72dc768da49497c2b9e689bcd19f220b31e8b25556df3fbfdd1390123a0b853d6cde7e7a6141ee543c16c24cd66","0xb969b57c3497a18199aa6593c08998a721b6bb45e56295a71b00f971d08daba30c613501f74c598322f9a70d96903aa6","0xb757f22010b4c8f3f94bf4da6ebfaf84d278195e245ce2c656f9a895670568a9317f932218d98f36f6ff842f3d7a6d25","0xb34d8d3a1e5ab5880e9bea8f094b900df24d3fefb75eb026e5d3b545d2764d7fe58cf9bea1e7faf8b39345094e817cbb","0xa02b12b6b231a197a8177abf03e6e4a0c456c46d2ed680964194d1b06c52c08ed0786b97bb074345dc1548a55cd86914","0xb3883b65f1b960afb91e8218a97324f1042f6b2a4ec700ee13d00d0390afd807e6b9c584d278f204b9a2690a1b980f6f","0xa379c80e6b5ffa7361c4e9f838dfc5a97c58eed420b41aebfe7c934a809cd280d69b693df6db0f1e4fea1a9f15b73069","0x86557d7c2f0aea18ef565d4e3b3b709b6ffac22db62f4449fc06d45ef71526edffa8a68788386ff5d75c1ea58ed8ddcc","0x96cbe8cb3558d4fbbbfc2f3adf2d840039586484f9520ad7bfa6886962912e14d2566904621cf2ae5748f6546250e8e6","0xad9ec1323e314a0e7c572950a8c972da392449d033a22e48b3e28a9f9c208b98c7b84f630041839826a3fb40f38af097","0xac41ca693294e114205bcdbb6d3052f6485ca819712f29e4a14831b9f640c5a02c83bd2cb08a8cd49d9889359fea8d1e","0x941f9a6681a5f0325c4b27da620c9c35b7b69e8b23ee8609a22e6e4e1502e3215fbe8f79f5b8fd68433a7ad4712c0104","0xa4b6581c475fa696a872a87c1bc1e34ecf147807b309025e41ea3e28791d6d779437bbb3370cb630ee0501c369d7c128","0x975d8501328cc97bf6f6179188fd6965a5188fd86160ac0268922cacb56061359a5cf4a56e769460130d621e8003562b","0x87cccad532daa06fd5c8e8b41237c1ccc04194030b94f2502c379449c49a28f08b782fd8a93390f16c892ee5e0c6016e","0xb0a9b2b80dd2f01434beca364b4f4971452291f3f808949b03cdedff1b25d6a783e6daea313b78ee8c1926c54a2c3cd3","0xb116b980f7fb9d1649bbba8ae7efcab471fa1866d7db79c0509f7027aefbb5d6cfa30e9e518f79a2eb401b5640870db4","0x93ccba3e8776794777feccfb30384957b6da487cfb3b9e603f5744fb096105da9d3d426f4e823c3a399c74df1a4f0cd6","0x91b908444863298662a3ccf9af6a95dd4f9ca1356a7843cac469c39dd1568884f100f0df9d1007e752187506cb3998fc","0xa8233bc21d9c99fe9346fb480c0399869110be8fd7748c48d944e68212d14e1b09afe908ebee519dd669a8fc231cce00","0xb52dd0f492744dc41b0414380f39005144086c64ca2c423514b69bb52caea37a9b219497b5d953c74c9ac67b496505fd","0xafd711732ca362c3e3e5379c63651297b01f316455df38ee41fd7624d9dfdc8bb0bf49ef748e08bc6de1ae0bbeade8ee","0xae9b5d8022dbcc224ce7a5971a776b3feeef76bb9a8d33699b51c65d4dc3f06479cc78d13f8739a42000723c57be9442","0xaa4cd92fedf54327269c54923ae9c5a539030eccfb2a1610684240fdaf303361ef0e34e4d3f5e0e76264d8dfd21fab36","0xb6f472a06e17428a487bdf9cf62749655a22768d73dc0c611fa2e477a384ad2db82a9076f061da966211b6f4c7dbc900","0x9354e8626bf2dfc55064f3c0023f35cff81cedf30f7af4c594d10f3dbfab7e5973536cff2b86d0ccaaa16398bcfea0f2","0xb672e14bedd574d150d5235710c58f92a9a9312a6dc33ff63c569b4345c31808d7403ecd8164414bfa690a23ff107a9f","0x8589f28e95f6b69643cd3370ce867922725765892ff99de6f47c3bc7946e4d45ab782c7384296144fc4ff13bc5e44ba6","0xa46b53252e424c523f142143dd4fcfc5af94f5aed4c66938f688411c004cf14b599bf127b88b2d4ae24d8675a335cb85","0xb63fe559e2b4580238a0b0ce52ab8258838c2b64c1922c56b64cd65be2f88c140cb4e6ce96932e92f1ae06b20ee9e613","0x925604224aa544a31b9faa0eb245bdc98a717a557f3e5a8c0d72081aa7dd6283e009c85403f70c5ef87cde1663cfe885","0xa66cf88c4c02fdc23f44cb2d72cedfb54836b83bb580a42b4bf05acfa89801c3e9443354a03ae4b9eec98833051418bc","0x957b21902f391a27adac9708d6809a6befd7ca12796dc6783869f3f34e8a24d6b60c4e58b858ffa330325e66f40d933f","0x82ac23408f69674bff7daf66784040615029911520fb1daf9ac892adebce313ff50ca2b03bc8c8cb636c4614cbfce872","0xa858426bfd02c11f850aa7647187ce7bb3360e37923cbe2870329fede02c6a0b4f95ef08523e6f947de41f9ff5ce22ee","0xac84489582a3d7410c0cfc94537eb626226758049e2dfb8c4e7159b753e52e3e8d7ed4924f9622f42fde62dddcf3c12a","0x8e745af8f9c32bf6ce1bf7bed10ec855b215cfe411edff5d0399a68175d120582e2fa9102ff79146abdd7b1e3d212e71","0xb5f226f7671472b49c721618cb44dfb8ed748e26718ad0c7c8d7c2dc7820acf96bb87e9e3f652fbf1bfc44e92e840a85","0x98cf523b316eb4384a8e288caa496a83044bc67e7e1b4c1194fedbae1a738ab5d7d3365b42f4e8df066ce565a7942a26","0xb88594c4dcbac37d1b7e8c5e6459ec390bf141427385e0d38cbfd752e44b222a494b99fce6eba255525ac205d76b2279","0x941a25e44b00150b8b62a2449c90b555fc640e6be170d0b14c2b6ef9c5fe0658661abe0d0b6c362e1811f60844d88823","0xb61ac3007dafaeec80592c841c6fb1b5b1d7b57a4d88ce5cec859c70f0b55cb9a7ceda4519edfcdff4f66d0d5f641e19","0x913fe9f3e5e0206c2d31206571cd088f5abe90b492107e10d03c6faa9421bcd8f0edb13c5a0980d311de87c7969520f0","0x91973e7d5a76fd58dda8ac5749483b6a3bf28cc0c63b704263d8dad212757922be081a3b052ac9b71a42beea25f47391","0x84489635b8e54900f34c1ef52afa23c0f60560f05e942bf30921bf2afd4bbb7f44197da531a55fbd3e1773268f754820","0xb84c1f8e0d7136219223d981b9afb3bcf5eb6f3eed21fcf48ae7f6a4d54497114b0137b3bd801688fc168834a1a37461","0xb943bcab455070db8f130812156d6e9226200acfeee46851ff8a84dca0b70011239538f27e6318c8f75da3cccb944065","0x8da75b177c87433ff1cadbd47f19f3b997d23c3b6ae0fad5bd3a052684ffb4ad932094fe01857f080ba49b733fdd7387","0xafa72b618f78f2668a6759813c590ea79b4e9234e4b1c43d22f79fec1370f8591368516d53212156b8908a9edd45d98a","0xa9beed44a3aaeeea60eda03c5faae873ff3b0bdcaecf9b071474f534dc013eae5ee9fa78ed4809a06fb8c030a66bdb73","0x92d4c0a01851ec88a35e6352f451241c8a5a2e78ff97f1743868c884d9db993ab5492f325f15ffb3a9543aab10ec6b00","0xa34c3ae93b8a6d0a143bec6e9dcc8b44f78efdb0cc396f7217efe943bd44e7314d30c906baf68b1856d354f418e08038","0x89a929a90e0759866433b188dca3ab05c8752aefaf2b69cc11ed60fbf2888017b18a5edb676d8acb02cedb57375374e6","0x8a504b232b1bab7d97553210030d72100c266b4fd9992d7cb487f6a9d28f976908914edd99febc16c4d1dc8b52eb53e9","0xab98e0b57438fbbfb9c4334c4e47391e01593ccfa786886607f4e79cdf6232ced7aa080cecee08ba55959754a9c39ead","0xaf04c6d1ba4058899bc4b5186e30ee9394ab512c041d445d7c8a63dc41df35fbab0cbdb1144d978f528272d3e6046b39","0x97566b9c5b086dc640b52ebf36a1d14a3f515fdc7ad9ef61eed10d832800bed89fb7853efe18ae0c409113785c48a167","0xa8f5ec00dc10bf6b6c1cf05e986c3056183ed695d516d10cd429f6f1c48c6858ba4db0aff2a1ce2cdd4482c81e138b16","0xa584f8dc6367d2fc771dc7f606e6170f191c5980b8711a6fadce0cc146cba3cd28b180edbe6e6d077b7ee2c7265609a1","0x8f39511ed15b5b8218ebf7eec8ddd9c4741be67e28b16891de2d9a2586825ae051a97170c106ebec1751f6ebcd4a6ada","0xb74c05951dc2c94fe4c3a7aff1398f36093a057b6ae76a7eb767218551d742f787f49def1dccc955decc11ed1d869bb2","0xa6973c69fe5733094b645777121c17796c74c82c1ce7a088eaf64d6fd5248b5b0a0c0086d52a976f15ea1ec4e5ec8c96","0xb7c5a1e21de9c174e276fb640df08fc5e030a7b998affe82020c94fd2b3a38417e5bec0fe751aac785ba76f69f34d364","0x8459e600623eedf7b4ed1853368a7f73b49dd153208da9ebed945da54741bdd2168633f180be04799c5767a9d9303f6d","0xb97ed88e98f33d515198196d02005c37ef64456694c00cec15000e66ef976c4cb09ed750a95a7df19a0f11ae8b76764b","0xaa11515d7ccfb1fa5e385307ca45309ae8a15e741ffccf084aece18f6d9618c912883d7926bd6dac5d5d01b1cf62991f","0x9872df7db72913d003b7e3194be7a7c9d7cf9ed13dcf3a5990561a3042cb5bcfadafb8e86e5967776d709ca9e87dfea7","0xa90f600c6686a05acf83c0f100ecc90ceb38880f554cda9f61a05c4bb01f2aa75ea1d6f5c943a171688be63ea4fb77db","0xb432ccdb5d6e00020d0ed04b4eaad3de907fe0be2724c07ea553378da5a9d84c61e9dbab6b411f12f4d52ef31ac19ad3","0xa90505d5462325cd9fae0fa28310887ef2df498a0718e0b68770c55f7dd7f96cda33300d1fe830d6779dd65671e187fe","0xb5e5bff2eadd56ed16bbf9871a3348ed8789efe791263f07dd882a1a1e8a2ff719a5e739a8e908257af090da71d49608","0xa6f29ba24addcbf4408fa52dd5bacfafe7289dd3bafc5c42568388102dadd61be5f92a43447ce227f66ec76aff42997f","0xabba9f331db92aafbf020d578d6286e2232219adf631c2f6a44030256e174586293376cbf751db43121698f94c6fd14e","0x94acb57f4bf0e282dbb1645e4bc0c59cfd69a4d79262687ab926e484aab9c93a03a8b35c2277c654e3410654cfd7fe36","0x8998626a1737975f5d525be027e3cb548470c8947c0cf94522d9926ab80d309def1154cbd85f98a6ec033eddb9aaa180","0x992a5e52c73c25f31296adc123cb31076680e024ff0ec9c142dbbb89f990b86fa94cf73a229faff67f0d085e19e1070d","0x932c7ee84f671062a343dc48f09239d08148193aa2f4018ef2b9f56b206050391cfce301c7993726516c0f1ffcdd5e4b","0x8ddcf2bb5560b6d4035b11676a34161a37a36b111d5cb733e2a81e849f3b9ec7b624ccbdee606ccec15d8e7e63a02d68","0xa718b3fb76a8e919fac4869bef32e32ee924a2d5a1084ca9f69065b5a6abae67dcf29a3b1e6637e870bf2eef19704987","0xb35637552c4ce9c769c09dbcbf1cf49284e71badc4d216d3b3cc4c1c9b38905a4a7b49b1675e144425bd3130ff196729","0xa4f78a2f903d16e588cd9bdac3796d29880d5f1388caec74484790f3d9e476f6eea9b2f1afa5ec0ac3cb1f6bba718981","0x8205b848624ca5af8ddedf32af9ea1b5429f3dd1a2a220d4d7a4281a0c9d4ac10466ab706425673fb364c5ff9f4fb39c","0xa6824c28574ad1abda225287151dd06f13359e3f4b3e9b61b6a5f2611c99b5135dd11f55211de9afe7493904e74e1bf5","0x83c485f2d9099593c791e493a2037ea695b748e4d03bf520dd79e79ff413df2a653f7c7ca316ee658fa3b46e2307aeb5","0xad0d3bd78432b2abc0b4fe46daa4ce49cb13e1eafb1b17aeb96a2c2e966aab2359933c24603f7d2a2af00d8316d0866e","0x89c55ea0807266cbbff393a239aef8d3a2241ebe8b9e847bf813db7127398661ccf2a70ba28e3866cd3d53468276f190","0xa9c30a059a2bf940cf294b781b86f9bd6ac084ac886007eebde43e9f71b4fd5b8c481438cf63270d708dd77bd20b1b10","0xb6a5e17a3a5fec9ac7810816a8f24d4141651e50e161002c04e402dd5af48a6a9b0bc89d533f98604629d584bd301597","0xa2dac539cc85951594e1d6f0e47ff241078e409ff57f4d868200bd251059472fe0469f7b3a815d5fdcef278c4c0e31dc","0xb140c56325ae0192ad0372ae263bb14b73187d308b04b452ba6c5d2be85c9ef3cd371c6026a69449cd193b057a125a28","0xaaee328286956ae68f0805db068e691e359dbd4d4f29276a23bb4a691c67de603e77795188992f638bcd424dbfafa85f","0xb2445e41d758a10369d75a95968670dcca57ef828676f3176ee17f9a929a070aa855cb8a16c24b61fc0664ca9cef8e8e","0x9302fdffccce5ca19329193b2847254420fb03128e627176c7c22277cb51c2f13e53c476a9202f0d8ffebcd9f14e9aea","0x98e3803f30a8e2d766548755d12fae6f6dca81ea178e1e0bf6f65a4982dbc7453cf2a0947f6e18c7de37ba052ae3f58a","0xa837d807491d6be203c4b157a4c04cf756d316c63867f4b64107fda22036b763cc0c093b7eb978ad6eaf074f525a1f8b","0xa37f8e984b0d07b765878aa384179595bebaad646153f422153c3866b7543fcef0c08772afc9fbbde942bc7316cdadab","0xb2dd95b2ae4645cea0fc37269c31ab6ab0548ae4eab60d5780860dd7752c830a373bf782a6fcdb22940f0a66d5edd833","0x81995c86479f1b77836c9c4d2ec75583d9e6bd2e8fd4f7e6fae2600d4407b0bf165fbe163f186295a7a9142731150270","0xb4594db9ca0083cf9b8de557b7e34eb6257b00ee38c2e7b5a3bc057ca6025a60ca35c312ec993d7872f7a1e6cddab866","0xaed1965418d8cf638e85763871dd87fb12d3345e5ce29b8f9a7ff1a4ea9b192681837de4ebcb7d3f126e76f08a34e763","0x85a60f97e51d29a89ea2be8d5ce0485c54b757e58fb0583fa2c07db1d5ad71d8c4e56b0281ad6b857c6754ee4a7ac4c5","0xae8a01ebf63a966129a63349d5a28e86b53897634710ca33475f88cd8ffaa038edd2294b5355dde9843ce1d8e1fcc246","0xa10cefc4a1660770f10e7ce76940fe314574505ab9aaf6a32cdafa405365ec0e7f30ea5463a7344495ae2c70a5d7429a","0xa81d0fd79c6327013f87b49828c4800c066970b701959e37de4a647b8470d6c6760c93fcf2b183ba9a6234efbea6f518","0x947a72f5999690d429401598bcc95170dd8e3c07826df3c7a3755cbd23493921e2f1f560b2e6247604816bb7f8b645e2","0x85f37f5f036bbe40e07c7b902b2c9a220228a85865f0f55163f24067d3ee94696d7ddc6c9e039626b3ee4e94a8e225e4","0x8c69028c697256d590e87b55d897ba403bd8f7bf5e3eabcf4a44724e96abf9a5c56dabaa6732f3873bc76ed536afc870","0xb100f522743bbbcc4d495496e0e923e34ae81dc85bf14a208f5c06994f7942543d954893de204a578acaa39474b1ac02","0x997eba870b9d577207b627d21267dfc08fcdbeeb5ec297aa0e7a5c64c8677d836caf92ed230aa59d6b7ce9e6eddf5865","0xa5ff862bed25fe63b2561198c8b08627beed065e945f4832a0a77d6641378987adbb985fa96bf531946141ff0db4cd7f","0xa5274a52fec1c2d1c9f6491abd2c351d2c584d72cd459ddc19d7d7c79581e2921d43cbe83fe25d79088194b533eb22b6","0x888ecbb8f91e3bfc3459a02c812f07bc87caa7eab9fee19363f703a7296eabe69e7d77c2549594327eb543795c533f51","0x81114faab75351647a098eedc30f2dc63cdedc1009f235ee712e50a5d55a06ca1ef2474a60d70f7368f4e0e686265252","0x81d5518ea6d6c6f3b7c0d6b55bc2c93c54ce5a24b24bfb216063d2a1f55fb176d99ba02d30f70013b7e50fe6573122dc","0x826c001f5b4a9548769b790241b9b9603a51921d9d27c75183924415528b8a994be8178e3aa62c7bb7e734b2b9ca1880","0x89fcc07f8966c4271c27cbcc276f1281489c7d62b33994702e1043dff0a120a20bde7fdcc27e5a0270c90fdfe02db38d","0xa3079943b4421df52efa738489dba4d2bc3507470d03ac2eb66803a216856c421d5d986c7209fc844e5a494a69c7a281","0x92e010883044dc62b6f2ed04a00b559a1a9a1e66b4557cffd15f4abd4b3d74cb00e677bd02402afd0e53b7ce337eb0d2","0xadda19c2ff676c94555ae513df917f700d3a8fbd0867dfa0273e5035c6874953d517747f6cd2c65b1d62580167ab2715","0xa7a783f307e8a3633024d5e7f625100718820782799b5957f3881ad52c2f4352e4e3c217e9bec2e6b0dbfa7d22e4c751","0x89240955506d1192b2dc016179bc742f4721192de31adcb69a91034e066a57847e5f3df9f46208e2fde22564112d55fa","0xad57b7facc02da917bce7054236619635e59ebdd674c7624ccc87c600becfb59e2a9d7ae8d6ef4db11111cd9f4bcf708","0x80b68970762cf2982499190079d6486ee03beec8bb832dc06cc81bf2bfd55a0fca6192f516d4f1d151dc32a9f7964abf","0x986a3df1c7591b6ffb92dacc209cb1907a0299a805275e056906b0dc02d700536688bb784ff21e3a29a76f6c52fb4ad9","0x8a13a42b11244ed2bb937d994cc4db983595d079a7b1f6534b463fd5cfe8eab5a54eae44221f423800afee1ec6effe68","0x9757a40c8dc2b691c043d5e21f105f4a567a6db7c8a32ff644c2308c68a9ba21007b2e55b731c2e0774fb6b938fd502c","0xa457378bc67bdbc4fc4ddebf37e34f2119d49a371f3f58a8ed86aa92d7bfec8f1c402587a3f8908442a8304f5edfa74b","0x94819b0e6ff8c111e4d6e6c82a41291a992a09b99d5ecc32780a7dbc2ee71a10ff9389ce4f078667a124d77a304884d3","0xb0fba05857259951e3bb49d32a9e3d689db06162b97b40845a510da3e21a8d7fadd978138abeaf092ba565d8b34e8b0b","0x8040501add372d5f0723dac3b874a179dae65cba4d5c046e864ff98bc59f3e876b9bfcb2946d754b1f42f81fa40b584c","0xa622127bf40cf48abd540d4879e981f52e60841ffad3db2a8d6a1e11219f231a1ae7fd44c937a5134a39f902bf7526b9","0xa27de9111c89bcfdfad10d0ac9a57dfeda00b3c0c8d52446108a1babfb284122533e77129f4472a7b6cc4a2db0a2d294","0x94098e1c1e87ee7a70f325e0fbfd0ac87f1e313869c57f39313c0e4cc2b36afee201fb6138dee247e7b591324a2fe1a2","0x85f3e45a691616fd25bddfa0b0c0d261e3aa54f90c87d0f9fb451e0c3b6e4d2e92da0372c9b1188ed4fbd1ca08327e52","0xb1ffd234f35615dee1bc5fbfc5722636f2856858c1abbac33a8d4101788c373af152845116ce8f83a4bd83fb6433ae1b","0xb5282e878e92a8f2505d98d75ff62059fcc60206facc944c0684cb95133ad40b71ade6fe921337ae3ae7d3324fe597a8","0x889659b0c63587d64ad37377725dc2d92d394670197b4e12fa62edadcbebf63b9aa448c0c9a1288a93b25c85b5499b46","0xb87856d1d6b18b00c721c47d9b7d3c7eee0147b2c3930e8d0d07e18de31e14a115d82317b9087cf80766289d1bae21d1","0xa845157c6317561597f687d1dc095879790a5183599c42b70f694b1382bd49fcd9fe1641f8b6cdd5c9582bf460a59fb4","0xa72353aa46ef6517a260dc071f369467bc70475fc2b5f877e520feb9b9304dad6407751b3dff81f1568952210cfe5af7","0xa55e80794fa0cbfa35011aa3f2f7f27e29840d45b909462b59a093dcd06c357540ff73597e96af457129cc5d8a03ba38","0xa63a412dca0dc35e81676b77225e02c975495079fbcc899904e11e9bfd153b64a930781b1a6379196d9a7273e9aa355c","0xb6ee099db021c8e4fb7430194e0a6d416704f21ea80a9b1ecb7be927ce2476a521256a34ff72cdc08512f9363f28c7ae","0x83bfabe307a56a2371802aa030b9d28834791ffd3c9b24f5874f62a5210a98ce030e10fc026d94001432fbef6901f800","0x97c71829c92defbc162bb20cd857528433f3876fb259433e26d5719756a692b0dfcd62f8ed5ee2c4ca7d079746d9a09a","0x8ea104a3a72d037c88721445fb311ca9cd0b564fb022707d86d19ac227c8dce6108a21979ed3bec9d7430891a3a6bb80","0x8db93829f6a21464976b601f9b313d5a80eecf46dda1c7c6307d4f6110785f572cd2d768a57c7de2342e004b1a7afb6e","0xb47fe3ccbc6445935e03f9660fbfae9e81ed3b0a65306afb71b4a752ea842bbc4bff2391a70ec110ff8fabe0f79b4d1f","0x96e5b094abd55e3e06403c450d22133a71c47a6e2282b2229d076e713f87cb917a70eab9af0b2760d6ea1c0c71a88a64","0xaaa97dd20a34b4b45e905f7c0cfe2a8d83fb0e01a9ac85aa22bf4c126712d2e575f46b7b5ba0f89bbd9137b975efa1b8","0x93664f1c0d2056b0edd6f4f548dd7d8f48da6b762109b58fcf9dedd45ce9f57acc7d434bd189e6df171013c334843615","0xb8ca4030779dbe1f9b2776f97e859e97fdaca16d75939404d63e717df32416651716e18a43096ab2064c309ad95adcc6","0xa9df677961726a6ecc2b1cb1b324d20644daec7f046428f7c3626fd8b42d9f7e6243475cb44ce9384df1f0f98b6a95ef","0x885c8a6ff88aabd4139a07841dcd11eefc713e320b688d72f37d5822131c16b790c751937bdf19119fa0cedb3ebfbb2d","0xb293a87fcdfb299b30ff4834dae2677423c6ff1777a594a1075f7426cfc901750040a0574dd5ffa1a17b74a841529484","0xa7108b29257793f0282c944ae2d98ce76303385264882650ccd0bde6b72120911a0d4ad0d8dbde1a61288f2a91f96dd8","0x95bf44a70e3305ad09d239fe4c40cc2ddecaa41b90ad575af5265c146e51834365445dbf5cef2316d693362241436178","0x92e4c4e349f61106a33215c745d7736b888adabe07bb1ff9be07f84f01ae83c0571dc4a8af52a6057a2d0fefabb5d806","0x85abb6f947fb8b45d008673c309dd7721fec3e3ca9c916811ba6d3754f925a8a7dac04f6ce8c0723aaedae33ce4f7738","0xb7af8dd73532a623e4ff68551a2df6b548742e948296943bc33d8cc82d95c8ae0ff5856b2724376bbc490c25259c6e66","0x83de7a97b082e2b0972d8976d3d5c898be0845cc90ea292bca43ebf84bcffd93f46ae848c793c1a4277e16ec16cb1352","0xad3fa1ebdeb46b171ce79d8a2c8a0aed5214aaafa42a3d15fe3a9e6ca9d0c5d3d9efbbd42c489a536c6a19ed66d75f7a","0xb7d75c3a382aec0242241b553110633f8b094fe7d9382dec665b1e0f31c631e8ccb29cf79f011d39b9d332917fecb17e","0xadd06dc3299e0d1086071d3c6d3b85ad787ae64d4ff091dbd7f127c5497c89c132ac08dbac500e56e94eb79d7b813aec","0xa968ba9d15127717f770c937eef1acc424bdf004c39f6f6f67b8766a626b1e8de1f28ef95c276c321d9b8179be901c60","0x97ffc0c6bb78255b51746a9ceab455db74acf4bc2b5425e6902d55f91d053dc0fbb30bb870c88486679399a928f931dd","0xa93c95677355a20c988b37021290170a5db8dd09f47330b545f0f10cc8127681d759ee5df9702de674a4e9f90d78404b","0x95fde495cd90c137b0c5d122305501e3e34cd8927225a3642154cbe00eca1533b5ad717db337fe5b8c4ce52d43d11923","0xb5a46658220ed3221a46c58808f6bd77f1debfcc3b639b17593a8610cd556fa82242e2b4a2610f1e94b1f7c7bf499366","0x901c3df59741228878c3086c70505a6bd8ef3b8f6bd67977a233cd6320d255a121e00c1f96541b09be5807f651488e1c","0x8acaa6532da7f8a3a068070f90b14ec6c574aa9c223a1de371432a53c7989789a82cfe136dd99ce2396cda28981e406d","0xb9226d281d00b6974aefdff42a933970b5654c446a4c56905b9ee384f40b548a4667e936137565553c86d65ad421a13e","0x8e2c4dcbc02732ab3082c162a8b7ffb833a32b770aaaef39597533fce48df799b359c24b280c980a1f149519e731b79f","0xb7d574293bc197ae7f13c1a632f23802ff198eb80761e9d892e86f30f54cb39912baf17553cfa231429d4519c62e4631","0x82dd67941704f22baf84bedc04f12aed4cc65be5ab9cc4310709aab335b6d9c7a77fc6d351794cf8269a182bb2b8ff99","0xa41868f73ddfc22be1e7c74956571083443ebd00b3eb987619b646b0eb35235b967a336554a7094ad523728e2b9e7983","0xa2b4011f62482278ceba4fa3075dbb1d583fa21bbfd85a826f268d913a758962c40f9f598d072cc935703aebc7c166ad","0x927ad31e88eee7e48dd8c8eb9d78806492bdb4a54a1583cb96d68e3d0ff4f493ab833dd3d004f94c994d43e5b07d99d9","0xa19eafdd7a64c2fe13b749eb48a2225aad853dd4c89a4df3cff15b14fe670a3a05b2e13c9a13a1e2abe8be16b98eebe4","0xb456ebe5df6984996fe62e93b21ff3aba73d1a3990f5d25d0d7e5b0969dce468aeb143fbb6a6d839ae93eb8282d285b5","0x914cff602f26330bfe720af9695ab921b1b546761b3b00e34c486d0cc73c7f584a540cb416de06d57b9e8689c4e2276c","0xb6f82c237dceab5cdd1270e1c37c29de21adfb4ab9169ed08d2cfa4641331f79a972f6f5332d751bb437f1f25fbac0d8","0x85a91c9b455982cca37c8b6673b3459ad62be9bc20a0d62705c280f35b384c741acb051397b0c644b0796070420961a2","0x8b242fb29158baf3f284b9f54e5bf04f5002cf26067178f4cd6783db7cb17b2cc8f830b34945d9cffd6d39ebbfdbda94","0x824f97494bb8df69f07917b39b859caa8facc800aae3fabb6d8d8bd827ab464303fd32c3383f50145b2f031111b47b69","0x982a1fcea4a05e567bf0d06b89cf8a0b0530d23b825547aa30731a30e29c423cedd3c2425645d0195c07e551fe277ed5","0xa1ef1c111e892647a03b5c0444593010b1375b21a89aaee17d69d17ddb7bd0e1aacf6a3ba6e4292cf9f7af3eba931199","0xb9e9a12703687109c97dbfbd71132d9c53cf56e2ed494f75bc175005e2070d45dd2d09c432f2afb81468846ec7e1e6f9","0xb84f69851518fff741971fb482eda21fa99e89cc31d1d08182cfe4c5feb2e76b54ada98536d9b26235c656f8420ab487","0xa4578b27a9da962efed0d3283bf65b2659ad2217e37756cd89e5bb397a1b73a9aef2ce7d4710df80a54483a193a10e13","0xb314de00baa6939d4471c116383854dbf44d4c8e1b63de5ba739f6f59019984729b12136ba98677345c2b94570f9a747","0xa065b0eb529227ac128a3e6b943474c39f7e03731a49ee6e75e92dea535f972b744b6e3b126e1745507fcff503593b3e","0xa19561d5489f54b5b289a14e5b487bc63fcd392c7fe45fe4e5b5b9153ae446397f767030d58efa96c1859d90c97e3880"],"aggregate_pubkey":"0xb4ba1a2087048677cc94dfd82d582dd97bea5b09889716915f2f4242b22dba71ccaad2c0092760eebcb7439657400fbc"},"next_sync_committee_branch":["0xf7ebac3a522fdfc0d420f6fed87249afa7f3fa39a0d1646f961be015feb8dc20","0xb2455a713b2b3a3c069f703e3f7122449d5f61ecde32ce1875937bc4e69a45c7","0xa977b74219408746d3236c268da2e410cc7361aa676b367d1d93cdfd8f33a77d","0x63dcce8e3578144908edc06a9e475e1ce301174c0703eedffa12a04b07208512","0xf290690fe0a89487ea1fd12d43c23247b97209e7c0c85c8525873b74196ae601"],"finalized_header":{"slot":"3887616","proposer_index":"242552","parent_root":"0xcb668970b6aa486dbcf564881cfff68db1630b89749b94b3c72c8085b5c04e18","state_root":"0x921103641bcd3b6f5c0f099cf7c7520bb4cf72bdb6a8c4cd3ddbe2c02890f896","body_root":"0x93be632983c1ac47727a18624fcbf4be66b8fcbf5384c4911b5dc87bed051910"},"finality_branch":["0x90da010000000000000000000000000000000000000000000000000000000000","0xdbe7fb56399a51b29f071174835576ab205f30b55918879ab8ba2b5541df5e9e","0x81eca90d128b6e6fb32f1e1f12d139d97dc35abce20eed6b8cebed9d785c6da3","0xd359a30429058638e57941ad62590d43a2b0e8ab248ea9ab3aaae1f303d5e425","0x102475ba9085842cb2963479f706a8dfb119c6812b09eac1ba7d4bd3423246bd","0x432372a749354c07ec8888a0ca778d708a732f8810bc86e5b6a4f522c3f04e18"],"sync_aggregate":{"sync_committee_bits":"0xdfffdffffefffcf77ffe5effefffdffdf7bfffdfdff7fffdfdedffaffbff7affbffbbffed3fffaffb7dfffff3dfddfffffefff3ffcffdffffffffffff7fcfecd","sync_committee_signature":"0x9182b70595941529a63c3605268337b7d94b8f985275f6e5c12f2bcd81c6ff26450ef705032bad6e95e126f5596d595419e7a49798f98ad5b915437c0536f66b6cea77e3bd72e34e03e4cfa4052ab7ec5e9ef8140a602b9ab28dedc721070a7b"},"fork_version":"0x02001020"}]} \ No newline at end of file diff --git a/eth2near/eth_rpc_client/data/beacon_state_goerli_slot_3887616.json b/eth2near/eth_rpc_client/data/beacon_state_goerli_slot_3887616.json new file mode 100644 index 000000000..0f1232657 --- /dev/null +++ b/eth2near/eth_rpc_client/data/beacon_state_goerli_slot_3887616.json @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f76af90d7097925b9c401f356c6c14ce2abc44b47dcc9a7c94c190c07815bbd7 +size 169636389 diff --git a/eth2near/eth_rpc_client/data/beacon_state_goerli_slot_3887699.json b/eth2near/eth_rpc_client/data/beacon_state_goerli_slot_3887699.json new file mode 100644 index 000000000..cb9aec905 --- /dev/null +++ b/eth2near/eth_rpc_client/data/beacon_state_goerli_slot_3887699.json @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cc9c85a67eb6d0c1331aa66cdd102d8fa71bcffb1f6b800695ad9a898cac5b8f +size 169651056 diff --git a/eth2near/eth2near-block-relay-rs/src/beacon_block_body_merkle_tree.rs b/eth2near/eth_rpc_client/src/beacon_block_body_merkle_tree.rs similarity index 99% rename from eth2near/eth2near-block-relay-rs/src/beacon_block_body_merkle_tree.rs rename to eth2near/eth_rpc_client/src/beacon_block_body_merkle_tree.rs index 9a1ceced3..fabdab49a 100644 --- a/eth2near/eth2near-block-relay-rs/src/beacon_block_body_merkle_tree.rs +++ b/eth2near/eth_rpc_client/src/beacon_block_body_merkle_tree.rs @@ -148,7 +148,7 @@ mod tests { use crate::beacon_block_body_merkle_tree::{ BeaconBlockBodyMerkleTree, ExecutionPayloadMerkleTree, }; - use crate::test_utils::read_json_file_from_data_dir; + use crate::utils::read_json_file_from_data_dir; use tree_hash::TreeHash; use types::BeaconBlockBody; use types::MainnetEthSpec; diff --git a/eth2near/eth2near-block-relay-rs/src/beacon_rpc_client.rs b/eth2near/eth_rpc_client/src/beacon_rpc_client.rs similarity index 99% rename from eth2near/eth2near-block-relay-rs/src/beacon_rpc_client.rs rename to eth2near/eth_rpc_client/src/beacon_rpc_client.rs index 96f20a73e..35d8f6c3d 100644 --- a/eth2near/eth2near-block-relay-rs/src/beacon_rpc_client.rs +++ b/eth2near/eth_rpc_client/src/beacon_rpc_client.rs @@ -1,10 +1,7 @@ use crate::execution_block_proof::ExecutionBlockProof; +use crate::errors::{ErrorOnJsonParse, ExecutionPayloadError, FailOnGettingJson, MissSyncAggregationError, NoBlockForSlotError, SignatureSlotNotFoundError}; +use crate::utils; use crate::light_client_snapshot_with_proof::LightClientSnapshotWithProof; -use crate::relay_errors::{ - ErrorOnJsonParse, ExecutionPayloadError, FailOnGettingJson, MissSyncAggregationError, - NoBlockForSlotError, SignatureSlotNotFoundError, -}; -use contract_wrapper::utils; use eth_types::eth2::BeaconBlockHeader; use eth_types::eth2::FinalizedHeaderUpdate; use eth_types::eth2::HeaderUpdate; @@ -279,7 +276,6 @@ impl BeaconRPCClient { let json_str = self.get_json_from_raw_request(&url_request)?; let v: Value = serde_json::from_str(&json_str)?; - v["data"]["is_syncing"] .as_bool() .ok_or(Box::new(ErrorOnJsonParse)) @@ -483,12 +479,12 @@ impl BeaconRPCClient { mod tests { use crate::beacon_rpc_client::BeaconRPCClient; use crate::config_for_tests::ConfigForTests; - use crate::test_utils::read_json_file_from_data_dir; - use contract_wrapper::utils::trim_quotes; + use crate::utils::read_json_file_from_data_dir; use serde_json::Value; use types::BeaconBlockBody; use types::BeaconBlockHeader; use types::MainnetEthSpec; + use crate::utils::trim_quotes; const TIMEOUT_SECONDS: u64 = 30; const TIMEOUT_STATE_SECONDS: u64 = 1000; diff --git a/eth2near/eth_rpc_client/src/config_for_tests.rs b/eth2near/eth_rpc_client/src/config_for_tests.rs new file mode 100644 index 000000000..26430d74d --- /dev/null +++ b/eth2near/eth_rpc_client/src/config_for_tests.rs @@ -0,0 +1,32 @@ +use std::env; +use serde::Deserialize; +use std::io::Read; +use std::path::PathBuf; + +#[derive(Deserialize, Debug, Clone)] +pub struct ConfigForTests { + pub beacon_endpoint: String, + pub eth1_endpoint: String, + pub first_slot: u64, + pub eth1_number: u64, + pub path_to_attested_state_for_period: String, + pub path_to_finality_state_for_period: String, + pub path_to_block: String, + pub path_to_header: String, + pub path_to_light_client_update: String, +} + +impl ConfigForTests { + pub fn load_from_toml(path: PathBuf) -> Self { + let mut config = std::fs::File::open(path).unwrap(); + let mut content = String::new(); + config.read_to_string(&mut content).unwrap(); + + let mut config: Self = toml::from_str(content.as_str()).unwrap(); + + let api_key_string = env::var("ETH1_INFURA_API_KEY").unwrap(); + config.eth1_endpoint = config.eth1_endpoint.replace("API_KEY", &api_key_string); + + config + } +} diff --git a/eth2near/eth2near-block-relay-rs/src/relay_errors.rs b/eth2near/eth_rpc_client/src/errors.rs similarity index 89% rename from eth2near/eth2near-block-relay-rs/src/relay_errors.rs rename to eth2near/eth_rpc_client/src/errors.rs index 3457914fd..029e4a787 100644 --- a/eth2near/eth2near-block-relay-rs/src/relay_errors.rs +++ b/eth2near/eth_rpc_client/src/errors.rs @@ -3,26 +3,33 @@ use std::fmt; use std::fmt::Display; #[derive(Debug)] -pub struct ErrorOnUnwrapSignatureBit; +pub struct ExecutionPayloadError; -impl Display for ErrorOnUnwrapSignatureBit { +impl Display for ExecutionPayloadError { fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { - write!(f, "Error on getting signature bits from sync aggregate!") + write!( + f, + "Execution Payload not found. \ + Beacon Block Body in this blockchain variant doesn't contain execution payload. \ + Please use The Merge variants" + ) } } -impl Error for ErrorOnUnwrapSignatureBit {} +impl Error for ExecutionPayloadError {} #[derive(Debug)] -pub struct SignatureSlotNotFoundError; +pub struct FailOnGettingJson { + pub response: String, +} -impl Display for SignatureSlotNotFoundError { +impl Display for FailOnGettingJson { fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { - write!(f, "Signature slot not found!") + write!(f, "Fail on getting JSON, response: {}", self.response) } } -impl Error for SignatureSlotNotFoundError {} +impl Error for FailOnGettingJson {} #[derive(Debug)] pub struct MissSyncAggregationError; @@ -41,58 +48,37 @@ impl Display for MissSyncAggregationError { impl Error for MissSyncAggregationError {} #[derive(Debug)] -pub struct ExecutionPayloadError; - -impl Display for ExecutionPayloadError { - fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { - write!( - f, - "Execution Payload not found. \ - Beacon Block Body in this blockchain variant doesn't contain execution payload. \ - Please use The Merge variants" - ) - } -} - -impl Error for ExecutionPayloadError {} - -#[derive(Debug)] -pub struct MissSyncCommitteeUpdate; +pub struct NoBlockForSlotError; -impl Display for MissSyncCommitteeUpdate { +impl Display for NoBlockForSlotError { fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { - write!( - f, - "Sync Committee Update is missing for this Light Client Update" - ) + write!(f, "No block found for slot") } } -impl Error for MissSyncCommitteeUpdate {} +impl Error for NoBlockForSlotError {} #[derive(Debug)] -pub struct NoBlockForSlotError; +pub struct SignatureSlotNotFoundError; -impl Display for NoBlockForSlotError { +impl Display for SignatureSlotNotFoundError { fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { - write!(f, "No block found for slot") + write!(f, "Signature slot not found!") } } -impl Error for NoBlockForSlotError {} +impl Error for SignatureSlotNotFoundError {} #[derive(Debug)] -pub struct FailOnGettingJson { - pub response: String, -} +pub struct ErrorOnUnwrapSignatureBit; -impl Display for FailOnGettingJson { +impl Display for ErrorOnUnwrapSignatureBit { fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { - write!(f, "Fail on getting JSON, response: {}", self.response) + write!(f, "Error on getting signature bits from sync aggregate!") } } -impl Error for FailOnGettingJson {} +impl Error for ErrorOnUnwrapSignatureBit {} #[derive(Debug)] pub struct MissNextSyncCommittee; diff --git a/eth2near/eth2near-block-relay-rs/src/eth1_rpc_client.rs b/eth2near/eth_rpc_client/src/eth1_rpc_client.rs similarity index 100% rename from eth2near/eth2near-block-relay-rs/src/eth1_rpc_client.rs rename to eth2near/eth_rpc_client/src/eth1_rpc_client.rs diff --git a/eth2near/eth2near-block-relay-rs/src/execution_block_proof.rs b/eth2near/eth_rpc_client/src/execution_block_proof.rs similarity index 98% rename from eth2near/eth2near-block-relay-rs/src/execution_block_proof.rs rename to eth2near/eth_rpc_client/src/execution_block_proof.rs index d974e601a..7ee19d96f 100644 --- a/eth2near/eth2near-block-relay-rs/src/execution_block_proof.rs +++ b/eth2near/eth_rpc_client/src/execution_block_proof.rs @@ -1,11 +1,11 @@ use crate::beacon_block_body_merkle_tree::{BeaconBlockBodyMerkleTree, ExecutionPayloadMerkleTree}; -use crate::relay_errors::MissExecutionPayload; use eth2_hashing; use ethereum_types::H256; use std::error::Error; use std::fmt; use std::fmt::Display; use types::{BeaconBlockBody, MainnetEthSpec}; +use crate::errors::MissExecutionPayload; /// `ExecutionBlockProof` contains a `block_hash` (execution block) and /// a proof of its inclusion in the `BeaconBlockBody` tree hash. @@ -152,7 +152,7 @@ impl Error for IncorrectBranchLength {} #[cfg(test)] mod tests { use crate::config_for_tests::ConfigForTests; - use crate::test_utils::read_json_file_from_data_dir; + use crate::utils::read_json_file_from_data_dir; use types::BeaconBlockBody; use types::MainnetEthSpec; diff --git a/eth2near/eth2near-block-relay-rs/src/hand_made_finality_light_client_update.rs b/eth2near/eth_rpc_client/src/hand_made_finality_light_client_update.rs similarity index 94% rename from eth2near/eth2near-block-relay-rs/src/hand_made_finality_light_client_update.rs rename to eth2near/eth_rpc_client/src/hand_made_finality_light_client_update.rs index db780e074..bf85821de 100644 --- a/eth2near/eth2near-block-relay-rs/src/hand_made_finality_light_client_update.rs +++ b/eth2near/eth_rpc_client/src/hand_made_finality_light_client_update.rs @@ -1,7 +1,7 @@ use crate::beacon_block_body_merkle_tree::BeaconStateMerkleTree; use crate::beacon_rpc_client::BeaconRPCClient; use crate::execution_block_proof::ExecutionBlockProof; -use crate::relay_errors::{ +use crate::errors::{ ErrorOnUnwrapSignatureBit, MissNextSyncCommittee, MissSyncAggregationError, NoBlockForSlotError, }; use eth_types::eth2::{ @@ -375,19 +375,14 @@ mod tests { TIMEOUT_STATE_SECONDS, ); - let light_client_updates: Vec = serde_json::from_str( - &std::fs::read_to_string(config.path_to_light_client_updates) - .expect("Unable to read file"), - ) - .unwrap(); - let light_client_period = - BeaconRPCClient::get_period_for_slot(light_client_updates[0].signature_slot); + BeaconRPCClient::get_period_for_slot(config.first_slot); let light_client_update = beacon_rpc_client .get_light_client_update(light_client_period) .unwrap(); + let attested_slot = light_client_update.attested_beacon_header.slot; let hand_made_light_client_update = @@ -418,17 +413,18 @@ mod tests { let hand_made_light_client_update = HandMadeFinalityLightClientUpdate::get_finality_light_client_update_from_file( &beacon_rpc_client, - &config.path_to_attested_state, + &config.path_to_attested_state_for_period, ) .unwrap(); - let light_client_updates: Vec = serde_json::from_str( - &std::fs::read_to_string(config.path_to_light_client_updates) - .expect("Unable to read file"), - ) - .unwrap(); + let light_client_period = + BeaconRPCClient::get_period_for_slot(hand_made_light_client_update.signature_slot); - cmp_light_client_updates(&hand_made_light_client_update, &light_client_updates[1]); + let light_client_update = beacon_rpc_client + .get_light_client_update(light_client_period) + .unwrap(); + + cmp_light_client_updates(&hand_made_light_client_update, &light_client_update); } #[test] @@ -447,15 +443,10 @@ mod tests { &config.path_to_finality_state_for_period, ).unwrap(); - let light_client_updates: Vec = serde_json::from_str( - &std::fs::read_to_string(config.path_to_light_client_updates) - .expect("Unable to read file"), - ) - .unwrap(); - let light_client_period = - BeaconRPCClient::get_period_for_slot(light_client_updates[0].signature_slot); - let light_client_update = beacon_rpc_client + BeaconRPCClient::get_period_for_slot(hand_made_light_client_update.signature_slot); + + let light_client_update = beacon_rpc_client .get_light_client_update(light_client_period) .unwrap(); diff --git a/eth2near/eth_rpc_client/src/lib.rs b/eth2near/eth_rpc_client/src/lib.rs new file mode 100644 index 000000000..ecc23c152 --- /dev/null +++ b/eth2near/eth_rpc_client/src/lib.rs @@ -0,0 +1,9 @@ +pub mod beacon_rpc_client; +pub mod eth1_rpc_client; +pub mod execution_block_proof; +pub mod utils; +pub mod errors; +pub mod beacon_block_body_merkle_tree; +pub mod hand_made_finality_light_client_update; +pub mod config_for_tests; +pub mod light_client_snapshot_with_proof; \ No newline at end of file diff --git a/eth2near/eth2near-block-relay-rs/src/light_client_snapshot_with_proof.rs b/eth2near/eth_rpc_client/src/light_client_snapshot_with_proof.rs similarity index 100% rename from eth2near/eth2near-block-relay-rs/src/light_client_snapshot_with_proof.rs rename to eth2near/eth_rpc_client/src/light_client_snapshot_with_proof.rs diff --git a/eth2near/eth_rpc_client/src/utils.rs b/eth2near/eth_rpc_client/src/utils.rs new file mode 100644 index 000000000..9eb4b65d1 --- /dev/null +++ b/eth2near/eth_rpc_client/src/utils.rs @@ -0,0 +1,20 @@ +pub fn trim_quotes(s: String) -> String { + let mut res_str = s; + if (res_str.starts_with('"') && res_str.ends_with('"')) + || (res_str.starts_with('\'') && res_str.ends_with('\'')) + { + res_str.pop(); + res_str.remove(0); + } + + res_str +} + +pub fn read_json_file_from_data_dir(file_name: &str) -> std::string::String { + let mut json_file_path = std::env::current_exe().unwrap(); + json_file_path.pop(); + json_file_path.push("../../../data"); + json_file_path.push(file_name); + + std::fs::read_to_string(json_file_path).expect("Unable to read file") +} \ No newline at end of file diff --git a/eth2near/eth_rpc_client/test.sh b/eth2near/eth_rpc_client/test.sh new file mode 100755 index 000000000..2f7974cd0 --- /dev/null +++ b/eth2near/eth_rpc_client/test.sh @@ -0,0 +1,5 @@ +#!/usr/bin/env bash + +cargo build + +RUST_BACKTRACE=1 cargo test --jobs 8 -- --nocapture diff --git a/eth2near/finality-update-verify/Cargo.lock b/eth2near/finality-update-verify/Cargo.lock index f21a44984..5cca03b61 100644 --- a/eth2near/finality-update-verify/Cargo.lock +++ b/eth2near/finality-update-verify/Cargo.lock @@ -1217,6 +1217,9 @@ dependencies = [ "eth-types", "eth2-utility", "eth2_hashing", + "eth2_ssz", + "eth2near-logger", + "eth_rpc_client", "ethereum-types", "finality-update-verify", "futures", @@ -1230,6 +1233,48 @@ dependencies = [ "near-jsonrpc-primitives", "near-primitives 0.14.0", "near-sdk", + "primitive-types 0.7.3", + "prometheus", + "reqwest", + "serde", + "serde_json", + "thread", + "tokio 1.21.1", + "toml", + "tree_hash", + "types", + "warp", +] + +[[package]] +name = "eth2near-logger" +version = "0.1.0" +dependencies = [ + "atomic_refcell", + "log", +] + +[[package]] +name = "eth_rpc_client" +version = "0.1.0" +dependencies = [ + "async-std", + "atomic_refcell", + "bitvec 0.17.4", + "borsh", + "clap", + "contract_wrapper", + "env_logger", + "eth-types", + "eth2_hashing", + "eth2_ssz", + "ethereum-types", + "finality-update-verify", + "futures", + "hex 0.3.2", + "lazy_static", + "log", + "merkle_proof", "prometheus", "reqwest", "serde", diff --git a/eth2near/logger/Cargo.lock b/eth2near/logger/Cargo.lock new file mode 100644 index 000000000..6b158e555 --- /dev/null +++ b/eth2near/logger/Cargo.lock @@ -0,0 +1,39 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 3 + +[[package]] +name = "atomic_refcell" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "73b5e5f48b927f04e952dedc932f31995a65a0bf65ec971c74436e51bf6e970d" + +[[package]] +name = "cfg-if" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" + +[[package]] +name = "eth2near-logger" +version = "0.1.0" +dependencies = [ + "atomic_refcell", + "log", +] + +[[package]] +name = "log" +version = "0.4.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "abb12e687cfb44aa40f41fc3978ef76448f9b6038cad6aef4259d3c095a2382e" +dependencies = [ + "cfg-if", + "serde", +] + +[[package]] +name = "serde" +version = "1.0.144" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0f747710de3dcd43b88c9168773254e809d8ddbdf9653b84e2554ab219f17860" diff --git a/eth2near/logger/Cargo.toml b/eth2near/logger/Cargo.toml new file mode 100644 index 000000000..4c40497f4 --- /dev/null +++ b/eth2near/logger/Cargo.toml @@ -0,0 +1,8 @@ +[package] +name = "eth2near-logger" +version = "0.1.0" +edition = "2021" + +[dependencies] +log = { version = "0.4", features = ["std", "serde"] } +atomic_refcell = "0.1.8" \ No newline at end of file diff --git a/eth2near/eth2near-block-relay-rs/src/logger.rs b/eth2near/logger/src/lib.rs similarity index 94% rename from eth2near/eth2near-block-relay-rs/src/logger.rs rename to eth2near/logger/src/lib.rs index 746fb7d04..b76c6756f 100644 --- a/eth2near/eth2near-block-relay-rs/src/logger.rs +++ b/eth2near/logger/src/lib.rs @@ -10,7 +10,7 @@ pub struct SimpleLogger { impl SimpleLogger { pub fn new(path: String) -> Self { - let file = File::create(path).unwrap(); + let file = File::create(path).expect("Error on log file creation"); Self { file: AtomicRefCell::new(file), }