From 47e5c4b2fa22edcdff049326284f8812810fa2ec Mon Sep 17 00:00:00 2001 From: Arun Jangra Date: Thu, 22 Aug 2024 18:22:08 +0530 Subject: [PATCH 1/6] feat: added modules in e2e test crate --- Cargo.lock | 34 +++++++++++++++++ Cargo.toml | 2 +- crates/orchestrator/src/tests/config.rs | 2 - e2e-tests/Cargo.toml | 3 ++ e2e-tests/src/ethereum.rs | 32 ++++++++++++++++ e2e-tests/src/lib.rs | 4 ++ e2e-tests/src/mock_server.rs | 40 ++++++++++++++++++++ e2e-tests/src/sharp.rs | 42 +++++++++++++++++++++ e2e-tests/src/starknet_client.rs | 42 +++++++++++++++++++++ e2e-tests/test_samples.rs | 50 ++++++++++++++++++++++++- 10 files changed, 247 insertions(+), 4 deletions(-) create mode 100644 e2e-tests/src/ethereum.rs create mode 100644 e2e-tests/src/mock_server.rs create mode 100644 e2e-tests/src/sharp.rs create mode 100644 e2e-tests/src/starknet_client.rs diff --git a/Cargo.lock b/Cargo.lock index bd538040..b9a0610a 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -97,6 +97,7 @@ dependencies = [ "alloy-eips 0.1.2", "alloy-genesis", "alloy-network 0.1.2", + "alloy-node-bindings", "alloy-provider 0.1.2", "alloy-pubsub", "alloy-rpc-client 0.1.2", @@ -349,6 +350,22 @@ dependencies = [ "thiserror", ] +[[package]] +name = "alloy-node-bindings" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "494b2fb0276a78ec13791446a417c2517eee5c8e8a8c520ae0681975b8056e5c" +dependencies = [ + "alloy-genesis", + "alloy-primitives 0.7.6", + "k256", + "serde_json", + "tempfile", + "thiserror", + "tracing", + "url", +] + [[package]] name = "alloy-primitives" version = "0.6.4" @@ -429,10 +446,13 @@ dependencies = [ "alloy-eips 0.1.2", "alloy-json-rpc 0.1.2", "alloy-network 0.1.2", + "alloy-node-bindings", "alloy-primitives 0.7.6", "alloy-pubsub", "alloy-rpc-client 0.1.2", + "alloy-rpc-types-anvil", "alloy-rpc-types-eth", + "alloy-signer-local", "alloy-transport 0.1.2", "alloy-transport-http 0.1.2", "alloy-transport-ipc", @@ -578,6 +598,17 @@ dependencies = [ "alloy-serde 0.1.2", ] +[[package]] +name = "alloy-rpc-types-anvil" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8c7cf4356a9d00df76d6e90d002e2a7b5edc1c8476e90e6f17ab868d99db6435" +dependencies = [ + "alloy-primitives 0.7.6", + "alloy-serde 0.1.2", + "serde", +] + [[package]] name = "alloy-rpc-types-engine" version = "0.1.2" @@ -3857,6 +3888,9 @@ checksum = "0d6ef0072f8a535281e4876be788938b528e9a1d43900b82c2569af7da799125" name = "e2e-tests" version = "0.1.0" dependencies = [ + "alloy 0.1.2", + "dotenvy", + "httpmock", "orchestrator", "reqwest 0.11.27", "serde_json", diff --git a/Cargo.toml b/Cargo.toml index b715e867..59758ad5 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -24,7 +24,7 @@ authors = ["Apoorv Sadana <@apoorvsadana>"] [workspace.dependencies] num = { version = "0.4.1" } async-trait = { version = "0.1.77" } -alloy = { version = "0.1.2", features = ["full"] } +alloy = { version = "0.1.2", features = ["full", "node-bindings"] } axum = { version = "0.7.4" } axum-macros = "0.4.1" bincode = "1.3.3" diff --git a/crates/orchestrator/src/tests/config.rs b/crates/orchestrator/src/tests/config.rs index 21510375..3c9e4ad6 100644 --- a/crates/orchestrator/src/tests/config.rs +++ b/crates/orchestrator/src/tests/config.rs @@ -152,8 +152,6 @@ impl TestConfigBuilder { self.storage.unwrap(), ); - drop_database().await.unwrap(); - config_force_init(config).await; server diff --git a/e2e-tests/Cargo.toml b/e2e-tests/Cargo.toml index 03ffa215..cc3b4055 100644 --- a/e2e-tests/Cargo.toml +++ b/e2e-tests/Cargo.toml @@ -4,6 +4,9 @@ version = "0.1.0" edition = "2021" [dependencies] +alloy.workspace = true +dotenvy.workspace = true +httpmock.workspace = true orchestrator.workspace = true reqwest = { workspace = true, features = ["json"] } serde_json.workspace = true diff --git a/e2e-tests/src/ethereum.rs b/e2e-tests/src/ethereum.rs new file mode 100644 index 00000000..31131a36 --- /dev/null +++ b/e2e-tests/src/ethereum.rs @@ -0,0 +1,32 @@ +use alloy::node_bindings::Anvil; + +const BLOCK_TO_FORK: u64 = 18169622; +const ETH_MAINNET_URL: &str = ""; + +pub struct EthereumClient { + anvil_endpoint: String, +} + +impl EthereumClient { + /// To create a new Ethereum Client (spawns a new anvil instance) + pub fn new() -> Self { + let forked_anvil = Anvil::new() + .fork(ETH_MAINNET_URL) + .fork_block_number(BLOCK_TO_FORK) + .try_spawn() + .expect("Unable to fork eth mainnet and run anvil."); + + Self { anvil_endpoint: forked_anvil.endpoint() } + } + + /// To get the anvil endpoint + pub fn endpoint(&self) -> String { + self.anvil_endpoint.clone() + } +} + +impl Default for EthereumClient { + fn default() -> Self { + Self::new() + } +} diff --git a/e2e-tests/src/lib.rs b/e2e-tests/src/lib.rs index 4e4b2ae1..546f9565 100644 --- a/e2e-tests/src/lib.rs +++ b/e2e-tests/src/lib.rs @@ -1,5 +1,9 @@ +pub mod ethereum; +mod mock_server; pub mod mongodb; pub mod node; +pub mod sharp; +pub mod starknet_client; use std::net::TcpListener; use std::path::{Path, PathBuf}; diff --git a/e2e-tests/src/mock_server.rs b/e2e-tests/src/mock_server.rs new file mode 100644 index 00000000..36f96342 --- /dev/null +++ b/e2e-tests/src/mock_server.rs @@ -0,0 +1,40 @@ +use httpmock::MockServer; +use serde_json::Value; + +/// MockServerGlobal (has mock server inside) +pub struct MockServerGlobal { + pub(crate) client_url: String, + pub(crate) mock_server: MockServer, +} + +impl MockServerGlobal { + /// To create a new client + pub fn new() -> Self { + let server = MockServer::start(); + Self { client_url: format!("http://localhost:{:?}", server.port()), mock_server: server } + } + + /// To get mutable mock server ref for adding expects for URLs + pub fn mut_mock_server(&mut self) -> &mut MockServer { + &mut self.mock_server + } + + /// To get the server URL + pub fn url(&self) -> String { + self.client_url.clone() + } + + /// To add mock on the mock server endpoints + pub fn add_mock_on_endpoint( + &mut self, + path: &str, + body_contains: Option<&str>, + status: Option, + response_body: &Value, + ) { + self.mock_server.mock(|when, then| { + when.path(path).body_contains(body_contains.unwrap_or("")); + then.status(status.unwrap_or(200)).body(serde_json::to_vec(response_body).unwrap()); + }); + } +} diff --git a/e2e-tests/src/sharp.rs b/e2e-tests/src/sharp.rs new file mode 100644 index 00000000..741c3403 --- /dev/null +++ b/e2e-tests/src/sharp.rs @@ -0,0 +1,42 @@ +use crate::mock_server::MockServerGlobal; +use httpmock::MockServer; +use serde_json::Value; + +/// Starknet Client struct (has mock server inside) +pub struct SharpClient { + client: MockServerGlobal, +} + +impl SharpClient { + /// To create a new client + pub fn new() -> Self { + Self { client: MockServerGlobal::new() } + } + + /// To get mutable mock server ref for adding expects for URLs + pub fn mut_mock_server(&mut self) -> &mut MockServer { + &mut self.client.mock_server + } + + /// To get the server URL + pub fn url(&self) -> String { + self.client.client_url.clone() + } + + /// To add mock on the mock server endpoints + pub fn add_mock_on_endpoint( + &mut self, + path: &str, + body_contains: Option<&str>, + status: Option, + response_body: &Value, + ) { + self.client.add_mock_on_endpoint(path, body_contains, status, response_body); + } +} + +impl Default for SharpClient { + fn default() -> Self { + Self::new() + } +} diff --git a/e2e-tests/src/starknet_client.rs b/e2e-tests/src/starknet_client.rs new file mode 100644 index 00000000..8f3bc7c0 --- /dev/null +++ b/e2e-tests/src/starknet_client.rs @@ -0,0 +1,42 @@ +use crate::mock_server::MockServerGlobal; +use httpmock::MockServer; +use serde_json::Value; + +/// Starknet Client struct (has mock server inside) +pub struct StarknetClient { + client: MockServerGlobal, +} + +impl StarknetClient { + /// To create a new client + pub fn new() -> Self { + Self { client: MockServerGlobal::new() } + } + + /// To get mutable mock server ref for adding expects for URLs + pub fn mut_mock_server(&mut self) -> &mut MockServer { + &mut self.client.mock_server + } + + /// To get the server URL + pub fn url(&self) -> String { + self.client.client_url.clone() + } + + /// To add mock on the mock server endpoints + pub fn add_mock_on_endpoint( + &mut self, + path: &str, + body_contains: Option<&str>, + status: Option, + response_body: &Value, + ) { + self.client.add_mock_on_endpoint(path, body_contains, status, response_body); + } +} + +impl Default for StarknetClient { + fn default() -> Self { + Self::new() + } +} diff --git a/e2e-tests/test_samples.rs b/e2e-tests/test_samples.rs index d593fa08..11d26739 100644 --- a/e2e-tests/test_samples.rs +++ b/e2e-tests/test_samples.rs @@ -1,8 +1,11 @@ +use e2e_tests::ethereum::EthereumClient; +use e2e_tests::sharp::SharpClient; +use e2e_tests::starknet_client::StarknetClient; use e2e_tests::{MongoDbServer, Orchestrator}; extern crate e2e_tests; -#[ignore = "requires DOCKER_HOST set to run"] +#[ignore] #[tokio::test] async fn test_orchestrator_launches() { let mongodb = MongoDbServer::run().await; @@ -13,3 +16,48 @@ async fn test_orchestrator_launches() { ]); orchestrator.wait_till_started().await; } + +#[ignore] +#[tokio::test] +async fn test_orchestrator_workflow() { + let mongo_db_instance = MongoDbServer::run().await; + let starknet_client = StarknetClient::new(); + let ethereum_client = EthereumClient::new(); + let sharp_client = SharpClient::new(); + + let mut env_vec = get_env_vec(); + + let starknet_client_url = starknet_client.url(); + let sharp_client_url = sharp_client.url(); + let ethereum_client_endpoint = ethereum_client.endpoint(); + + // Adding other values to the environment variables vector + env_vec.push(("MONGODB_CONNECTION_STRING", mongo_db_instance.endpoint().as_str())); + env_vec.push(("MADARA_RPC_URL", starknet_client_url.as_str())); + env_vec.push(("ETHEREUM_RPC_URL", ethereum_client_endpoint.as_str())); + env_vec.push(("SHARP_URL", sharp_client_url.as_str())); +} + +/// To get env variables to be used in testing +fn get_env_vec() -> Vec<(&'static str, &'static str)> { + vec![ + // AWS env vars + ("AWS_ACCESS_KEY_ID", "AWS_ACCESS_KEY_ID"), + ("AWS_SECRET_ACCESS_KEY", "AWS_SECRET_ACCESS_KEY"), + ("AWS_S3_BUCKET_NAME", "madara-orchestrator-test-bucket"), + ("AWS_S3_BUCKET_REGION", "us-east-1"), + ("AWS_ENDPOINT_URL", "http://localhost.localstack.cloud:4566"), + ("SQS_JOB_PROCESSING_QUEUE_URL", "http://sqs.us-east-1.localhost.localstack.cloud:4566/000000000000/madara_orchestrator_job_processing_queue"), + ("SQS_JOB_VERIFICATION_QUEUE_URL", "http://sqs.us-east-1.localhost.localstack.cloud:4566/000000000000/madara_orchestrator_job_verification_queue"), + ("AWS_DEFAULT_REGION", "localhost"), + // On chain config urls + ("ETHEREUM_PRIVATE_KEY", "0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80"), // Private key from anvil + ("PRIVATE_KEY", "0xdead"), // placeholder key for starknet private key (will not be used as we would be using mocking for madara client for now) + // Config URLs + ("DA_LAYER", "ethereum"), + ("PROVER_SERVICE", "sharp"), + ("SETTLEMENT_CLIENT", "ethereum"), + ("DATA_STORAGE", "s3"), + ("ALERTS", "sns") + ] +} From e8c739edc72c866b92b442b886fd77587ada5fa4 Mon Sep 17 00:00:00 2001 From: Arun Jangra Date: Thu, 22 Aug 2024 19:17:24 +0530 Subject: [PATCH 2/6] feat : setup stage completed --- Cargo.lock | 6 +++ Cargo.toml | 3 ++ crates/orchestrator/Cargo.toml | 6 +-- e2e-tests/Cargo.toml | 8 ++- e2e-tests/src/lib.rs | 3 +- e2e-tests/src/localstack.rs | 66 +++++++++++++++++++++++++ e2e-tests/{test_samples.rs => tests.rs} | 6 +++ 7 files changed, 93 insertions(+), 5 deletions(-) create mode 100644 e2e-tests/src/localstack.rs rename e2e-tests/{test_samples.rs => tests.rs} (92%) diff --git a/Cargo.lock b/Cargo.lock index b9a0610a..cd1328da 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3889,8 +3889,14 @@ name = "e2e-tests" version = "0.1.0" dependencies = [ "alloy 0.1.2", + "async-trait", + "aws-config", + "aws-sdk-s3", + "aws-sdk-sqs", + "color-eyre", "dotenvy", "httpmock", + "log", "orchestrator", "reqwest 0.11.27", "serde_json", diff --git a/Cargo.toml b/Cargo.toml index 59758ad5..c7a8f4e6 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -25,6 +25,9 @@ authors = ["Apoorv Sadana <@apoorvsadana>"] num = { version = "0.4.1" } async-trait = { version = "0.1.77" } alloy = { version = "0.1.2", features = ["full", "node-bindings"] } +aws-config = { version = "1.1.7", features = ["behavior-version-latest"] } +aws-sdk-s3 = { version = "1.38.0", features = ["behavior-version-latest"] } +aws-sdk-sqs = "1.36.0" axum = { version = "0.7.4" } axum-macros = "0.4.1" bincode = "1.3.3" diff --git a/crates/orchestrator/Cargo.toml b/crates/orchestrator/Cargo.toml index e5121529..2e4fd97f 100644 --- a/crates/orchestrator/Cargo.toml +++ b/crates/orchestrator/Cargo.toml @@ -17,9 +17,9 @@ arc-swap = { workspace = true } assert_matches = "1.5.0" async-std = "1.12.0" async-trait = { workspace = true } -aws-config = { version = "1.1.7", features = ["behavior-version-latest"] } -aws-sdk-s3 = { version = "1.38.0", features = ["behavior-version-latest"] } -aws-sdk-sqs = "1.36.0" +aws-config = { workspace = true } +aws-sdk-s3 = { workspace = true } +aws-sdk-sqs = { workspace = true } axum = { workspace = true, features = ["macros"] } axum-macros = { workspace = true } bincode = { workspace = true } diff --git a/e2e-tests/Cargo.toml b/e2e-tests/Cargo.toml index cc3b4055..15aa9da8 100644 --- a/e2e-tests/Cargo.toml +++ b/e2e-tests/Cargo.toml @@ -5,8 +5,14 @@ edition = "2021" [dependencies] alloy.workspace = true +async-trait.workspace = true +aws-config.workspace = true +aws-sdk-s3.workspace = true +aws-sdk-sqs.workspace = true +color-eyre.workspace = true dotenvy.workspace = true httpmock.workspace = true +log = "0.4.21" orchestrator.workspace = true reqwest = { workspace = true, features = ["json"] } serde_json.workspace = true @@ -18,4 +24,4 @@ url.workspace = true [[test]] name = "test_samples" -path = "test_samples.rs" +path = "tests.rs" diff --git a/e2e-tests/src/lib.rs b/e2e-tests/src/lib.rs index 546f9565..55e99e24 100644 --- a/e2e-tests/src/lib.rs +++ b/e2e-tests/src/lib.rs @@ -1,5 +1,6 @@ pub mod ethereum; -mod mock_server; +pub mod localstack; +pub mod mock_server; pub mod mongodb; pub mod node; pub mod sharp; diff --git a/e2e-tests/src/localstack.rs b/e2e-tests/src/localstack.rs new file mode 100644 index 00000000..5eec6c26 --- /dev/null +++ b/e2e-tests/src/localstack.rs @@ -0,0 +1,66 @@ +use aws_config::Region; +use orchestrator::data_storage::aws_s3::config::{AWSS3ConfigType, S3LocalStackConfig}; +use orchestrator::data_storage::aws_s3::AWSS3; +use orchestrator::data_storage::{DataStorage, DataStorageConfig}; +use orchestrator::queue::job_queue::{JOB_PROCESSING_QUEUE, JOB_VERIFICATION_QUEUE, JOB_HANDLE_FAILURE_QUEUE}; + +const PIE_FILE_URL: &str = "https://madara-orchestrator-sharp-pie.s3.amazonaws.com/238996-SN.zip"; +const PIE_FILE_BLOCK_NUMBER: u64 = 238996; + +/// LocalStack struct +pub struct LocalStack; + +impl LocalStack { + /// To set up SQS on localstack instance + pub async fn setup_sqs(&self) -> color_eyre::Result<()> { + let sqs_client = self.sqs_client().await; + + let list_queues_output = sqs_client.list_queues().send().await?; + let queue_urls = list_queues_output.queue_urls(); + log::debug!("Found {} queues", queue_urls.len()); + for queue_url in queue_urls { + match sqs_client.delete_queue().queue_url(queue_url).send().await { + Ok(_) => log::debug!("Successfully deleted queue: {}", queue_url), + Err(e) => eprintln!("Error deleting queue {}: {:?}", queue_url, e), + } + } + + // Creating SQS queues + sqs_client.create_queue().queue_name(JOB_PROCESSING_QUEUE).send().await?; + sqs_client.create_queue().queue_name(JOB_VERIFICATION_QUEUE).send().await?; + sqs_client.create_queue().queue_name(JOB_HANDLE_FAILURE_QUEUE).send().await?; + + Ok(()) + } + + /// To set up s3 files needed for e2e testing + pub async fn setup_s3(&self) -> color_eyre::Result<()> { + let s3_client = self.s3_client().await; + + // getting the PIE file from s3 bucket using URL provided + let file = reqwest::get(PIE_FILE_URL).await?; + let file_bytes = file.bytes().await?; + + let s3_file_key = PIE_FILE_BLOCK_NUMBER.to_string() + "/pie.zip"; + s3_client.put_data(file_bytes, &s3_file_key).await?; + + Ok(()) + } + + /// Generic function to send message to any of the queues + pub async fn send_message_to_queue(&self, queue_url: &str, message_body: &str) -> color_eyre::Result<()> { + let sqs_client = self.sqs_client().await; + sqs_client.send_message().queue_url(queue_url).message_body(message_body).send().await?; + Ok(()) + } + + async fn sqs_client(&self) -> aws_sdk_sqs::Client { + let region_provider = Region::new("us-east-1"); + let config = aws_config::from_env().region(region_provider).load().await; + aws_sdk_sqs::Client::new(&config) + } + + async fn s3_client(&self) -> Box { + Box::new(AWSS3::new(AWSS3ConfigType::WithEndpoint(S3LocalStackConfig::new_from_env())).await) + } +} diff --git a/e2e-tests/test_samples.rs b/e2e-tests/tests.rs similarity index 92% rename from e2e-tests/test_samples.rs rename to e2e-tests/tests.rs index 11d26739..1eb04f7e 100644 --- a/e2e-tests/test_samples.rs +++ b/e2e-tests/tests.rs @@ -2,6 +2,7 @@ use e2e_tests::ethereum::EthereumClient; use e2e_tests::sharp::SharpClient; use e2e_tests::starknet_client::StarknetClient; use e2e_tests::{MongoDbServer, Orchestrator}; +use e2e_tests::localstack::LocalStack; extern crate e2e_tests; @@ -25,6 +26,11 @@ async fn test_orchestrator_workflow() { let ethereum_client = EthereumClient::new(); let sharp_client = SharpClient::new(); + // Setting up LocalStack + let localstack_instance = LocalStack {}; + localstack_instance.setup_s3().await.unwrap(); + localstack_instance.setup_sqs().await.unwrap(); + let mut env_vec = get_env_vec(); let starknet_client_url = starknet_client.url(); From d3a011f6556b9e66cc1893558d71bed46c9be208 Mon Sep 17 00:00:00 2001 From: Arun Jangra Date: Thu, 22 Aug 2024 20:14:56 +0530 Subject: [PATCH 3/6] feat : added sharp env vars --- e2e-tests/src/localstack.rs | 2 +- e2e-tests/tests.rs | 32 +++++++++++++++++++++++++++++--- 2 files changed, 30 insertions(+), 4 deletions(-) diff --git a/e2e-tests/src/localstack.rs b/e2e-tests/src/localstack.rs index 5eec6c26..d71071d6 100644 --- a/e2e-tests/src/localstack.rs +++ b/e2e-tests/src/localstack.rs @@ -2,7 +2,7 @@ use aws_config::Region; use orchestrator::data_storage::aws_s3::config::{AWSS3ConfigType, S3LocalStackConfig}; use orchestrator::data_storage::aws_s3::AWSS3; use orchestrator::data_storage::{DataStorage, DataStorageConfig}; -use orchestrator::queue::job_queue::{JOB_PROCESSING_QUEUE, JOB_VERIFICATION_QUEUE, JOB_HANDLE_FAILURE_QUEUE}; +use orchestrator::queue::job_queue::{JOB_HANDLE_FAILURE_QUEUE, JOB_PROCESSING_QUEUE, JOB_VERIFICATION_QUEUE}; const PIE_FILE_URL: &str = "https://madara-orchestrator-sharp-pie.s3.amazonaws.com/238996-SN.zip"; const PIE_FILE_BLOCK_NUMBER: u64 = 238996; diff --git a/e2e-tests/tests.rs b/e2e-tests/tests.rs index 1eb04f7e..44dc2f11 100644 --- a/e2e-tests/tests.rs +++ b/e2e-tests/tests.rs @@ -1,8 +1,9 @@ use e2e_tests::ethereum::EthereumClient; +use e2e_tests::localstack::LocalStack; use e2e_tests::sharp::SharpClient; use e2e_tests::starknet_client::StarknetClient; use e2e_tests::{MongoDbServer, Orchestrator}; -use e2e_tests::localstack::LocalStack; +use std::env::VarError; extern crate e2e_tests; @@ -21,6 +22,10 @@ async fn test_orchestrator_launches() { #[ignore] #[tokio::test] async fn test_orchestrator_workflow() { + let (mongo_db_instance, starknet_client, ethereum_client, sharp_client) = setup_for_test().await.unwrap(); +} + +pub async fn setup_for_test() -> color_eyre::Result<(MongoDbServer, StarknetClient, EthereumClient, SharpClient)> { let mongo_db_instance = MongoDbServer::run().await; let starknet_client = StarknetClient::new(); let ethereum_client = EthereumClient::new(); @@ -30,7 +35,7 @@ async fn test_orchestrator_workflow() { let localstack_instance = LocalStack {}; localstack_instance.setup_s3().await.unwrap(); localstack_instance.setup_sqs().await.unwrap(); - + let mut env_vec = get_env_vec(); let starknet_client_url = starknet_client.url(); @@ -42,6 +47,17 @@ async fn test_orchestrator_workflow() { env_vec.push(("MADARA_RPC_URL", starknet_client_url.as_str())); env_vec.push(("ETHEREUM_RPC_URL", ethereum_client_endpoint.as_str())); env_vec.push(("SHARP_URL", sharp_client_url.as_str())); + // Sharp envs + let sharp_customer_id = get_env_var_or_panic("SHARP_CUSTOMER_ID"); + let sharp_user_cert = get_env_var_or_panic("SHARP_USER_CRT"); + let sharp_user_key = get_env_var_or_panic("SHARP_USER_KEY"); + let sharp_server_cert = get_env_var_or_panic("SHARP_SERVER_CRT"); + env_vec.push(("SHARP_CUSTOMER_ID", sharp_customer_id.as_str())); + env_vec.push(("SHARP_USER_CRT", sharp_user_cert.as_str())); + env_vec.push(("SHARP_USER_KEY", sharp_user_key.as_str())); + env_vec.push(("SHARP_SERVER_CRT", sharp_server_cert.as_str())); + + Ok((mongo_db_instance, starknet_client, ethereum_client, sharp_client)) } /// To get env variables to be used in testing @@ -64,6 +80,16 @@ fn get_env_vec() -> Vec<(&'static str, &'static str)> { ("PROVER_SERVICE", "sharp"), ("SETTLEMENT_CLIENT", "ethereum"), ("DATA_STORAGE", "s3"), - ("ALERTS", "sns") + ("ALERTS", "sns"), + // Sharp configs + ("SHARP_PROOF_LAYOUT", "small") ] } + +pub fn get_env_var(key: &str) -> Result { + std::env::var(key) +} + +pub fn get_env_var_or_panic(key: &str) -> String { + get_env_var(key).unwrap_or_else(|e| panic!("Failed to get env var {}: {}", key, e)) +} From 82604fd3a8feb639b459f02b4b6624a9c07c1e7d Mon Sep 17 00:00:00 2001 From: Arun Jangra Date: Mon, 26 Aug 2024 10:05:02 +0530 Subject: [PATCH 4/6] feat : updated implementation temp --- .env.test | 1 + Cargo.lock | 406 +- Cargo.toml | 8 +- crates/orchestrator/src/config.rs | 5 +- .../src/jobs/state_update_job/mod.rs | 1 + crates/orchestrator/src/queue/job_queue.rs | 38 +- crates/orchestrator/src/workers/mod.rs | 13 + .../gps-fact-checker/Cargo.toml | 1 + .../gps-fact-checker/src/lib.rs | 2 +- .../tests/artifacts/FactRegistry.json | 1033 +---- .../tests/artifacts/FactRegistry2.json | 194 + .../prover-services/sharp-service/Cargo.toml | 2 + .../sharp-service/src/client.rs | 25 +- .../sharp-service/src/config.rs | 7 +- .../sharp-service/src/error.rs | 36 + .../prover-services/sharp-service/src/lib.rs | 16 +- .../sharp-service/src/types.rs | 1 + e2e-tests/Cargo.toml | 5 + .../artifacts/get_state_update_238996.json | 3479 +++++++++++++++++ e2e-tests/artifacts/program_output_238996.txt | 102 + e2e-tests/artifacts/snos_output.json | 12 + e2e-tests/src/ethereum.rs | 29 +- e2e-tests/src/lib.rs | 94 + e2e-tests/src/localstack.rs | 105 +- e2e-tests/src/mongodb.rs | 35 +- e2e-tests/src/node.rs | 80 +- e2e-tests/tests.rs | 113 +- 27 files changed, 4704 insertions(+), 1139 deletions(-) create mode 100644 crates/prover-services/gps-fact-checker/tests/artifacts/FactRegistry2.json create mode 100644 e2e-tests/artifacts/get_state_update_238996.json create mode 100644 e2e-tests/artifacts/program_output_238996.txt create mode 100644 e2e-tests/artifacts/snos_output.json diff --git a/.env.test b/.env.test index 08b22c73..8144cf1c 100644 --- a/.env.test +++ b/.env.test @@ -15,6 +15,7 @@ AWS_DEFAULT_REGION="localhost" MADARA_RPC_URL="http://localhost:3000" ETHEREUM_RPC_URL="http://localhost:3001" +ETHEREUM_MAINNET_RPC_URL="https://mainnet.infura.io/v3/bf9e41563a6a45e28eb60382d85ef3c9" # for forking during tests MEMORY_PAGES_CONTRACT_ADDRESS="0x000000000000000000000000000000000001dead" PRIVATE_KEY="0xdead" # Private key of Test wallet provided by Anvil diff --git a/Cargo.lock b/Cargo.lock index a8e27295..33cd2f9f 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -87,29 +87,29 @@ dependencies = [ [[package]] name = "alloy" -version = "0.1.2" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9134b68e24175eff6c3c4d2bffeefb0a1b7435462130862c88d1524ca376e7e5" +checksum = "3f4a4aaae80afd4be443a6aecd92a6b255dcdd000f97996928efb33d8a71e100" dependencies = [ - "alloy-consensus 0.1.2", + "alloy-consensus 0.2.1", "alloy-contract", - "alloy-core 0.7.6", - "alloy-eips 0.1.2", + "alloy-core 0.7.7", + "alloy-eips 0.2.1", "alloy-genesis", - "alloy-network 0.1.2", + "alloy-json-rpc 0.2.1", + "alloy-network 0.2.1", "alloy-node-bindings", - "alloy-provider 0.1.2", + "alloy-provider 0.2.1", "alloy-pubsub", - "alloy-rpc-client 0.1.2", - "alloy-rpc-types 0.1.2", - "alloy-serde 0.1.2", - "alloy-signer 0.1.2", + "alloy-rpc-client 0.2.1", + "alloy-rpc-types 0.2.1", + "alloy-serde 0.2.1", + "alloy-signer 0.2.1", "alloy-signer-local", - "alloy-transport 0.1.2", - "alloy-transport-http 0.1.2", + "alloy-transport 0.2.1", + "alloy-transport-http 0.2.1", "alloy-transport-ipc", "alloy-transport-ws", - "reqwest 0.12.5", ] [[package]] @@ -135,33 +135,34 @@ dependencies = [ [[package]] name = "alloy-consensus" -version = "0.1.2" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a016bfa21193744d4c38b3f3ab845462284d129e5e23c7cc0fafca7e92d9db37" +checksum = "04c309895995eaa4bfcc345f5515a39c7df9447798645cc8bf462b6c5bf1dc96" dependencies = [ - "alloy-eips 0.1.2", - "alloy-primitives 0.7.6", + "alloy-eips 0.2.1", + "alloy-primitives 0.7.7", "alloy-rlp", - "alloy-serde 0.1.2", + "alloy-serde 0.2.1", "c-kzg", "serde", ] [[package]] name = "alloy-contract" -version = "0.1.2" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e47b2a620fd588d463ccf0f5931b41357664b293a8d31592768845a2a101bb9e" +checksum = "3f4e0ef72b0876ae3068b2ed7dfae9ae1779ce13cfaec2ee1f08f5bd0348dc57" dependencies = [ - "alloy-dyn-abi 0.7.6", - "alloy-json-abi 0.7.6", - "alloy-network 0.1.2", - "alloy-primitives 0.7.6", - "alloy-provider 0.1.2", + "alloy-dyn-abi 0.7.7", + "alloy-json-abi 0.7.7", + "alloy-network 0.2.1", + "alloy-network-primitives", + "alloy-primitives 0.7.7", + "alloy-provider 0.2.1", "alloy-pubsub", "alloy-rpc-types-eth", - "alloy-sol-types 0.7.6", - "alloy-transport 0.1.2", + "alloy-sol-types 0.7.7", + "alloy-transport 0.2.1", "futures", "futures-util", "thiserror", @@ -181,14 +182,14 @@ dependencies = [ [[package]] name = "alloy-core" -version = "0.7.6" +version = "0.7.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5af3faff14c12c8b11037e0a093dd157c3702becb8435577a2408534d0758315" +checksum = "529fc6310dc1126c8de51c376cbc59c79c7f662bd742be7dc67055d5421a81b4" dependencies = [ - "alloy-dyn-abi 0.7.6", - "alloy-json-abi 0.7.6", - "alloy-primitives 0.7.6", - "alloy-sol-types 0.7.6", + "alloy-dyn-abi 0.7.7", + "alloy-json-abi 0.7.7", + "alloy-primitives 0.7.7", + "alloy-sol-types 0.7.7", ] [[package]] @@ -210,14 +211,14 @@ dependencies = [ [[package]] name = "alloy-dyn-abi" -version = "0.7.6" +version = "0.7.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb6e6436a9530f25010d13653e206fab4c9feddacf21a54de8d7311b275bc56b" +checksum = "413902aa18a97569e60f679c23f46a18db1656d87ab4d4e49d0e1e52042f66df" dependencies = [ - "alloy-json-abi 0.7.6", - "alloy-primitives 0.7.6", - "alloy-sol-type-parser 0.7.6", - "alloy-sol-types 0.7.6", + "alloy-json-abi 0.7.7", + "alloy-primitives 0.7.7", + "alloy-sol-type-parser 0.7.7", + "alloy-sol-types 0.7.7", "const-hex", "itoa", "serde", @@ -240,15 +241,16 @@ dependencies = [ [[package]] name = "alloy-eips" -version = "0.1.2" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32d6d8118b83b0489cfb7e6435106948add2b35217f4a5004ef895f613f60299" +checksum = "d9431c99a3b3fe606ede4b3d4043bdfbcb780c45b8d8d226c3804e2b75cfbe68" dependencies = [ - "alloy-primitives 0.7.6", + "alloy-primitives 0.7.7", "alloy-rlp", - "alloy-serde 0.1.2", + "alloy-serde 0.2.1", "c-kzg", "derive_more", + "k256", "once_cell", "serde", "sha2", @@ -256,12 +258,12 @@ dependencies = [ [[package]] name = "alloy-genesis" -version = "0.1.2" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "894f33a7822abb018db56b10ab90398e63273ce1b5a33282afd186c132d764a6" +checksum = "79614dfe86144328da11098edcc7bc1a3f25ad8d3134a9eb9e857e06f0d9840d" dependencies = [ - "alloy-primitives 0.7.6", - "alloy-serde 0.1.2", + "alloy-primitives 0.7.7", + "alloy-serde 0.2.1", "serde", ] @@ -279,12 +281,12 @@ dependencies = [ [[package]] name = "alloy-json-abi" -version = "0.7.6" +version = "0.7.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aaeaccd50238126e3a0ff9387c7c568837726ad4f4e399b528ca88104d6c25ef" +checksum = "bc05b04ac331a9f07e3a4036ef7926e49a8bf84a99a1ccfc7e2ab55a5fcbb372" dependencies = [ - "alloy-primitives 0.7.6", - "alloy-sol-type-parser 0.7.6", + "alloy-primitives 0.7.7", + "alloy-sol-type-parser 0.7.7", "serde", "serde_json", ] @@ -302,11 +304,12 @@ dependencies = [ [[package]] name = "alloy-json-rpc" -version = "0.1.2" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61f0ae6e93b885cc70fe8dae449e7fd629751dbee8f59767eaaa7285333c5727" +checksum = "57e2865c4c3bb4cdad3f0d9ec1ab5c0c657ba69a375651bd35e32fb6c180ccc2" dependencies = [ - "alloy-primitives 0.7.6", + "alloy-primitives 0.7.7", + "alloy-sol-types 0.7.7", "serde", "serde_json", "thiserror", @@ -332,32 +335,44 @@ dependencies = [ [[package]] name = "alloy-network" -version = "0.1.2" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc122cbee2b8523854cc11d87bcd5773741602c553d2d2d106d82eeb9c16924a" +checksum = "6e701fc87ef9a3139154b0b4ccb935b565d27ffd9de020fe541bf2dec5ae4ede" dependencies = [ - "alloy-consensus 0.1.2", - "alloy-eips 0.1.2", - "alloy-json-rpc 0.1.2", - "alloy-primitives 0.7.6", + "alloy-consensus 0.2.1", + "alloy-eips 0.2.1", + "alloy-json-rpc 0.2.1", + "alloy-network-primitives", + "alloy-primitives 0.7.7", "alloy-rpc-types-eth", - "alloy-serde 0.1.2", - "alloy-signer 0.1.2", - "alloy-sol-types 0.7.6", + "alloy-serde 0.2.1", + "alloy-signer 0.2.1", + "alloy-sol-types 0.7.7", "async-trait", "auto_impl", "futures-utils-wasm", "thiserror", ] +[[package]] +name = "alloy-network-primitives" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec9d5a0f9170b10988b6774498a022845e13eda94318440d17709d50687f67f9" +dependencies = [ + "alloy-primitives 0.7.7", + "alloy-serde 0.2.1", + "serde", +] + [[package]] name = "alloy-node-bindings" -version = "0.1.4" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "494b2fb0276a78ec13791446a417c2517eee5c8e8a8c520ae0681975b8056e5c" +checksum = "16faebb9ea31a244fd6ce3288d47df4be96797d9c3c020144b8f2c31543a4512" dependencies = [ "alloy-genesis", - "alloy-primitives 0.7.6", + "alloy-primitives 0.7.7", "k256", "serde_json", "tempfile", @@ -390,9 +405,9 @@ dependencies = [ [[package]] name = "alloy-primitives" -version = "0.7.6" +version = "0.7.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f783611babedbbe90db3478c120fb5f5daacceffc210b39adc0af4fe0da70bad" +checksum = "ccb3ead547f4532bc8af961649942f0b9c16ee9226e26caa3f38420651cc0bf4" dependencies = [ "alloy-rlp", "bytes", @@ -437,24 +452,26 @@ dependencies = [ [[package]] name = "alloy-provider" -version = "0.1.2" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d5af289798fe8783acd0c5f10644d9d26f54a12bc52a083e4f3b31718e9bf92" +checksum = "3f9c0ab10b93de601a6396fc7ff2ea10d3b28c46f079338fa562107ebf9857c8" dependencies = [ "alloy-chains", - "alloy-consensus 0.1.2", - "alloy-eips 0.1.2", - "alloy-json-rpc 0.1.2", - "alloy-network 0.1.2", + "alloy-consensus 0.2.1", + "alloy-eips 0.2.1", + "alloy-json-rpc 0.2.1", + "alloy-network 0.2.1", + "alloy-network-primitives", "alloy-node-bindings", - "alloy-primitives 0.7.6", + "alloy-primitives 0.7.7", "alloy-pubsub", - "alloy-rpc-client 0.1.2", + "alloy-rpc-client 0.2.1", "alloy-rpc-types-anvil", "alloy-rpc-types-eth", + "alloy-rpc-types-trace", "alloy-signer-local", - "alloy-transport 0.1.2", - "alloy-transport-http 0.1.2", + "alloy-transport 0.2.1", + "alloy-transport-http 0.2.1", "alloy-transport-ipc", "alloy-transport-ws", "async-stream", @@ -475,13 +492,13 @@ dependencies = [ [[package]] name = "alloy-pubsub" -version = "0.1.2" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "702f330b7da123a71465ab9d39616292f8344a2811c28f2cc8d8438a69d79e35" +checksum = "3f5da2c55cbaf229bad3c5f8b00b5ab66c74ef093e5f3a753d874cfecf7d2281" dependencies = [ - "alloy-json-rpc 0.1.2", - "alloy-primitives 0.7.6", - "alloy-transport 0.1.2", + "alloy-json-rpc 0.2.1", + "alloy-primitives 0.7.7", + "alloy-transport 0.2.1", "bimap", "futures", "serde", @@ -536,15 +553,15 @@ dependencies = [ [[package]] name = "alloy-rpc-client" -version = "0.1.2" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b40fcb53b2a9d0a78a4968b2eca8805a4b7011b9ee3fdfa2acaf137c5128f36b" +checksum = "5b38e3ffdb285df5d9f60cb988d336d9b8e3505acb78750c3bc60336a7af41d3" dependencies = [ - "alloy-json-rpc 0.1.2", - "alloy-primitives 0.7.6", + "alloy-json-rpc 0.2.1", + "alloy-primitives 0.7.7", "alloy-pubsub", - "alloy-transport 0.1.2", - "alloy-transport-http 0.1.2", + "alloy-transport 0.2.1", + "alloy-transport-http 0.2.1", "alloy-transport-ipc", "alloy-transport-ws", "futures", @@ -589,38 +606,40 @@ dependencies = [ [[package]] name = "alloy-rpc-types" -version = "0.1.2" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50f2fbe956a3e0f0975c798f488dc6be96b669544df3737e18f4a325b42f4c86" +checksum = "e6c31a3750b8f5a350d17354e46a52b0f2f19ec5f2006d816935af599dedc521" dependencies = [ "alloy-rpc-types-engine", "alloy-rpc-types-eth", - "alloy-serde 0.1.2", + "alloy-rpc-types-trace", + "alloy-serde 0.2.1", + "serde", ] [[package]] name = "alloy-rpc-types-anvil" -version = "0.1.4" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c7cf4356a9d00df76d6e90d002e2a7b5edc1c8476e90e6f17ab868d99db6435" +checksum = "52ab6509cd38b2e8c8da726e0f61c1e314a81df06a38d37ddec8bced3f8d25ed" dependencies = [ - "alloy-primitives 0.7.6", - "alloy-serde 0.1.2", + "alloy-primitives 0.7.7", + "alloy-serde 0.2.1", "serde", ] [[package]] name = "alloy-rpc-types-engine" -version = "0.1.2" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd473d98ec552f8229cd6d566bd2b0bbfc5bb4efcefbb5288c834aa8fd832020" +checksum = "ff63f51b2fb2f547df5218527fd0653afb1947bf7fead5b3ce58c75d170b30f7" dependencies = [ - "alloy-consensus 0.1.2", - "alloy-eips 0.1.2", - "alloy-primitives 0.7.6", + "alloy-consensus 0.2.1", + "alloy-eips 0.2.1", + "alloy-primitives 0.7.7", "alloy-rlp", "alloy-rpc-types-eth", - "alloy-serde 0.1.2", + "alloy-serde 0.2.1", "jsonwebtoken", "rand", "serde", @@ -629,22 +648,37 @@ dependencies = [ [[package]] name = "alloy-rpc-types-eth" -version = "0.1.2" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "083f443a83b9313373817236a8f4bea09cca862618e9177d822aee579640a5d6" +checksum = "81e18424d962d7700a882fe423714bd5b9dde74c7a7589d4255ea64068773aef" dependencies = [ - "alloy-consensus 0.1.2", - "alloy-eips 0.1.2", - "alloy-primitives 0.7.6", + "alloy-consensus 0.2.1", + "alloy-eips 0.2.1", + "alloy-network-primitives", + "alloy-primitives 0.7.7", "alloy-rlp", - "alloy-serde 0.1.2", - "alloy-sol-types 0.7.6", + "alloy-serde 0.2.1", + "alloy-sol-types 0.7.7", "itertools 0.13.0", "serde", "serde_json", "thiserror", ] +[[package]] +name = "alloy-rpc-types-trace" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a86eeb49ea0cc79f249faa1d35c20541bb1c317a59b5962cb07b1890355b0064" +dependencies = [ + "alloy-primitives 0.7.7", + "alloy-rpc-types-eth", + "alloy-serde 0.2.1", + "serde", + "serde_json", + "thiserror", +] + [[package]] name = "alloy-serde" version = "0.1.0" @@ -657,11 +691,11 @@ dependencies = [ [[package]] name = "alloy-serde" -version = "0.1.2" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d94da1c0c4e27cc344b05626fe22a89dc6b8b531b9475f3b7691dbf6913e4109" +checksum = "e33feda6a53e6079895aed1d08dcb98a1377b000d80d16370fbbdb8155d547ef" dependencies = [ - "alloy-primitives 0.7.6", + "alloy-primitives 0.7.7", "serde", "serde_json", ] @@ -681,11 +715,11 @@ dependencies = [ [[package]] name = "alloy-signer" -version = "0.1.2" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "58d876be3afd8b78979540084ff63995292a26aa527ad0d44276405780aa0ffd" +checksum = "740a25b92e849ed7b0fa013951fe2f64be9af1ad5abe805037b44fb7770c5c47" dependencies = [ - "alloy-primitives 0.7.6", + "alloy-primitives 0.7.7", "async-trait", "auto_impl", "elliptic-curve 0.13.8", @@ -695,14 +729,14 @@ dependencies = [ [[package]] name = "alloy-signer-local" -version = "0.1.2" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d40a37dc216c269b8a7244047cb1c18a9c69f7a0332ab2c4c2aa4cbb1a31468b" +checksum = "1b0707d4f63e4356a110b30ef3add8732ab6d181dd7be4607bf79b8777105cee" dependencies = [ - "alloy-consensus 0.1.2", - "alloy-network 0.1.2", - "alloy-primitives 0.7.6", - "alloy-signer 0.1.2", + "alloy-consensus 0.2.1", + "alloy-network 0.2.1", + "alloy-primitives 0.7.7", + "alloy-signer 0.2.1", "async-trait", "k256", "rand", @@ -744,9 +778,9 @@ dependencies = [ [[package]] name = "alloy-sol-macro" -version = "0.7.6" +version = "0.7.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4bad41a7c19498e3f6079f7744656328699f8ea3e783bdd10d85788cd439f572" +checksum = "2b40397ddcdcc266f59f959770f601ce1280e699a91fc1862f29cef91707cd09" dependencies = [ "alloy-sol-macro-expander", "alloy-sol-macro-input", @@ -758,11 +792,11 @@ dependencies = [ [[package]] name = "alloy-sol-macro-expander" -version = "0.7.6" +version = "0.7.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd9899da7d011b4fe4c406a524ed3e3f963797dbc93b45479d60341d3a27b252" +checksum = "867a5469d61480fea08c7333ffeca52d5b621f5ca2e44f271b117ec1fc9a0525" dependencies = [ - "alloy-json-abi 0.7.6", + "alloy-json-abi 0.7.7", "alloy-sol-macro-input", "const-hex", "heck 0.5.0", @@ -771,17 +805,17 @@ dependencies = [ "proc-macro2", "quote", "syn 2.0.66", - "syn-solidity 0.7.6", + "syn-solidity 0.7.7", "tiny-keccak", ] [[package]] name = "alloy-sol-macro-input" -version = "0.7.6" +version = "0.7.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d32d595768fdc61331a132b6f65db41afae41b9b97d36c21eb1b955c422a7e60" +checksum = "2e482dc33a32b6fadbc0f599adea520bd3aaa585c141a80b404d0a3e3fa72528" dependencies = [ - "alloy-json-abi 0.7.6", + "alloy-json-abi 0.7.7", "const-hex", "dunce", "heck 0.5.0", @@ -789,7 +823,7 @@ dependencies = [ "quote", "serde_json", "syn 2.0.66", - "syn-solidity 0.7.6", + "syn-solidity 0.7.7", ] [[package]] @@ -803,10 +837,11 @@ dependencies = [ [[package]] name = "alloy-sol-type-parser" -version = "0.7.6" +version = "0.7.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "baa2fbd22d353d8685bd9fee11ba2d8b5c3b1d11e56adb3265fcf1f32bfdf404" +checksum = "cbcba3ca07cf7975f15d871b721fb18031eec8bce51103907f6dcce00b255d98" dependencies = [ + "serde", "winnow 0.6.13", ] @@ -824,13 +859,13 @@ dependencies = [ [[package]] name = "alloy-sol-types" -version = "0.7.6" +version = "0.7.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a49042c6d3b66a9fe6b2b5a8bf0d39fc2ae1ee0310a2a26ffedd79fb097878dd" +checksum = "a91ca40fa20793ae9c3841b83e74569d1cc9af29a2f5237314fd3452d51e38c7" dependencies = [ - "alloy-json-abi 0.7.6", - "alloy-primitives 0.7.6", - "alloy-sol-macro 0.7.6", + "alloy-json-abi 0.7.7", + "alloy-primitives 0.7.7", + "alloy-sol-macro 0.7.7", "const-hex", "serde", ] @@ -855,11 +890,11 @@ dependencies = [ [[package]] name = "alloy-transport" -version = "0.1.2" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "245af9541f0a0dbd5258669c80dfe3af118164cacec978a520041fc130550deb" +checksum = "3d0590afbdacf2f8cca49d025a2466f3b6584a016a8b28f532f29f8da1007bae" dependencies = [ - "alloy-json-rpc 0.1.2", + "alloy-json-rpc 0.2.1", "base64 0.22.1", "futures-util", "futures-utils-wasm", @@ -868,6 +903,7 @@ dependencies = [ "thiserror", "tokio", "tower", + "tracing", "url", ] @@ -886,12 +922,12 @@ dependencies = [ [[package]] name = "alloy-transport-http" -version = "0.1.2" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5619c017e1fdaa1db87f9182f4f0ed97c53d674957f4902fba655e972d359c6c" +checksum = "2437d145d80ea1aecde8574d2058cceb8b3c9cba05f6aea8e67907c660d46698" dependencies = [ - "alloy-json-rpc 0.1.2", - "alloy-transport 0.1.2", + "alloy-json-rpc 0.2.1", + "alloy-transport 0.2.1", "reqwest 0.12.5", "serde_json", "tower", @@ -901,13 +937,13 @@ dependencies = [ [[package]] name = "alloy-transport-ipc" -version = "0.1.2" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "173cefa110afac7a53cf2e75519327761f2344d305eea2993f3af1b2c1fc1c44" +checksum = "804494366e20468776db4e18f9eb5db7db0fe14f1271eb6dbf155d867233405c" dependencies = [ - "alloy-json-rpc 0.1.2", + "alloy-json-rpc 0.2.1", "alloy-pubsub", - "alloy-transport 0.1.2", + "alloy-transport 0.2.1", "bytes", "futures", "interprocess", @@ -920,12 +956,12 @@ dependencies = [ [[package]] name = "alloy-transport-ws" -version = "0.1.2" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c0aff8af5be5e58856c5cdd1e46db2c67c7ecd3a652d9100b4822c96c899947" +checksum = "af855163e7df008799941aa6dd324a43ef2bf264b08ba4b22d44aad6ced65300" dependencies = [ "alloy-pubsub", - "alloy-transport 0.1.2", + "alloy-transport 0.2.1", "futures", "http 1.1.0", "rustls 0.23.10", @@ -1678,9 +1714,9 @@ dependencies = [ [[package]] name = "aws-runtime" -version = "1.3.1" +version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87c5f920ffd1e0526ec9e70e50bf444db50b204395a0fa7016bbf9e31ea1698f" +checksum = "f42c2d4218de4dcd890a109461e2f799a1a2ba3bcd2cde9af88360f5df9266c6" dependencies = [ "aws-credential-types", "aws-sigv4", @@ -1694,12 +1730,35 @@ dependencies = [ "fastrand 2.1.0", "http 0.2.12", "http-body 0.4.6", + "once_cell", "percent-encoding", "pin-project-lite", "tracing", "uuid 1.8.0", ] +[[package]] +name = "aws-sdk-eventbridge" +version = "1.41.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4fb65d775433ba494cc8b67584129989ae31316b5f0a204d7638b5592fb2570" +dependencies = [ + "aws-credential-types", + "aws-runtime", + "aws-smithy-async", + "aws-smithy-http", + "aws-smithy-json", + "aws-smithy-runtime", + "aws-smithy-runtime-api", + "aws-smithy-types", + "aws-types", + "bytes", + "http 0.2.12", + "once_cell", + "regex-lite", + "tracing", +] + [[package]] name = "aws-sdk-s3" version = "1.38.0" @@ -1938,9 +1997,9 @@ dependencies = [ [[package]] name = "aws-smithy-runtime" -version = "1.6.2" +version = "1.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce87155eba55e11768b8c1afa607f3e864ae82f03caf63258b37455b0ad02537" +checksum = "0abbf454960d0db2ad12684a1640120e7557294b0ff8e2f11236290a1b293225" dependencies = [ "aws-smithy-async", "aws-smithy-http", @@ -1965,9 +2024,9 @@ dependencies = [ [[package]] name = "aws-smithy-runtime-api" -version = "1.7.1" +version = "1.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30819352ed0a04ecf6a2f3477e344d2d1ba33d43e0f09ad9047c12e0d923616f" +checksum = "e086682a53d3aa241192aa110fa8dfce98f2f5ac2ead0de84d41582c7e8fdb96" dependencies = [ "aws-smithy-async", "aws-smithy-types", @@ -1982,9 +2041,9 @@ dependencies = [ [[package]] name = "aws-smithy-types" -version = "1.2.0" +version = "1.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cfe321a6b21f5d8eabd0ade9c55d3d0335f3c3157fc2b3e87f05f34b539e4df5" +checksum = "6cee7cadb433c781d3299b916fbf620fea813bf38f49db282fb6858141a05cc8" dependencies = [ "base64-simd", "bytes", @@ -3888,23 +3947,28 @@ checksum = "0d6ef0072f8a535281e4876be788938b528e9a1d43900b82c2569af7da799125" name = "e2e-tests" version = "0.1.0" dependencies = [ - "alloy 0.1.2", + "alloy 0.2.1", "async-trait", "aws-config", + "aws-sdk-eventbridge", "aws-sdk-s3", "aws-sdk-sqs", + "bytes", "color-eyre", "dotenvy", "httpmock", "log", + "mongodb", "orchestrator", "reqwest 0.11.27", "serde_json", + "starknet", "testcontainers", "tokio", "tokio-stream", "tokio-util", "url", + "uuid 1.8.0", ] [[package]] @@ -4119,11 +4183,14 @@ dependencies = [ name = "ethereum-settlement-client" version = "0.1.0" dependencies = [ - "alloy 0.1.2", + "alloy 0.2.1", + "alloy-primitives 0.7.7", "async-trait", "c-kzg", "color-eyre", "dotenv", + "dotenvy", + "lazy_static", "mockall 0.12.1", "reqwest 0.12.5", "rstest 0.18.2", @@ -4660,10 +4727,11 @@ dependencies = [ name = "gps-fact-checker" version = "0.1.0" dependencies = [ - "alloy 0.1.2", + "alloy 0.2.1", "async-trait", "cairo-vm 1.0.0-rc3", "itertools 0.13.0", + "log", "starknet", "thiserror", "url", @@ -6354,7 +6422,7 @@ checksum = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d" name = "orchestrator" version = "0.1.0" dependencies = [ - "alloy 0.1.2", + "alloy 0.2.1", "arc-swap", "assert_matches", "async-std", @@ -8323,15 +8391,17 @@ dependencies = [ name = "sharp-service" version = "0.1.0" dependencies = [ - "alloy 0.1.2", + "alloy 0.2.1", "async-trait", "base64 0.22.1", "cairo-vm 1.0.0-rc3", + "color-eyre", "dotenvy", "gps-fact-checker", "hex", "httpmock", "lazy_static", + "log", "prover-client-interface", "reqwest 0.11.27", "rstest 0.18.2", @@ -8999,9 +9069,9 @@ dependencies = [ [[package]] name = "syn-solidity" -version = "0.7.6" +version = "0.7.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8d71e19bca02c807c9faa67b5a47673ff231b6e7449b251695188522f1dc44b2" +checksum = "c837dc8852cb7074e46b444afb81783140dab12c58867b49fb3898fbafedf7ea" dependencies = [ "paste", "proc-macro2", diff --git a/Cargo.toml b/Cargo.toml index 4d38f8b3..f508a2eb 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -24,9 +24,15 @@ authors = ["Apoorv Sadana <@apoorvsadana>"] [workspace.dependencies] num = { version = "0.4.1" } async-trait = { version = "0.1.77" } -alloy = { version = "0.1.2", features = ["full", "node-bindings"] } +alloy = { version = "0.2.1", features = ["full", + "node-bindings", + "rpc-types-debug", + "rpc-types-trace", + "json-rpc", + "rpc-client",] } aws-config = { version = "1.1.7", features = ["behavior-version-latest"] } aws-sdk-s3 = { version = "1.38.0", features = ["behavior-version-latest"] } +aws-sdk-eventbridge = { version = "1.41.0", features = ["behavior-version-latest"] } aws-sdk-sqs = "1.36.0" axum = { version = "0.7.4" } axum-macros = "0.4.1" diff --git a/crates/orchestrator/src/config.rs b/crates/orchestrator/src/config.rs index 447b25ec..aa930368 100644 --- a/crates/orchestrator/src/config.rs +++ b/crates/orchestrator/src/config.rs @@ -1,6 +1,6 @@ use std::sync::Arc; -use crate::data_storage::aws_s3::config::{AWSS3Config, AWSS3ConfigType}; +use crate::data_storage::aws_s3::config::{AWSS3Config, AWSS3ConfigType, S3LocalStackConfig}; use crate::data_storage::aws_s3::AWSS3; use crate::data_storage::{DataStorage, DataStorageConfig}; use arc_swap::{ArcSwap, Guard}; @@ -180,6 +180,9 @@ pub async fn build_settlement_client( pub async fn build_storage_client() -> Box { match get_env_var_or_panic("DATA_STORAGE").as_str() { "s3" => Box::new(AWSS3::new(AWSS3ConfigType::WithoutEndpoint(AWSS3Config::new_from_env())).await), + "s3_localstack" => { + Box::new(AWSS3::new(AWSS3ConfigType::WithEndpoint(S3LocalStackConfig::new_from_env())).await) + } _ => panic!("Unsupported Storage Client"), } } diff --git a/crates/orchestrator/src/jobs/state_update_job/mod.rs b/crates/orchestrator/src/jobs/state_update_job/mod.rs index 48e4aeb9..b6391264 100644 --- a/crates/orchestrator/src/jobs/state_update_job/mod.rs +++ b/crates/orchestrator/src/jobs/state_update_job/mod.rs @@ -275,6 +275,7 @@ impl StateUpdateJob { } else if snos.use_kzg_da == Felt252::ONE { let blob_data = fetch_blob_data_for_block(block_no).await.map_err(|e| JobError::Other(OtherError(e)))?; + // TODO : Fetch Program Output from data storage client // Fetching nonce before the transaction is run // Sending update_state transaction from the settlement client settlement_client diff --git a/crates/orchestrator/src/queue/job_queue.rs b/crates/orchestrator/src/queue/job_queue.rs index d6769aea..5defa8f9 100644 --- a/crates/orchestrator/src/queue/job_queue.rs +++ b/crates/orchestrator/src/queue/job_queue.rs @@ -1,10 +1,11 @@ use std::future::Future; +use std::str::FromStr; use std::time::Duration; use color_eyre::eyre::Context; use color_eyre::Result as EyreResult; use omniqueue::{Delivery, QueueError}; -use serde::{Deserialize, Serialize}; +use serde::{Deserialize, Deserializer, Serialize}; use tokio::time::sleep; use tracing::log; use uuid::Uuid; @@ -57,11 +58,42 @@ pub enum WorkerTriggerType { UpdateState, } -#[derive(Debug, Serialize, Deserialize, Clone)] +#[derive(Debug, Serialize, Clone)] pub struct WorkerTriggerMessage { - pub(crate) worker: WorkerTriggerType, + pub worker: WorkerTriggerType, } +impl FromStr for WorkerTriggerType { + type Err = String; + + fn from_str(s: &str) -> Result { + match s { + "Proving" => Ok(WorkerTriggerType::Proving), + "Snos" => Ok(WorkerTriggerType::Snos), + "ProofRegistration" => Ok(WorkerTriggerType::ProofRegistration), + "DataSubmission" => Ok(WorkerTriggerType::DataSubmission), + "UpdateState" => Ok(WorkerTriggerType::UpdateState), + _ => Err(format!("Unknown WorkerTriggerType: {}", s)), + } + } +} + +impl<'de> Deserialize<'de> for WorkerTriggerMessage { + fn deserialize(deserializer: D) -> Result + where + D: Deserializer<'de>, + { + let s = String::deserialize(deserializer)?; + let s = s.trim_start_matches('{').trim_end_matches('}'); + let parts: Vec<&str> = s.split(':').collect(); + if parts.len() != 2 || parts[0] != "worker" { + return Err(serde::de::Error::custom("Invalid format")); + } + Ok(WorkerTriggerMessage { worker: WorkerTriggerType::from_str(parts[1]).map_err(serde::de::Error::custom)? }) + } +} + +#[derive(Debug)] enum DeliveryReturnType { Message(Delivery), NoMessage, diff --git a/crates/orchestrator/src/workers/mod.rs b/crates/orchestrator/src/workers/mod.rs index 785b1e2d..7b4a83c9 100644 --- a/crates/orchestrator/src/workers/mod.rs +++ b/crates/orchestrator/src/workers/mod.rs @@ -1,6 +1,7 @@ use crate::{config::config, jobs::types::JobStatus}; use async_trait::async_trait; use std::error::Error; +use thiserror::Error; pub mod data_submission_worker; pub mod proof_registration; @@ -8,6 +9,18 @@ pub mod proving; pub mod snos; pub mod update_state; +#[derive(Error, Debug)] +pub enum WorkerError { + #[error("Worker execution failed: {0}")] + ExecutionError(String), + + #[error("JSON RPC error: {0}")] + JsonRpcError(String), + + #[error("Other error: {0}")] + Other(Box), +} + #[async_trait] pub trait Worker: Send + Sync { async fn run_worker_if_enabled(&self) -> Result<(), Box> { diff --git a/crates/prover-services/gps-fact-checker/Cargo.toml b/crates/prover-services/gps-fact-checker/Cargo.toml index fb0e7478..87500636 100644 --- a/crates/prover-services/gps-fact-checker/Cargo.toml +++ b/crates/prover-services/gps-fact-checker/Cargo.toml @@ -20,3 +20,4 @@ starknet.workspace = true thiserror.workspace = true url.workspace = true utils.workspace = true +log = "0.4.21" diff --git a/crates/prover-services/gps-fact-checker/src/lib.rs b/crates/prover-services/gps-fact-checker/src/lib.rs index 239e7556..0694fe07 100644 --- a/crates/prover-services/gps-fact-checker/src/lib.rs +++ b/crates/prover-services/gps-fact-checker/src/lib.rs @@ -15,7 +15,7 @@ sol!( #[allow(missing_docs)] #[sol(rpc)] FactRegistry, - "tests/artifacts/FactRegistry.json" + "tests/artifacts/FactRegistry2.json" ); pub struct FactChecker { diff --git a/crates/prover-services/gps-fact-checker/tests/artifacts/FactRegistry.json b/crates/prover-services/gps-fact-checker/tests/artifacts/FactRegistry.json index c687ed7e..1c5ff4b1 100644 --- a/crates/prover-services/gps-fact-checker/tests/artifacts/FactRegistry.json +++ b/crates/prover-services/gps-fact-checker/tests/artifacts/FactRegistry.json @@ -1,863 +1,194 @@ -{ - "abi": [ - { - "type": "function", - "name": "hasRegisteredFact", - "inputs": [], - "outputs": [{ "name": "", "type": "bool", "internalType": "bool" }], - "stateMutability": "view" - }, - { - "type": "function", - "name": "isValid", - "inputs": [ - { "name": "fact", "type": "bytes32", "internalType": "bytes32" } - ], - "outputs": [{ "name": "", "type": "bool", "internalType": "bool" }], - "stateMutability": "view" - } - ], - "bytecode": { - "object": "0x608060405234801561001057600080fd5b5060ce8061001f6000396000f3fe6080604052348015600f57600080fd5b506004361060325760003560e01c80636a938567146037578063d6354e15146065575b600080fd5b605160048036036020811015604b57600080fd5b5035606b565b604080519115158252519081900360200190f35b6051607a565b60006074826083565b92915050565b60015460ff1690565b60009081526020819052604090205460ff169056fea2646970667358221220553e722d7d055d1334a20223ec1ae1a12bf73d8488850f4be28de564102b902764736f6c634300060c0033", - "sourceMap": "118:1279:8:-:0;;;;;;;;;;;;;;;;;;;", - "linkReferences": {} - }, - "deployedBytecode": { - "object": "0x6080604052348015600f57600080fd5b506004361060325760003560e01c80636a938567146037578063d6354e15146065575b600080fd5b605160048036036020811015604b57600080fd5b5035606b565b604080519115158252519081900360200190f35b6051607a565b60006074826083565b92915050565b60015460ff1690565b60009081526020819052604090205460ff169056fea2646970667358221220553e722d7d055d1334a20223ec1ae1a12bf73d8488850f4be28de564102b902764736f6c634300060c0033", - "sourceMap": "118:1279:8:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;421:109;;;;;;;;;;;;;;;;-1:-1:-1;421:109:8;;:::i;:::-;;;;;;;;;;;;;;;;;;1287:108;;;:::i;421:109::-;484:4;507:16;518:4;507:10;:16::i;:::-;500:23;421:109;-1:-1:-1;;421:109:8:o;1287:108::-;1371:17;;;;1287:108;:::o;826:105::-;883:4;906:18;;;;;;;;;;;;;;826:105::o", - "linkReferences": {} - }, - "methodIdentifiers": { - "hasRegisteredFact()": "d6354e15", - "isValid(bytes32)": "6a938567" - }, - "rawMetadata": "{\"compiler\":{\"version\":\"0.6.12+commit.27d51765\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"hasRegisteredFact\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"fact\",\"type\":\"bytes32\"}],\"name\":\"isValid\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/src/components/FactRegistry.sol\":\"FactRegistry\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/src/components/FactRegistry.sol\":{\"keccak256\":\"0xf1dde737bfeb616fad002bb7ad229c73fec98f1e539420566fa89805c5bb120d\",\"license\":\"Apache-2.0.\",\"urls\":[\"bzz-raw://1952c89d683c9f58ce06cf222f42772131113b3dd2442c6dc9150a2bde6d4d34\",\"dweb:/ipfs/QmT8u7c1gAYRVF4kCdW7v9QiE65TwwdVu76pdvsFzXnZWg\"]},\"contracts/src/interfaces/IFactRegistry.sol\":{\"keccak256\":\"0xab04b296b506dfb0b4a8828f3dc463072fd50449a5ad8327d1baf01438b0fb35\",\"license\":\"Apache-2.0.\",\"urls\":[\"bzz-raw://e451abe007f98081d1adfd759cc4168f81982992d8c0554650b94d37bc009e64\",\"dweb:/ipfs/QmVBNUWFhNX8PqSMcqRkHVaTbcm7KNpgSg91Sj6MepFG6u\"]},\"contracts/src/interfaces/IQueryableFactRegistry.sol\":{\"keccak256\":\"0x9689f96215bae9da993a5f1b16a7c1460b1abd478569d969d5b901fa4520b4b6\",\"license\":\"Apache-2.0.\",\"urls\":[\"bzz-raw://cfe2f9ca69bffdfaad8cdea188f0e6e385fbd2f5b1ee2194f989f25c76a30250\",\"dweb:/ipfs/QmSffz94BEf9MuqrQ41LuAcBL6FnsxqY4pxfxM8b4s3iSi\"]}},\"version\":1}", - "metadata": { - "compiler": { "version": "0.6.12+commit.27d51765" }, - "language": "Solidity", - "output": { - "abi": [ - { - "inputs": [], - "stateMutability": "view", - "type": "function", - "name": "hasRegisteredFact", - "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }] - }, - { - "inputs": [ - { "internalType": "bytes32", "name": "fact", "type": "bytes32" } - ], - "stateMutability": "view", - "type": "function", - "name": "isValid", - "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }] - } - ], - "devdoc": { "kind": "dev", "methods": {}, "version": 1 }, - "userdoc": { "kind": "user", "methods": {}, "version": 1 } - }, - "settings": { - "remappings": [], - "optimizer": { "enabled": true, "runs": 200 }, - "metadata": { "bytecodeHash": "ipfs" }, - "compilationTarget": { - "contracts/src/components/FactRegistry.sol": "FactRegistry" +[ + { + "inputs": [ + { + "internalType": "address", + "name": "bootloaderProgramContract", + "type": "address" + }, + { + "internalType": "address", + "name": "memoryPageFactRegistry_", + "type": "address" + }, + { + "internalType": "address[]", + "name": "cairoVerifierContracts", + "type": "address[]" + }, + { + "internalType": "uint256", + "name": "simpleBootloaderProgramHash", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "applicativeBootloaderProgramHash", + "type": "uint256" }, - "libraries": {} - }, - "sources": { - "contracts/src/components/FactRegistry.sol": { - "keccak256": "0xf1dde737bfeb616fad002bb7ad229c73fec98f1e539420566fa89805c5bb120d", - "urls": [ - "bzz-raw://1952c89d683c9f58ce06cf222f42772131113b3dd2442c6dc9150a2bde6d4d34", - "dweb:/ipfs/QmT8u7c1gAYRVF4kCdW7v9QiE65TwwdVu76pdvsFzXnZWg" - ], - "license": "Apache-2.0." + { + "internalType": "uint256", + "name": "hashedSupportedCairoVerifiers", + "type": "uint256" }, - "contracts/src/interfaces/IFactRegistry.sol": { - "keccak256": "0xab04b296b506dfb0b4a8828f3dc463072fd50449a5ad8327d1baf01438b0fb35", - "urls": [ - "bzz-raw://e451abe007f98081d1adfd759cc4168f81982992d8c0554650b94d37bc009e64", - "dweb:/ipfs/QmVBNUWFhNX8PqSMcqRkHVaTbcm7KNpgSg91Sj6MepFG6u" - ], - "license": "Apache-2.0." + { + "internalType": "address", + "name": "referenceVerifier", + "type": "address" }, - "contracts/src/interfaces/IQueryableFactRegistry.sol": { - "keccak256": "0x9689f96215bae9da993a5f1b16a7c1460b1abd478569d969d5b901fa4520b4b6", - "urls": [ - "bzz-raw://cfe2f9ca69bffdfaad8cdea188f0e6e385fbd2f5b1ee2194f989f25c76a30250", - "dweb:/ipfs/QmSffz94BEf9MuqrQ41LuAcBL6FnsxqY4pxfxM8b4s3iSi" - ], - "license": "Apache-2.0." + { + "internalType": "uint256", + "name": "referralDurationSeconds", + "type": "uint256" } - }, - "version": 1 + ], + "stateMutability": "nonpayable", + "type": "constructor" }, - "ast": { - "absolutePath": "contracts/src/components/FactRegistry.sol", - "id": 1175, - "exportedSymbols": { "FactRegistry": [1174] }, - "nodeType": "SourceUnit", - "src": "40:1358:8", - "nodes": [ + { + "anonymous": false, + "inputs": [ { - "id": 1110, - "nodeType": "PragmaDirective", - "src": "40:24:8", - "nodes": [], - "literals": ["solidity", "^", "0.6", ".12"] + "indexed": false, + "internalType": "bytes32", + "name": "programOutputFact", + "type": "bytes32" }, { - "id": 1111, - "nodeType": "ImportDirective", - "src": "66:50:8", - "nodes": [], - "absolutePath": "contracts/src/interfaces/IQueryableFactRegistry.sol", - "file": "../interfaces/IQueryableFactRegistry.sol", - "scope": 1175, - "sourceUnit": 6348, - "symbolAliases": [], - "unitAlias": "" - }, + "indexed": false, + "internalType": "bytes32[]", + "name": "pagesHashes", + "type": "bytes32[]" + } + ], + "name": "LogMemoryPagesHashes", + "type": "event" + }, + { + "inputs": [], + "name": "PAGE_INFO_ADDRESS_OFFSET", + "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "PAGE_INFO_HASH_OFFSET", + "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "PAGE_INFO_SIZE", + "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "PAGE_INFO_SIZE_IN_BYTES", + "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "PAGE_INFO_SIZE_OFFSET", + "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getBootloaderConfig", + "outputs": [ + { "internalType": "uint256", "name": "", "type": "uint256" }, + { "internalType": "uint256", "name": "", "type": "uint256" }, + { "internalType": "uint256", "name": "", "type": "uint256" } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "hasRegisteredFact", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "identify", + "outputs": [{ "internalType": "string", "name": "", "type": "string" }], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { "internalType": "bytes32", "name": "fact", "type": "bytes32" } + ], + "name": "isValid", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { "internalType": "bytes32", "name": "fact", "type": "bytes32" } + ], + "name": "localIsValid", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "referenceFactRegistry", + "outputs": [ { - "id": 1174, - "nodeType": "ContractDefinition", - "src": "118:1279:8", - "nodes": [ - { - "id": 1117, - "nodeType": "VariableDeclaration", - "src": "207:45:8", - "nodes": [], - "constant": false, - "mutability": "mutable", - "name": "verifiedFact", - "overrides": null, - "scope": 1174, - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", - "typeString": "mapping(bytes32 => bool)" - }, - "typeName": { - "id": 1116, - "keyType": { - "id": 1114, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "215:7:8", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "nodeType": "Mapping", - "src": "207:24:8", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", - "typeString": "mapping(bytes32 => bool)" - }, - "valueType": { - "id": 1115, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "226:4:8", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - }, - "value": null, - "visibility": "private" - }, - { - "id": 1119, - "nodeType": "VariableDeclaration", - "src": "336:22:8", - "nodes": [], - "constant": false, - "mutability": "mutable", - "name": "anyFactRegistered", - "overrides": null, - "scope": 1174, - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 1118, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "336:4:8", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "value": null, - "visibility": "internal" - }, - { - "id": 1132, - "nodeType": "FunctionDefinition", - "src": "421:109:8", - "nodes": [], - "body": { - "id": 1131, - "nodeType": "Block", - "src": "490:40:8", - "nodes": [], - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1128, - "name": "fact", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1121, - "src": "518:4:8", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - ], - "id": 1127, - "name": "_factCheck", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1144, - "src": "507:10:8", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_bool_$", - "typeString": "function (bytes32) view returns (bool)" - } - }, - "id": 1129, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "507:16:8", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "functionReturnParameters": 1126, - "id": 1130, - "nodeType": "Return", - "src": "500:23:8" - } - ] - }, - "baseFunctions": [6327], - "documentation": null, - "functionSelector": "6a938567", - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "isValid", - "overrides": { - "id": 1123, - "nodeType": "OverrideSpecifier", - "overrides": [], - "src": "466:8:8" - }, - "parameters": { - "id": 1122, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1121, - "mutability": "mutable", - "name": "fact", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 1132, - "src": "438:12:8", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 1120, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "438:7:8", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "437:14:8" - }, - "returnParameters": { - "id": 1126, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1125, - "mutability": "mutable", - "name": "", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 1132, - "src": "484:4:8", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 1124, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "484:4:8", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "483:6:8" - }, - "scope": 1174, - "stateMutability": "view", - "virtual": false, - "visibility": "external" - }, - { - "id": 1144, - "nodeType": "FunctionDefinition", - "src": "826:105:8", - "nodes": [], - "body": { - "id": 1143, - "nodeType": "Block", - "src": "889:42:8", - "nodes": [], - "statements": [ - { - "expression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1139, - "name": "verifiedFact", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1117, - "src": "906:12:8", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", - "typeString": "mapping(bytes32 => bool)" - } - }, - "id": 1141, - "indexExpression": { - "argumentTypes": null, - "id": 1140, - "name": "fact", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1134, - "src": "919:4:8", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "906:18:8", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "functionReturnParameters": 1138, - "id": 1142, - "nodeType": "Return", - "src": "899:25:8" - } - ] - }, - "documentation": null, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "_factCheck", - "overrides": null, - "parameters": { - "id": 1135, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1134, - "mutability": "mutable", - "name": "fact", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 1144, - "src": "846:12:8", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 1133, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "846:7:8", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "845:14:8" - }, - "returnParameters": { - "id": 1138, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1137, - "mutability": "mutable", - "name": "", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 1144, - "src": "883:4:8", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 1136, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "883:4:8", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "882:6:8" - }, - "scope": 1174, - "stateMutability": "view", - "virtual": false, - "visibility": "internal" - }, - { - "id": 1164, - "nodeType": "FunctionDefinition", - "src": "937:272:8", - "nodes": [], - "body": { - "id": 1163, - "nodeType": "Block", - "src": "986:223:8", - "nodes": [], - "statements": [ - { - "expression": { - "argumentTypes": null, - "id": 1153, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1149, - "name": "verifiedFact", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1117, - "src": "1058:12:8", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", - "typeString": "mapping(bytes32 => bool)" - } - }, - "id": 1151, - "indexExpression": { - "argumentTypes": null, - "id": 1150, - "name": "factHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1146, - "src": "1071:8:8", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "1058:22:8", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "hexValue": "74727565", - "id": 1152, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1083:4:8", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "true" - }, - "src": "1058:29:8", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 1154, - "nodeType": "ExpressionStatement", - "src": "1058:29:8" - }, - { - "condition": { - "argumentTypes": null, - "id": 1156, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "!", - "prefix": true, - "src": "1134:18:8", - "subExpression": { - "argumentTypes": null, - "id": 1155, - "name": "anyFactRegistered", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1119, - "src": "1135:17:8", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": null, - "id": 1162, - "nodeType": "IfStatement", - "src": "1130:73:8", - "trueBody": { - "id": 1161, - "nodeType": "Block", - "src": "1154:49:8", - "statements": [ - { - "expression": { - "argumentTypes": null, - "id": 1159, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 1157, - "name": "anyFactRegistered", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1119, - "src": "1168:17:8", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "hexValue": "74727565", - "id": 1158, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1188:4:8", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "true" - }, - "src": "1168:24:8", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 1160, - "nodeType": "ExpressionStatement", - "src": "1168:24:8" - } - ] - } - } - ] - }, - "documentation": null, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "registerFact", - "overrides": null, - "parameters": { - "id": 1147, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1146, - "mutability": "mutable", - "name": "factHash", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 1164, - "src": "959:16:8", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 1145, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "959:7:8", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "958:18:8" - }, - "returnParameters": { - "id": 1148, - "nodeType": "ParameterList", - "parameters": [], - "src": "986:0:8" - }, - "scope": 1174, - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "internal" - }, - { - "id": 1173, - "nodeType": "FunctionDefinition", - "src": "1287:108:8", - "nodes": [], - "body": { - "id": 1172, - "nodeType": "Block", - "src": "1354:41:8", - "nodes": [], - "statements": [ - { - "expression": { - "argumentTypes": null, - "id": 1170, - "name": "anyFactRegistered", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1119, - "src": "1371:17:8", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "functionReturnParameters": 1169, - "id": 1171, - "nodeType": "Return", - "src": "1364:24:8" - } - ] - }, - "baseFunctions": [6346], - "documentation": null, - "functionSelector": "d6354e15", - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "hasRegisteredFact", - "overrides": { - "id": 1166, - "nodeType": "OverrideSpecifier", - "overrides": [], - "src": "1330:8:8" - }, - "parameters": { - "id": 1165, - "nodeType": "ParameterList", - "parameters": [], - "src": "1313:2:8" - }, - "returnParameters": { - "id": 1169, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1168, - "mutability": "mutable", - "name": "", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 1173, - "src": "1348:4:8", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 1167, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "1348:4:8", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "1347:6:8" - }, - "scope": 1174, - "stateMutability": "view", - "virtual": false, - "visibility": "external" - } - ], - "abstract": false, - "baseContracts": [ - { - "arguments": null, - "baseName": { - "contractScope": null, - "id": 1112, - "name": "IQueryableFactRegistry", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 6347, - "src": "143:22:8", - "typeDescriptions": { - "typeIdentifier": "t_contract$_IQueryableFactRegistry_$6347", - "typeString": "contract IQueryableFactRegistry" - } - }, - "id": 1113, - "nodeType": "InheritanceSpecifier", - "src": "143:22:8" - } - ], - "contractDependencies": [6328, 6347], - "contractKind": "contract", - "documentation": null, - "fullyImplemented": true, - "linearizedBaseContracts": [1174, 6347, 6328], - "name": "FactRegistry", - "scope": 1175 + "internalType": "contract IFactRegistry", + "name": "", + "type": "address" } ], - "license": "Apache-2.0." + "stateMutability": "view", + "type": "function" }, - "id": 8 -} + { + "inputs": [], + "name": "referralExpirationTime", + "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256[]", + "name": "proofParams", + "type": "uint256[]" + }, + { "internalType": "uint256[]", "name": "proof", "type": "uint256[]" }, + { + "internalType": "uint256[]", + "name": "taskMetadata", + "type": "uint256[]" + }, + { + "internalType": "uint256[]", + "name": "cairoAuxInput", + "type": "uint256[]" + }, + { + "internalType": "uint256", + "name": "cairoVerifierId", + "type": "uint256" + } + ], + "name": "verifyProofAndRegister", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } +] diff --git a/crates/prover-services/gps-fact-checker/tests/artifacts/FactRegistry2.json b/crates/prover-services/gps-fact-checker/tests/artifacts/FactRegistry2.json new file mode 100644 index 00000000..1c5ff4b1 --- /dev/null +++ b/crates/prover-services/gps-fact-checker/tests/artifacts/FactRegistry2.json @@ -0,0 +1,194 @@ +[ + { + "inputs": [ + { + "internalType": "address", + "name": "bootloaderProgramContract", + "type": "address" + }, + { + "internalType": "address", + "name": "memoryPageFactRegistry_", + "type": "address" + }, + { + "internalType": "address[]", + "name": "cairoVerifierContracts", + "type": "address[]" + }, + { + "internalType": "uint256", + "name": "simpleBootloaderProgramHash", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "applicativeBootloaderProgramHash", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "hashedSupportedCairoVerifiers", + "type": "uint256" + }, + { + "internalType": "address", + "name": "referenceVerifier", + "type": "address" + }, + { + "internalType": "uint256", + "name": "referralDurationSeconds", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "bytes32", + "name": "programOutputFact", + "type": "bytes32" + }, + { + "indexed": false, + "internalType": "bytes32[]", + "name": "pagesHashes", + "type": "bytes32[]" + } + ], + "name": "LogMemoryPagesHashes", + "type": "event" + }, + { + "inputs": [], + "name": "PAGE_INFO_ADDRESS_OFFSET", + "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "PAGE_INFO_HASH_OFFSET", + "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "PAGE_INFO_SIZE", + "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "PAGE_INFO_SIZE_IN_BYTES", + "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "PAGE_INFO_SIZE_OFFSET", + "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getBootloaderConfig", + "outputs": [ + { "internalType": "uint256", "name": "", "type": "uint256" }, + { "internalType": "uint256", "name": "", "type": "uint256" }, + { "internalType": "uint256", "name": "", "type": "uint256" } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "hasRegisteredFact", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "identify", + "outputs": [{ "internalType": "string", "name": "", "type": "string" }], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { "internalType": "bytes32", "name": "fact", "type": "bytes32" } + ], + "name": "isValid", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { "internalType": "bytes32", "name": "fact", "type": "bytes32" } + ], + "name": "localIsValid", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "referenceFactRegistry", + "outputs": [ + { + "internalType": "contract IFactRegistry", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "referralExpirationTime", + "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256[]", + "name": "proofParams", + "type": "uint256[]" + }, + { "internalType": "uint256[]", "name": "proof", "type": "uint256[]" }, + { + "internalType": "uint256[]", + "name": "taskMetadata", + "type": "uint256[]" + }, + { + "internalType": "uint256[]", + "name": "cairoAuxInput", + "type": "uint256[]" + }, + { + "internalType": "uint256", + "name": "cairoVerifierId", + "type": "uint256" + } + ], + "name": "verifyProofAndRegister", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } +] diff --git a/crates/prover-services/sharp-service/Cargo.toml b/crates/prover-services/sharp-service/Cargo.toml index dd46b05a..7f508aeb 100644 --- a/crates/prover-services/sharp-service/Cargo.toml +++ b/crates/prover-services/sharp-service/Cargo.toml @@ -8,6 +8,7 @@ alloy.workspace = true async-trait.workspace = true base64 = "0.22.1" cairo-vm.workspace = true +color-eyre.workspace = true dotenvy.workspace = true gps-fact-checker.workspace = true hex.workspace = true @@ -25,6 +26,7 @@ tracing.workspace = true url.workspace = true utils.workspace = true uuid.workspace = true +log = "0.4.21" [dev-dependencies] tokio.workspace = true diff --git a/crates/prover-services/sharp-service/src/client.rs b/crates/prover-services/sharp-service/src/client.rs index 71550924..52576a26 100644 --- a/crates/prover-services/sharp-service/src/client.rs +++ b/crates/prover-services/sharp-service/src/client.rs @@ -6,12 +6,9 @@ use url::Url; use utils::env_utils::get_env_var_or_panic; use uuid::Uuid; -use crate::error::SharpError; +use crate::error::{OtherError, SharpError}; use crate::types::{SharpAddJobResponse, SharpGetStatusResponse}; -/// SHARP endpoint for Sepolia testnet -pub const DEFAULT_SHARP_URL: &str = "https://sepolia-recursive.public-testnet.provingservice.io/v1/gateway"; - /// SHARP API async wrapper pub struct SharpClient { base_url: Url, @@ -97,10 +94,24 @@ impl SharpClient { // Adding params to the url add_params_to_url(&mut base_url, params); - let res = self.client.post(base_url).send().await.map_err(SharpError::GetJobStatusFailure)?; + let res = self.client.post(base_url.clone()).send().await.map_err(SharpError::GetJobStatusFailure)?; match res.status() { - reqwest::StatusCode::OK => res.json().await.map_err(SharpError::GetJobStatusFailure), + reqwest::StatusCode::OK => { + let text = res.text().await.unwrap(); + log::info!("Received response text: {:?}", text); + + match serde_json::from_str::(&text) { + Ok(response) => { + log::info!("Deserialization successful: {:?}", response); + Ok(response) + } + Err(e) => { + log::error!("Deserialization failed: {:?}", e); + Err(SharpError::Other(OtherError::from(e.to_string()))) + } + } + } code => Err(SharpError::SharpService(code)), } } @@ -115,6 +126,6 @@ fn add_params_to_url(url: &mut Url, params: Vec<(&str, &str)>) { impl Default for SharpClient { fn default() -> Self { - Self::new(DEFAULT_SHARP_URL.parse().unwrap()) + Self::new(get_env_var_or_panic("SHARP_URL").parse().unwrap()) } } diff --git a/crates/prover-services/sharp-service/src/config.rs b/crates/prover-services/sharp-service/src/config.rs index eddd4768..7117c131 100644 --- a/crates/prover-services/sharp-service/src/config.rs +++ b/crates/prover-services/sharp-service/src/config.rs @@ -1,8 +1,7 @@ use alloy::primitives::Address; use serde::{Deserialize, Serialize}; use url::Url; - -use crate::client::DEFAULT_SHARP_URL; +use utils::env_utils::get_env_var_or_panic; /// SHARP proving service configuration #[derive(Debug, Clone, Serialize, Deserialize)] @@ -19,8 +18,8 @@ impl Default for SharpConfig { /// Default config for Sepolia testnet fn default() -> Self { Self { - service_url: DEFAULT_SHARP_URL.parse().unwrap(), - rpc_node_url: "https://ethereum-sepolia-rpc.publicnode.com".parse().unwrap(), + service_url: get_env_var_or_panic("SHARP_URL").parse().unwrap(), + rpc_node_url: get_env_var_or_panic("ETHEREUM_RPC_URL").parse().unwrap(), verifier_address: "0x07ec0D28e50322Eb0C159B9090ecF3aeA8346DFe".parse().unwrap(), } } diff --git a/crates/prover-services/sharp-service/src/error.rs b/crates/prover-services/sharp-service/src/error.rs index c17e9feb..b77718b0 100644 --- a/crates/prover-services/sharp-service/src/error.rs +++ b/crates/prover-services/sharp-service/src/error.rs @@ -1,7 +1,41 @@ use alloy::primitives::hex::FromHexError; +use color_eyre::eyre::eyre; use gps_fact_checker::error::FactCheckerError; use prover_client_interface::ProverClientError; use reqwest::StatusCode; +use std::fmt; + +// ==================================================== +/// Wrapper Type for Other(<>) job type +#[derive(Debug)] +pub struct OtherError(color_eyre::eyre::Error); + +impl fmt::Display for OtherError { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + self.0.fmt(f) + } +} + +impl std::error::Error for OtherError {} + +impl PartialEq for OtherError { + fn eq(&self, _other: &Self) -> bool { + false + } +} + +impl From for OtherError { + fn from(err: color_eyre::eyre::Error) -> Self { + OtherError(err) + } +} + +impl From for OtherError { + fn from(error_string: String) -> Self { + OtherError(eyre!(error_string)) + } +} +// ==================================================== #[derive(Debug, thiserror::Error)] pub enum SharpError { @@ -23,6 +57,8 @@ pub enum SharpError { PieEncode(#[source] snos::error::SnOsError), #[error("Failed to get url as path segment mut. URL is cannot-be-a-base.")] PathSegmentMutFailOnUrl, + #[error("Other error: {0}")] + Other(#[from] OtherError), } impl From for ProverClientError { diff --git a/crates/prover-services/sharp-service/src/lib.rs b/crates/prover-services/sharp-service/src/lib.rs index 1ef26004..4abe68de 100644 --- a/crates/prover-services/sharp-service/src/lib.rs +++ b/crates/prover-services/sharp-service/src/lib.rs @@ -5,7 +5,7 @@ mod types; use std::str::FromStr; -use alloy::primitives::B256; +use alloy::primitives::{B256, I256}; use async_trait::async_trait; use gps_fact_checker::fact_info::get_fact_info; use gps_fact_checker::FactChecker; @@ -30,12 +30,13 @@ pub struct SharpProverService { impl ProverClient for SharpProverService { async fn submit_task(&self, task: Task) -> Result { match task { - Task::CairoPie(cairo_pie) => { - let fact_info = get_fact_info(&cairo_pie, None)?; - let encoded_pie = - snos::sharp::pie::encode_pie_mem(cairo_pie).map_err(ProverClientError::PieEncoding)?; - let (_, job_key) = self.sharp_client.add_job(&encoded_pie).await?; - Ok(combine_task_id(&job_key, &fact_info.fact)) + Task::CairoPie(_cairo_pie) => { + // let fact_info = get_fact_info(&cairo_pie, None)?; + // let encoded_pie = + // snos::sharp::pie::encode_pie_mem(cairo_pie).map_err(ProverClientError::PieEncoding)?; + // let (_, job_key) = self.sharp_client.add_job(&encoded_pie).await?; + // Ok(combine_task_id(&job_key, &fact_info.fact)) + Ok(combine_task_id(&Uuid::new_v4(), &B256::from(I256::ZERO))) } } } @@ -43,6 +44,7 @@ impl ProverClient for SharpProverService { async fn get_task_status(&self, task_id: &TaskId) -> Result { let (job_key, fact) = split_task_id(task_id)?; let res = self.sharp_client.get_job_status(&job_key).await?; + match res.status { // TODO : We would need to remove the FAILED, UNKNOWN, NOT_CREATED status as it is not in the sharp client response specs : // https://docs.google.com/document/d/1-9ggQoYmjqAtLBGNNR2Z5eLreBmlckGYjbVl0khtpU0 diff --git a/crates/prover-services/sharp-service/src/types.rs b/crates/prover-services/sharp-service/src/types.rs index 89c18352..eab8eaa7 100644 --- a/crates/prover-services/sharp-service/src/types.rs +++ b/crates/prover-services/sharp-service/src/types.rs @@ -14,6 +14,7 @@ pub struct SharpGetProofResponse { #[derive(Default, Debug, Clone, Deserialize)] pub struct SharpGetStatusResponse { + #[serde(default)] pub status: CairoJobStatus, pub invalid_reason: Option, pub error_log: Option, diff --git a/e2e-tests/Cargo.toml b/e2e-tests/Cargo.toml index 15aa9da8..30bac038 100644 --- a/e2e-tests/Cargo.toml +++ b/e2e-tests/Cargo.toml @@ -9,18 +9,23 @@ async-trait.workspace = true aws-config.workspace = true aws-sdk-s3.workspace = true aws-sdk-sqs.workspace = true +aws-sdk-eventbridge.workspace = true color-eyre.workspace = true dotenvy.workspace = true httpmock.workspace = true log = "0.4.21" +mongodb.workspace = true orchestrator.workspace = true reqwest = { workspace = true, features = ["json"] } serde_json.workspace = true +starknet.workspace = true testcontainers.workspace = true tokio = { workspace = true, features = ["full"] } tokio-stream.workspace = true tokio-util.workspace = true url.workspace = true +uuid = { version = "1.8.0", features = ["v4"] } +bytes = "1.6.0" [[test]] name = "test_samples" diff --git a/e2e-tests/artifacts/get_state_update_238996.json b/e2e-tests/artifacts/get_state_update_238996.json new file mode 100644 index 00000000..dc6f46ac --- /dev/null +++ b/e2e-tests/artifacts/get_state_update_238996.json @@ -0,0 +1,3479 @@ +{ + "block_hash": "0x2f593697232a57276f3c8f32586164b77f9d886e8e4b2386c36ee5fa9ff6dd5", + "old_root": "0x407bcd19337c8fc1846138863802ffc57ec365616d6bbcb2eda878387d1683a", + "new_root": "0x37bf86e51616172b8d3d32957ca44f0b11b0e24fdae8fd9e44464ccd420b420", + "state_diff": { + "storage_diffs": [ + { + "address": "0x3d39f7248fb2bfb960275746470f7fb470317350ad8656249ec66067559e892", + "storage_entries": [ + { + "key": "0x2d7cec932c6cc9e9c2f31a355b609695158d021b50fa78790bb407b4a1b5ad2", + "value": "0x6509095f" + }, + { + "key": "0x4b0162661745aadb8cb9078e90cd69999b5e12aeef3f298faf79f0dba5f7e14", + "value": "0x10ecd1d800590" + }, + { + "key": "0x89511a56ef72ffebcbbfaedee4c41170b8453ddd69b1d9c3efd3ed846d7d1f", + "value": "0xde8664f83f26677" + }, + { + "key": "0x35f67f399e2ef386797ff346fd4f9049c698443d9f16698349a52d1f9c58443", + "value": "0x180b938ed8b906" + }, + { + "key": "0x74acf2ae9192e0a29fac335bd19550b0bf9fe26ee35ddc265e8eaf969c5775c", + "value": "0xe158e7e4c982daf" + } + ] + }, + { + "address": "0x62fa7afe1ca2992f8d8015385a279f49fad36299754fb1e9866f4f052289376", + "storage_entries": [ + { + "key": "0x48be3692ab3e9e8bd4a134a7b958b4e69bcb00a71d4f58c22f9311921f12bcf", + "value": "0xb4794d6ab20aa417e" + }, + { + "key": "0x1d430bf138ea7c30cc4ba41938ff8081ecede809c1d7bc56b785784aceaae08", + "value": "0x1c58fd5fb9759a02b631" + } + ] + }, + { + "address": "0x136910b27feeb0d898bef1786746528380ffa35ce4f1167a6872d89fa62b6d4", + "storage_entries": [ + { + "key": "0xf920571b9f85bdd92a867cfdc73319d0f8836f0e69e06e4c5566b6203f75cc", + "value": "0x309c042d3729173c7f2f91a34f04d8c509c1b292d334679ef1aabf8da0899cc" + }, + { + "key": "0x1ccc09c8a19948e048de7add6929589945e25f22059c7345aaf7837188d8d05", + "value": "0x32cc0ae279afa02bcccf7fff00051b1022ecbe04c9897591cb64963c4cac42d" + } + ] + }, + { + "address": "0x1b23ed400b210766111ba5b1e63e33922c6ba0c45e6ad56ce112e5f4c578e62", + "storage_entries": [ + { + "key": "0x672d16a175120754045e21563dd49c5debabff275022aec6cd39c53e8e9c57d", + "value": "0x2febab219deb3f32" + }, + { + "key": "0x131f6efd2d7938489c8c68e405dfeba9ef8881de389b5501b1cc949f0369ed9", + "value": "0x937575e55e54663e59" + }, + { + "key": "0x16959433341337ac941cd4e57b41288667ddd17669996bef9d213060da40dbf", + "value": "0x10bcec2f7" + } + ] + }, + { + "address": "0x72291cbfd4d8be52134884cb34ee0b268258cb8ac209bfc185bcb91db1e7999", + "storage_entries": [ + { + "key": "0xf920571b9f85bdd92a867cfdc73319d0f8836f0e69e06e4c5566b6203f75cc", + "value": "0x0" + } + ] + }, + { + "address": "0x1ea237607b7d9d2e9997aa373795929807552503683e35d8739f4dc46652de1", + "storage_entries": [ + { + "key": "0x110e2f729c9c2b988559994a3daccd838cf52faf88e18101373e67dd061455a", + "value": "0x4e616c647b" + }, + { + "key": "0x43f863fbfec515e09baf07ce0460de605f678a1561a44e0bfa821525f5c7d0d", + "value": "0x1f8e7f7c" + } + ] + }, + { + "address": "0x41a708cf109737a50baa6cbeb9adf0bf8d97112dc6cc80c7a458cbad35328b0", + "storage_entries": [ + { + "key": "0x332df419aa058c3f4b36acbf5af4b7e8e3d4dd58918d5f0ab2841741e7b55c2", + "value": "0x6509095f" + }, + { + "key": "0x3b3a699bb6ef37ff4b9c4e14319c7d8e9c9bdd10ff402d1ebde18c62ae58381", + "value": "0x56417b8a5f" + }, + { + "key": "0x1e6f3e4333da349f86a03f030be7f2c76d8266a97c625746ebb9d3220a39d87", + "value": "0x565eeab0d2" + }, + { + "key": "0x2712b812fff3c2f3b38d4c532c684b5a1800dae9c4a8001c6f855bb520c7c5", + "value": "0x9a3b09820822aed833a99746fe36f346" + }, + { + "key": "0x19dbc9b4eab95d05b7871c69cdeef24e69dc2a3536f0c6bf169000dc1fdd20d", + "value": "0x62dd27e936e33c5993cab7f724c6fe64" + } + ] + }, + { + "address": "0xcfd39f5244f7b617418c018204a8a9f9a7f72e71f0ef38f968eeb2a9ca302b", + "storage_entries": [ + { + "key": "0x3351bce4793f90e4aa00447357c2d34ac08611756193d8249009e0396dd7b41", + "value": "0x6509095f" + }, + { + "key": "0x3b3a699bb6ef37ff4b9c4e14319c7d8e9c9bdd10ff402d1ebde18c62ae58381", + "value": "0x24c04d2041" + }, + { + "key": "0x1e6f3e4333da349f86a03f030be7f2c76d8266a97c625746ebb9d3220a39d87", + "value": "0x2181ea0cdd1d2c148f41" + }, + { + "key": "0x57c60b189063035eed65879a14ad5f6e718027a212dafbe52f9bcd79e9f4fa", + "value": "0x15cb2b06bef596721" + } + ] + }, + { + "address": "0x47ad51726d891f972e74e4ad858a261b43869f7126ce7436ee0b2529a98f486", + "storage_entries": [ + { + "key": "0x48be3692ab3e9e8bd4a134a7b958b4e69bcb00a71d4f58c22f9311921f12bcf", + "value": "0x534feb82" + }, + { + "key": "0x1d430bf138ea7c30cc4ba41938ff8081ecede809c1d7bc56b785784aceaae08", + "value": "0x113218040f6" + } + ] + }, + { + "address": "0x75b0d87aca8dee25df35cdc39a82b406168fa23a76fc3f03abbfdc6620bb6d7", + "storage_entries": [ + { + "key": "0x110e2f729c9c2b988559994a3daccd838cf52faf88e18101373e67dd061455a", + "value": "0x1130d4" + }, + { + "key": "0x2b9344ffc09b3bfd715dc285845f90dfcc746fc49a0c817b6cbe532092d90c7", + "value": "0x3c45" + } + ] + }, + { + "address": "0x45e7131d776dddc137e30bdd490b431c7144677e97bf9369f629ed8d3fb7dd6", + "storage_entries": [ + { + "key": "0x110e2f729c9c2b988559994a3daccd838cf52faf88e18101373e67dd061455a", + "value": "0x4629f0eb2737b5" + }, + { + "key": "0x3b3a699bb6ef37ff4b9c4e14319c7d8e9c9bdd10ff402d1ebde18c62ae58381", + "value": "0xf181da12c7" + }, + { + "key": "0x1e6f3e4333da349f86a03f030be7f2c76d8266a97c625746ebb9d3220a39d87", + "value": "0x2260eb9a4d8a2e38a7" + }, + { + "key": "0x57c60b189063035eed65879a14ad5f6e718027a212dafbe52f9bcd79e9f4fa", + "value": "0x36865ce2c924d3" + }, + { + "key": "0xb6980fbfd6243019e03c00f3074a127dc9c7f7b763341a1c0b7ee968fdcb43", + "value": "0x0" + }, + { + "key": "0x18930a4a425df4de774a74c429d4fedf40de3ee97cc0a73b89194edd162a642", + "value": "0x17817fc84c2473569014bbb4" + }, + { + "key": "0x73e94e71dc9f37e98e6aa7cc11536eb94e7c55d6605f311c99584f326f45179", + "value": "0x1b3a6dce2defeb07737a4810" + }, + { + "key": "0x144fb6d7f48cd1daa2f3d0a93b3e0048a8e1f7394caf134818ae57f7150e396", + "value": "0x589e039eb6" + }, + { + "key": "0x3351bce4793f90e4aa00447357c2d34ac08611756193d8249009e0396dd7b41", + "value": "0x6509095f" + }, + { + "key": "0x6edded4efb159b71fb1701ffb016a4a4ce076ff5cd4b6eec20c504b5fdace5e", + "value": "0x0" + } + ] + }, + { + "address": "0x4d0390b777b424e43839cd1e744799f3de6c176c7e32c1812a41dbd9c19db6a", + "storage_entries": [ + { + "key": "0x110e2f729c9c2b988559994a3daccd838cf52faf88e18101373e67dd061455a", + "value": "0x11ea9c7311dc5d9" + }, + { + "key": "0x3b3a699bb6ef37ff4b9c4e14319c7d8e9c9bdd10ff402d1ebde18c62ae58381", + "value": "0x3f521d3d2ed" + }, + { + "key": "0x1e6f3e4333da349f86a03f030be7f2c76d8266a97c625746ebb9d3220a39d87", + "value": "0x902573550586a6f133" + }, + { + "key": "0x57c60b189063035eed65879a14ad5f6e718027a212dafbe52f9bcd79e9f4fa", + "value": "0x37bdc1de60db1c" + }, + { + "key": "0x2c6705dcc5ac75d87473b218701d811d6731e1863067927cc311120b16a28a5", + "value": "0x3f0598a58e" + }, + { + "key": "0x51449a3d9b9b9e3f79123bedfc512feb297d98e9ba80aa8f03bfca471ec386a", + "value": "0x3be1d77316c" + }, + { + "key": "0x3351bce4793f90e4aa00447357c2d34ac08611756193d8249009e0396dd7b41", + "value": "0x6509095f" + }, + { + "key": "0x622de76fde18c4ad7b9b4a4afb34709868be06146472b53cbe2f74c91f0a001", + "value": "0x11b97c6b02d" + } + ] + }, + { + "address": "0x2aab581754064a87ade1b680fd9756dc3a17440a87aaf496dcfb39fd163d1dd", + "storage_entries": [ + { + "key": "0x2e3f9cadd00a7b869d6b98db5d32847ff18a5561c3f3f7a944380864c8f247b", + "value": "0x6509095f" + }, + { + "key": "0x4e9417c05bcf183e111558ce4666b053bbfe9736b74fba16b017ab7ae075f1", + "value": "0x317d034999b7ee22e1" + }, + { + "key": "0x3cdef5d80c6ad04af135e445867114b5ce32ed8dc8de667995f3d27760e3520", + "value": "0x29611c30263a809" + }, + { + "key": "0x3e65716c9b9f010d10085941d0c6e6dfb190695b7cf09a71f0aca74ab94cdf", + "value": "0xe02a6371fa1b04ff569a" + }, + { + "key": "0x24dc99466e4418b4fccd818c369e805aa4b2c2e28731ca51ec24311cfb85a69", + "value": "0x1203a109580ba7f751e369b8" + }, + { + "key": "0xf1ec356adea149fcc8824a2b8712d81d1df416b0f8f8ac32931c66d5f80501", + "value": "0x1d5eeb91005e9" + } + ] + }, + { + "address": "0x1435498bf393da86b4733b9264a86b58a42b31f8d8b8ba309593e5c17847672", + "storage_entries": [ + { + "key": "0x47ca6125fb3ca33c5847b5336c43e2dfa4ebd1e76a6f8149cf3801b506fab29", + "value": "0x5d1b6a7134efa09a2999261b48ac7e2ece40b9595f89c1f2000000000000000" + }, + { + "key": "0x4c431dbf92cec0a48a728442a1b14edeaf5144712f3f7b3bb98f43c21cd7670", + "value": "0x1" + }, + { + "key": "0x55000ecd829d69447f8c5549b3c8157875d1942b4d0e9128bb3287dc8578f79", + "value": "0x25e23874d051a17bd1d145e3634970d1bb290dae5c0d73386d4598278861715" + } + ] + }, + { + "address": "0x5dd3d2f4429af886cd1a3b08289dbcea99a294197e9eb43b0e0325b4b", + "storage_entries": [ + { + "key": "0x52e76cad75d24a019190b75f2d94e4313f9f92cfb1dbcfe62c863faa2dca81c", + "value": "0x16360204b48d7098cc79" + }, + { + "key": "0x4ed55f236b424b2eeb2bc294c9359c3d917b6b20213a60c392be5a80c881e6b", + "value": "0x100762b9da0759d1a73a6f959d821f95ca" + }, + { + "key": "0x1568e314a5593860f749f3ea8d2e0add62f38e80e8f30b04ebb278f40c385f5", + "value": "0x10134b5210000000000000000000002a672f03c6dc384bb278e75a746cd" + }, + { + "key": "0x5f0bef2282f18a0bc659723ff06c529cf4af154628a7b1cf925f71552b1258d", + "value": "0x10070e55c00000000000000000006554c75ce048f9dd6ce0d7a82276c6a" + }, + { + "key": "0x5bcaa1e73a4bce52448a05f6c1621a8e96cac50a493f14b47bfd9472b21a366", + "value": "0x7c3d75ddb7114c719824fb08a9" + }, + { + "key": "0x3f4bb10a68f4e591ee94e94546ce408da0dc22eb52f265ffdf1fb192372302f", + "value": "0x596206b481c53bb3f" + }, + { + "key": "0xc37a99b03e26aa791e82083190c484f773383fbdc97b455ebb37590ac5f448", + "value": "0x10134b63d0000000000000000000002a65a4aba271fe357b8ca100c3940" + }, + { + "key": "0x1ea2e870fda4f7c97320ae0f1d6fe31d5932ff1f279659ab0c7fedab55e9d8a", + "value": "0x133216c143a0e1b59db4f39843b54f1" + }, + { + "key": "0x1c872221e7c3919f427e7039c18d634fa2ff516f539c5a72776d82418ffa07", + "value": "0x3fdaf23ca8" + } + ] + }, + { + "address": "0x5900cfa2b50d53b097cb305d54e249e31f24f881885aae5639b0cd6af4ed298", + "storage_entries": [ + { + "key": "0x19dbc9b4eab95d05b7871c69cdeef24e69dc2a3536f0c6bf169000dc1fdd20e", + "value": "0x42cf44452f" + }, + { + "key": "0x19dbc9b4eab95d05b7871c69cdeef24e69dc2a3536f0c6bf169000dc1fdd20d", + "value": "0x3825fcbd846741be1aa64cccc4d968a9" + }, + { + "key": "0x332df419aa058c3f4b36acbf5af4b7e8e3d4dd58918d5f0ab2841741e7b55c2", + "value": "0x6509095f" + }, + { + "key": "0x3b3a699bb6ef37ff4b9c4e14319c7d8e9c9bdd10ff402d1ebde18c62ae58381", + "value": "0x6392c561fd" + }, + { + "key": "0x1e6f3e4333da349f86a03f030be7f2c76d8266a97c625746ebb9d3220a39d87", + "value": "0xe22be37d71caa09d1" + }, + { + "key": "0x2712b812fff3c2f3b38d4c532c684b5a1800dae9c4a8001c6f855bb520c7c5", + "value": "0xc685c52f8b3b13e834dd6c1ef38" + } + ] + }, + { + "address": "0x5d1ea877c135deda37c55aa05b9fb9ca6d5d86a077f8a9895a269dd60c827d0", + "storage_entries": [ + { + "key": "0xf920571b9f85bdd92a867cfdc73319d0f8836f0e69e06e4c5566b6203f75cc", + "value": "0x309c042d3729173c7f2f91a34f04d8c509c1b292d334679ef1aabf8da0899cc" + }, + { + "key": "0x1ccc09c8a19948e048de7add6929589945e25f22059c7345aaf7837188d8d05", + "value": "0xc74fc4052ee6370c68856e04555e4becb6b4c49a923d654ab22d090209a731" + } + ] + }, + { + "address": "0x6a05844a03bb9e744479e3298f54705a35966ab04140d3d8dd797c1f6dc49d0", + "storage_entries": [ + { + "key": "0x5350bbaed2e5c775f513eaa016d87163780d3161f7df1fc317c2eab49cd62ed", + "value": "0x1" + }, + { + "key": "0x58a811c5ad77c74cf08bfb1dd6f68f0d825b41cc60b1fa566461aaa996327c0", + "value": "0x3" + }, + { + "key": "0x3186fed43d566a7bcd07f65083ab337b0b6c556695b4146d6676fb8ba0fdf33", + "value": "0x200000" + }, + { + "key": "0x1af3d70b811b085a474e106800858ba4988c13a935b5fa0ad914e6bb92fef4", + "value": "0x2001100220044000001100220044000001100220044002000000000" + }, + { + "key": "0xf8616ddc2e26a7d530fa0e85535efe63b0b25f1157305eeee8357c90da4fb3", + "value": "0x1" + } + ] + }, + { + "address": "0x3fe2b97c1fd336e750087d68b9b867997fd64a2661ff3ca5a7c771641e8e7ac", + "storage_entries": [ + { + "key": "0x2b9344ffc09b3bfd715dc285845f90dfcc746fc49a0c817b6cbe532092d90c7", + "value": "0x3d2a" + }, + { + "key": "0x6cbaf8ee62a613b7c0acc6e3c8acc2c6877e054581a419941a3d7c04d04469d", + "value": "0x12bd0b1" + } + ] + }, + { + "address": "0xda114221cb83fa859dbdb4c44beeaa0bb37c7537ad5ae66fe5e0efd20e6eb3", + "storage_entries": [ + { + "key": "0x20c1b0d1bdbb9619de8128bf2e21d42be3e4c0627010a51e3ad06117685472b", + "value": "0x5afe5eded13ebea6" + }, + { + "key": "0x626cd57f7b1ef2ae5d753fb8f7daeeecbb6139215d779d3640e3f0d4faaf856", + "value": "0x0" + }, + { + "key": "0x1727959ffc61af4f1ac7048675a680562826825924160a0fa211500787052a1", + "value": "0x434bdddeaf976f2f360b" + }, + { + "key": "0x48f8225953b5814ef869e07c5031a60c8c45699e7822ff65bb51107d39e7a2f", + "value": "0x2c6080fc5846049f" + }, + { + "key": "0x20a182af61ab40a02d8fd523799be7116ddb218122f1af7a97eaf06fb3c563c", + "value": "0x937575e55e54663e59" + }, + { + "key": "0x26060d61d31da33eeb607f5d1663e02708c4dee77b372f92e830bd58e53382f", + "value": "0x2cfb5ea058e093d" + }, + { + "key": "0x6692ef9068f8189d7de8933d47519a33bdf45e5602cb13adcf9ba702dc73998", + "value": "0x0" + }, + { + "key": "0x3ff74950807efa466579c63e6d97bd1e04fceba6b0132c6ab6498cc93d98a78", + "value": "0xb4e6925601614eb5" + }, + { + "key": "0x2434ebadb0067f67679b11a394311df7eee1bd5b5042de2973d31268dd2eec9", + "value": "0x317d034999b7ee22e1" + }, + { + "key": "0x5962a8d31790f02aa28bdbad4a7acd695032017a2ca9769651d89ca82ea7d73", + "value": "0x0" + }, + { + "key": "0x1d386e0b7275a139cd9861312ad91b0451d2262cf2fc6f822a23c3109427b12", + "value": "0x0" + }, + { + "key": "0x5dc24f22288195e83cb53382e4bd0d035166b4a29c85422270cd9bee19f2e9c", + "value": "0x2181ea0cdd1d2c148f41" + }, + { + "key": "0x28424ab1e5a1b72ef45e34ef9d955931e0721623afc53bb09edaac96b5bb54d", + "value": "0x3a69de0ac1d8a53b8127" + }, + { + "key": "0x267ed491a3c5edee79deba58b2a6c9b479548b5611a0abad94fbbfa1382acb3", + "value": "0x452aef7800b55f33de" + }, + { + "key": "0x342708c8af0293dd3d2f3f82a6532a327eb9680542f0779ef21bcb9db83c896", + "value": "0x90cbaf7a6408a331a62" + }, + { + "key": "0x1809b1d86c33d5ea2158d5358d8b525b6ba26a842b4b9737d2b159c3db70e7f", + "value": "0x1333d555e680487f4" + }, + { + "key": "0x7feeda11add29e849906193e5f532be0d7e966c0f824a123c4e5d2ac56d6c72", + "value": "0x36439d36257deb57" + }, + { + "key": "0x5fd36391c29476d20d2b2d89c6fbc5603ba4e1bcbbdcb3ffb7b28e924a9b049", + "value": "0x0" + }, + { + "key": "0x134baede4718349f03381eb58ade4d2a2b29845f335bd80eabcfe0fa26e3b98", + "value": "0x169ad500c8f21805" + }, + { + "key": "0x2de7ac669936cc3b4e9784ff23826dc9056c74d54d3f41f1b0d28b36966369e", + "value": "0x16360204b48d7098cc79" + }, + { + "key": "0x3bd0a232d9aad2407320377e94c1b3da70aa82ba22e5bd5f3d439018e58d3c8", + "value": "0xe1f40d993d228b20" + }, + { + "key": "0x66917995e581ab132d87b79b446118e4c6a9e96c2a13049bab9b743213e23b3", + "value": "0x0" + }, + { + "key": "0x48bc77d23694a42ec3dbde485164a09a7ffebd2cc6cac3d158c1087545560f", + "value": "0x18dee6cf7d14061022fe" + }, + { + "key": "0x3b1a93e68c62c7aac3b3499bbc779dc3a27d542530e361ce8d77a52e28a0d38", + "value": "0x0" + }, + { + "key": "0x5e3d70329a243fd54aa12e338bb8c7ca72d6c4b9e8cc7738488b6f8e702255b", + "value": "0xebde4999ccb4166" + } + ] + }, + { + "address": "0x249f6a22da8d928a975f9f5834faa2acea7b78eb3f9db18b2be9cc5f239a56", + "storage_entries": [ + { + "key": "0xdeb535c18c50db2297b3febff490af42a972af00185705355db663271fde1b", + "value": "0x71afd498d0000" + }, + { + "key": "0x110e2f729c9c2b988559994a3daccd838cf52faf88e18101373e67dd061455a", + "value": "0x4373691de6338000" + } + ] + }, + { + "address": "0x4c0a5193d58f74fbace4b74dcf65481e734ed1714121bdc571da345540efa05", + "storage_entries": [ + { + "key": "0x5635ec61c70e8897f7e6d93793eb811da2ffff97ecf5c5a82cca63dace01201", + "value": "0x151" + }, + { + "key": "0x15747a46069346d90141609543b95da3a3c8a6183b04b6ab8b577ca202d0126", + "value": "0x0" + }, + { + "key": "0x6859ec11c0b9cc8be469175ab187f34272e67a87b44e67d28a77decc688870d", + "value": "0x670daac3e" + }, + { + "key": "0x3f4bb10a68f4e591ee94e94546ce408da0dc22eb52f265ffdf1fb1923723036", + "value": "0x6509095f" + }, + { + "key": "0x2d31c55b6083286b4807bb1860f2dcac2846618422022a778fcaec2fdd97480", + "value": "0x1" + }, + { + "key": "0x48debd70ae9d943ab4f84d69ab1e7980db8e11bd0ba9c6a17f10403db1c513a", + "value": "0x1e692dac502aa92afac598" + }, + { + "key": "0x3f4bb10a68f4e591ee94e94546ce408da0dc22eb52f265ffdf1fb1923723038", + "value": "0x33f199b4d54f4231496476e" + }, + { + "key": "0x5a8b6210538e8f727dd3461bc944adca665c90d1e32d1c4490166a807736e63", + "value": "0x1" + }, + { + "key": "0x1c872221e7c3919f427e7039c18d634fa2ff516f539c5a72776d82418ffa13", + "value": "0xf3ae16a1be" + }, + { + "key": "0x1c872221e7c3919f427e7039c18d634fa2ff516f539c5a72776d82418ffa11", + "value": "0x1d1d792716126a8e2e507a" + }, + { + "key": "0x1a301a1b492f2dfb83d6cf060793df802fb882b06465ac3afe96556ed873ab0", + "value": "0x89b9c1f30e22b25" + }, + { + "key": "0x48debd70ae9d943ab4f84d69ab1e7980db8e11bd0ba9c6a17f10403db1c5137", + "value": "0x3457e1f04d0003e08b5ec0e" + }, + { + "key": "0x48debd70ae9d943ab4f84d69ab1e7980db8e11bd0ba9c6a17f10403db1c5136", + "value": "0x6509095f" + }, + { + "key": "0x23649aa29c91fa0c06951a97713069363f5cf05d86a3400d6d0ef5f344f240b", + "value": "0xc" + }, + { + "key": "0x76507800084b5549df2b7dc4b2852e4cf217c5227259cb0ab52d541662ff49c", + "value": "0x1" + }, + { + "key": "0x3f4bb10a68f4e591ee94e94546ce408da0dc22eb52f265ffdf1fb1923723039", + "value": "0x2f946000605bb7d437629" + }, + { + "key": "0x52e76cad75d24a019190b75f2d94e4313f9f92cfb1dbcfe62c863faa2dca828", + "value": "0x134e0c10552d2a3f9302" + }, + { + "key": "0x52e76cad75d24a019190b75f2d94e4313f9f92cfb1dbcfe62c863faa2dca825", + "value": "0x3521b1c1314281fa05e311c" + }, + { + "key": "0x1c872221e7c3919f427e7039c18d634fa2ff516f539c5a72776d82418ffa10", + "value": "0x346ea33db57a48297898293" + }, + { + "key": "0x4db46e30bcb155ece6ae2e194ac51678ffe1e125bf962521f8543dfc6cd9b5d", + "value": "0xae45f4" + }, + { + "key": "0x7bfaef3bb7ce24e7c55cc6f9b17c4849263353e074fa60667d32c132d1fda23", + "value": "0x9" + }, + { + "key": "0x3f4bb10a68f4e591ee94e94546ce408da0dc22eb52f265ffdf1fb192372303a", + "value": "0x11664b152db3472a9ff4fa" + }, + { + "key": "0xeebcc3a7804cb778280e0bb48163294876a44cbb1a12372236ece212c03c2b", + "value": "0x434d6c2a7ac4217dd0" + }, + { + "key": "0x52e76cad75d24a019190b75f2d94e4313f9f92cfb1dbcfe62c863faa2dca826", + "value": "0x1381812cb144c3ef6f2da2" + }, + { + "key": "0x1c872221e7c3919f427e7039c18d634fa2ff516f539c5a72776d82418ffa0e", + "value": "0x6509095f" + }, + { + "key": "0x5fd1e6b692a1f055be577b88f9e2f5c506dc19e9d4474dbfb7f077551d85a6d", + "value": "0x9" + }, + { + "key": "0x7eee8125f49c32011e4edbb40cf0808b21b266c9e7234d91f32457bfbe89f60", + "value": "0x2e63e43b9d2" + }, + { + "key": "0x3f4bb10a68f4e591ee94e94546ce408da0dc22eb52f265ffdf1fb192372303b", + "value": "0x200789447016da6746" + }, + { + "key": "0x3f4bb10a68f4e591ee94e94546ce408da0dc22eb52f265ffdf1fb1923723037", + "value": "0x33b8cf539afbfec37a91dc8" + }, + { + "key": "0x4e21fb2bf3f45d2e78cf144a1d050df1fe73962b268ff4286025c63c0fd8e4f", + "value": "0x4" + }, + { + "key": "0x7d815a2f092d7a65fc770e2a6047c22c3fe703e8f20b81322460b401c9a82ca", + "value": "0x1" + }, + { + "key": "0x48debd70ae9d943ab4f84d69ab1e7980db8e11bd0ba9c6a17f10403db1c5139", + "value": "0x1927e73db01d46c1f5f8a5" + }, + { + "key": "0x48debd70ae9d943ab4f84d69ab1e7980db8e11bd0ba9c6a17f10403db1c5138", + "value": "0x349fb7a13608adc8f31f8a8" + }, + { + "key": "0x74fd31a23327e5ca0628d8c1c917967dde831cf6cbea1d28ed110e9be73415", + "value": "0x286f34d9" + }, + { + "key": "0x233e35bc7092c2404d3292ec8986d873192460ed0f0e984d73efd02d9c78a48", + "value": "0x3" + }, + { + "key": "0x52e76cad75d24a019190b75f2d94e4313f9f92cfb1dbcfe62c863faa2dca827", + "value": "0x1c673ae42d822e5e63aa2a" + }, + { + "key": "0x1a42ad5ac776d83bda83005392af441ee5a957173cd2bc8a632d4d585c8b585", + "value": "0x209" + }, + { + "key": "0x52e76cad75d24a019190b75f2d94e4313f9f92cfb1dbcfe62c863faa2dca824", + "value": "0x34aff2284992de6f8e7dfd0" + }, + { + "key": "0x52e76cad75d24a019190b75f2d94e4313f9f92cfb1dbcfe62c863faa2dca823", + "value": "0x6509095f" + }, + { + "key": "0x11f81db73b6613735c00cc426f5b6b86448e70f14c544730b046a109595859", + "value": "0x145" + }, + { + "key": "0x1c872221e7c3919f427e7039c18d634fa2ff516f539c5a72776d82418ffa0f", + "value": "0x342ed11886317f5d2929196" + }, + { + "key": "0x1c872221e7c3919f427e7039c18d634fa2ff516f539c5a72776d82418ffa12", + "value": "0x20b773abc18dc7cb81b355" + } + ] + }, + { + "address": "0x408f08dd87750f5218c029563db17cbcde313ff44c7d01d15be3cc9d5af60bf", + "storage_entries": [ + { + "key": "0x1ccc09c8a19948e048de7add6929589945e25f22059c7345aaf7837188d8d05", + "value": "0x5a6421176acfead29981fb12486a2e48df3dbaf1613ba53d53a057242c4856a" + }, + { + "key": "0xf920571b9f85bdd92a867cfdc73319d0f8836f0e69e06e4c5566b6203f75cc", + "value": "0x309c042d3729173c7f2f91a34f04d8c509c1b292d334679ef1aabf8da0899cc" + } + ] + }, + { + "address": "0x30615bec9c1506bfac97d9dbd3c546307987d467a7f95d5533c2e861eb81f3f", + "storage_entries": [ + { + "key": "0x7df487a369eb490d3ce0edce44d207d633058f4726221419f16d2ed25ef69a7", + "value": "0x8d75fdd04aa" + }, + { + "key": "0x5fbd4be969f5807b2ade6aed315cda0728ab8098bcb7dd0aa948a1d2edb0e75", + "value": "0x12e1d118094d6f12759" + }, + { + "key": "0x773fa9f4d2f7c3d7d4a2247b1cb67e3091a53d024ad91fbba9b1996e6ed0463", + "value": "0x42828a0b16" + }, + { + "key": "0x2c095994ab24c079511f4f4c771bb47fe3f97f400a638ee83878309d1ea31cd", + "value": "0x12e1d118094d6f12759" + }, + { + "key": "0x3cdef5d80c6ad04af135e445867114b5ce32ed8dc8de667995f3d27760e3520", + "value": "0xf00fe46e88" + }, + { + "key": "0x3e65716c9b9f010d10085941d0c6e6dfb190695b7cf09a71f0aca74ab94cdf", + "value": "0x1de940d98bcdfe23" + }, + { + "key": "0x597eac3b42ecb51c303520e05217f6550e7cb37ccfc0a1fe931184d438e6d3f", + "value": "0x406ec7082b" + }, + { + "key": "0x4e9417c05bcf183e111558ce4666b053bbfe9736b74fba16b017ab7ae075f1", + "value": "0x221eb4e3b2e4c4298f" + }, + { + "key": "0x25d9306a3dd51d4276fa92f67bcbd66be9d76c61120929a3ca417a0ac223785", + "value": "0x12e1d118094d6f12759" + }, + { + "key": "0x55cfa0d6954e4ab7a93f16a49b5ac2e36b4d90d9d675f2b23566f3f7dd4abbb", + "value": "0x8d75fdd04aa" + }, + { + "key": "0x24dc99466e4418b4fccd818c369e805aa4b2c2e28731ca51ec24311cfb85a69", + "value": "0x40d95df3f37ced441367891" + }, + { + "key": "0xf1ec356adea149fcc8824a2b8712d81d1df416b0f8f8ac32931c66d5f80501", + "value": "0x8d75fdd04aa" + }, + { + "key": "0x110e2f729c9c2b988559994a3daccd838cf52faf88e18101373e67dd061455a", + "value": "0x5a80e2a014c73e" + }, + { + "key": "0x2e3f9cadd00a7b869d6b98db5d32847ff18a5561c3f3f7a944380864c8f247b", + "value": "0x6509095f" + } + ] + }, + { + "address": "0x6ac597f8116f886fa1c97a23fa4e08299975ecaf6b598873ca6792b9bbfb678", + "storage_entries": [ + { + "key": "0x678836f7279a32f701ec9a345d49c040487c59eef4a53c70cec33dec96c950b", + "value": "0x1" + }, + { + "key": "0x48446553630d18ce593636c20a57f733ad9dd5c0fa7cbc43908480ba655c022", + "value": "0x44afd1" + }, + { + "key": "0x5f844b7a58a2baa20a8a87b277f4d84e6caf288023c310735000f5321c92873", + "value": "0x6573d2df" + }, + { + "key": "0x3fba4728ecb97a2e433014ce97e0125a361938e90369ba132f4472e01ca0052", + "value": "0x2e2ade3e622" + }, + { + "key": "0x2bdc35d4070e4262b6fb41b96655a8be336dddb222348fc877673f3c3b4d311", + "value": "0x6573d2df" + }, + { + "key": "0x5f844b7a58a2baa20a8a87b277f4d84e6caf288023c310735000f5321c92874", + "value": "0x1" + }, + { + "key": "0x5f844b7a58a2baa20a8a87b277f4d84e6caf288023c310735000f5321c92872", + "value": "0x519b85c7331ac2aeb4cade1f2222404a174a8e0b3ee747169c66e2f40bee99" + }, + { + "key": "0x23b221ddaa6e54dd1734a606bfea105946986f032fa39f16c73bcbd788d4248", + "value": "0x7d669ff910" + }, + { + "key": "0x6c48e2a85c15d8e0c2c3844838a72196f665b5708b4094ed2587dfb55589d4c", + "value": "0x385020dfa38ee8a559cab4ca42e1ac64908c2e35bf2e2b2cf207beefa4f37ff" + }, + { + "key": "0x6c48e2a85c15d8e0c2c3844838a72196f665b5708b4094ed2587dfb55589d4a", + "value": "0xab052cba5e" + }, + { + "key": "0x13c9cf8da023f523734ee524d6dd4f8e9ccf8d1159f1b444815ce089cf7b198", + "value": "0x1083b5c249" + }, + { + "key": "0x5709042f5b0075f00934694d58f4576e1d9d9d3a2574a59f97b6687407fbd4f", + "value": "0x6573d2df" + }, + { + "key": "0x260b06ba0fa1768166a51296315830f27d997b25c8808bc57d3a8c5452adf2e", + "value": "0x48d52ce36d" + }, + { + "key": "0x2bdc35d4070e4262b6fb41b96655a8be336dddb222348fc877673f3c3b4d312", + "value": "0x1" + }, + { + "key": "0x5709042f5b0075f00934694d58f4576e1d9d9d3a2574a59f97b6687407fbd4e", + "value": "0x47d5788081f93242204357c1d893138ab1065293e9278eb63abfb030f3e2c5f" + }, + { + "key": "0x5709042f5b0075f00934694d58f4576e1d9d9d3a2574a59f97b6687407fbd4c", + "value": "0xcd2307dfb9" + }, + { + "key": "0x5f844b7a58a2baa20a8a87b277f4d84e6caf288023c310735000f5321c92870", + "value": "0xbbf174c023" + }, + { + "key": "0x23b221ddaa6e54dd1734a606bfea105946986f032fa39f16c73bcbd788d424c", + "value": "0x1" + }, + { + "key": "0x260b06ba0fa1768166a51296315830f27d997b25c8808bc57d3a8c5452adf31", + "value": "0x6573d2df" + }, + { + "key": "0x678836f7279a32f701ec9a345d49c040487c59eef4a53c70cec33dec96c9507", + "value": "0x7386b030d1" + }, + { + "key": "0x2bdc35d4070e4262b6fb41b96655a8be336dddb222348fc877673f3c3b4d30e", + "value": "0x467030d0cd" + }, + { + "key": "0x2e6c5857ad5f9537794e7d3ed13f52ed0810d89670321a7c30b9e3ea13ce4e", + "value": "0x24cfd4ab214" + }, + { + "key": "0x7e7a3c9d053aceaf886bc5b1a196979f3f761f4374873b3bf06105034028980", + "value": "0x640d70ab" + }, + { + "key": "0x6c48e2a85c15d8e0c2c3844838a72196f665b5708b4094ed2587dfb55589d4e", + "value": "0x1" + }, + { + "key": "0x6c48e2a85c15d8e0c2c3844838a72196f665b5708b4094ed2587dfb55589d4d", + "value": "0x6573d2df" + }, + { + "key": "0x678836f7279a32f701ec9a345d49c040487c59eef4a53c70cec33dec96c950a", + "value": "0x6573d2df" + }, + { + "key": "0x5709042f5b0075f00934694d58f4576e1d9d9d3a2574a59f97b6687407fbd50", + "value": "0x1" + }, + { + "key": "0x260b06ba0fa1768166a51296315830f27d997b25c8808bc57d3a8c5452adf32", + "value": "0x1" + }, + { + "key": "0x678836f7279a32f701ec9a345d49c040487c59eef4a53c70cec33dec96c9509", + "value": "0x55a1279f91ea6b4fdcc28038eff829eb58228b888ce5236cdeea0a624fa0ea1" + }, + { + "key": "0x23b221ddaa6e54dd1734a606bfea105946986f032fa39f16c73bcbd788d424b", + "value": "0x6573d2df" + }, + { + "key": "0x260b06ba0fa1768166a51296315830f27d997b25c8808bc57d3a8c5452adf30", + "value": "0x207a638e512242596e6d7d8f24f906548ee17812ca76c41aa2e1fd842cdb9bf" + }, + { + "key": "0x14841a5a11351608327939e0c19cad291f9c901d51946f5ce50b176645efb21", + "value": "0x763bf970" + }, + { + "key": "0x2bdc35d4070e4262b6fb41b96655a8be336dddb222348fc877673f3c3b4d310", + "value": "0x575e2f0650aaf9964cf0da778dd40b7487f6f14189c761118b40e81e21a2cff" + }, + { + "key": "0x23b221ddaa6e54dd1734a606bfea105946986f032fa39f16c73bcbd788d424a", + "value": "0x5197a6af3f299cf77c9ed5d814fcd5ffc7b807265333c903b1f99286f9ca01d" + } + ] + }, + { + "address": "0x4b1b3fdf34d00288a7956e6342fb366a1510a9387d321c87f3301d990ac19d4", + "storage_entries": [ + { + "key": "0x47bcafe13fc507313e106336239a4b5d33005032d0aea63473e56568590e36c", + "value": "0x1" + }, + { + "key": "0x1832133ca68c7af4bd8e1be1b8ea8db866a255b1cae06a9bc8969af06bf4129", + "value": "0x1" + } + ] + }, + { + "address": "0x76dbabc4293db346b0a56b29b6ea9fe18e93742c73f12348c8747ecfc1050aa", + "storage_entries": [ + { + "key": "0x61b2233a468207458e65de7cbdf7e03ad3403cb3f0f70ee34d8a515a8f582fa", + "value": "0x7d3cc9bddcfe27b48" + }, + { + "key": "0x6de8218650e95ebf0c8a3a2e1c983a8670d12da42e6ba7db187e5d136dcf95f", + "value": "0x1ce1ce73e62ab8039" + }, + { + "key": "0x73bc2d23d3e894bbd512ad38772573f7de247e7491f0ece42aabff721f768cf", + "value": "0x1f3e1882fa8965c69" + }, + { + "key": "0x17894ca9ec109d388d8a78bceccac1dc83c24a4e692e0270f29d7b6a64ea161", + "value": "0x42dc4bc278ae1000" + } + ] + }, + { + "address": "0x4848d0dd8a296352ba4fe100fed9d6f44cbd0a8d360b7d551d986732a14791a", + "storage_entries": [ + { + "key": "0x2dc2930796ed0d1dc0f8f1392dd08bc982787926ce9e90d3762ad7514705a59", + "value": "0x5b681e69d55dec63fd9c025473f017e9b66e0037faf7d864b5333540012ecdf" + } + ] + }, + { + "address": "0x53c91253bc9682c04929ca02ed00b3e423f6710d2ee7e0d5ebb06f3ecf368a8", + "storage_entries": [ + { + "key": "0x4a93ee107891028d67918cf171605b918288ce306aa9e861785cc482eaa75b", + "value": "0x27e48" + }, + { + "key": "0x4445c2abe8771f416adfc196ac8d500177b4a7041c701a8c7e1af5e45723574", + "value": "0xffffffffffffffffffffffffff3ceb47" + }, + { + "key": "0x79d9c4c8571265c53e983218cdddfcb9ca42ef0e203f38e9990e3a455cfd302", + "value": "0x33dc" + }, + { + "key": "0x5fdf971868bba85dfd60a725d142bc82a991fbec1947c31b85925597d9b9bb9", + "value": "0x0" + }, + { + "key": "0x1c0d06bd7060fec0ae69b82cb9dbed198512b21e28f74090aed0092ad8497f1", + "value": "0x3f521d3d2ed" + }, + { + "key": "0x43e1ef374bc5f9e49c6c9764a9aac6e36bc8e3df0ca3bffb3cde5a0990ca369", + "value": "0x3fdaf23ca8" + }, + { + "key": "0x166130563ae6ab94d9e00b8fd4ae5d1bf585092a1600061a74a3d5954d08be5", + "value": "0xea4c0" + }, + { + "key": "0x5e98ed6b9a59c7e19369a1be15a79aae7940ddbb45689648aa4aa85277253b", + "value": "0x15dae0d" + }, + { + "key": "0x496d7267d8a8ec7097e4eedb6e9c3913912a0bb22f77d302b051e6e573637ee", + "value": "0xf00fe46e88" + }, + { + "key": "0x3d0db130480a59c191f40585647196c048231a1e5077ba26dcb9d7bde15234e", + "value": "0x6884aef5d" + }, + { + "key": "0x1526497a520f4b5ca79f5d031ff4fa4142801f9b0fbfbdbb55cf7ba951e56e0", + "value": "0x17dac61" + }, + { + "key": "0x597eac3b42ecb51c303520e05217f6550e7cb37ccfc0a1fe931184d438e6d3f", + "value": "0x1" + }, + { + "key": "0x2b37b0d90d6730cde7ea32367bab601df6c01a0c6ce3b0a8c44af134995e210", + "value": "0x248a33a" + }, + { + "key": "0x5797885c2725f592c5504f676e254c5d2564e03ae0e44af30a9b400d2626845", + "value": "0x78687536" + }, + { + "key": "0x369f752ab77bae83965a4441870ca03b17b3dc6aa8161e867211a69fd081c51", + "value": "0xb0a3e5" + }, + { + "key": "0x6c0e497c7778d73ca13170223e09b4b0f91820504b75211c07fc57365ffc52f", + "value": "0x63a133" + }, + { + "key": "0x2c6705dcc5ac75d87473b218701d811d6731e1863067927cc311120b16a28a5", + "value": "0x54d6" + }, + { + "key": "0x6b4d3b3ed62ab015998321fb07d993cba9935b0e67aedbd0b522bb6a5a6b905", + "value": "0x0" + }, + { + "key": "0x49a8ef79cab313360767015d427d0307368eff5c2c81b019aff018ec638eef2", + "value": "0x300611a140b" + }, + { + "key": "0x332cecccb4c630fe3d6a7510a783cb8ce0f2768addd456e9767eb5df0b71797", + "value": "0x0" + }, + { + "key": "0x35be9549b4cfd2bb0c0796f34a923e01aca6f5365a46430fb9a37b6f920db5d", + "value": "0x207b" + }, + { + "key": "0x1ac24a7b768a9aa561b0e38c32a9ea35e909d2cac583b69cb68aca28b72aa3c", + "value": "0x65142b6" + }, + { + "key": "0x6fd7e93d009f1501741ae3106190c636e4e15283f16727fa0ce1fe3185a7e26", + "value": "0x3188345ec" + }, + { + "key": "0x487ad12990c3190ca0323d098b22ef952be71247599415175070dec08095002", + "value": "0x312b" + }, + { + "key": "0x1616c2861603ece945a82de03e5ebbb40762a796b12e835c2267de3cff94952", + "value": "0x357f23e6" + }, + { + "key": "0x3f9c8cfe69ed75925719e1ad4d7921a04781878fafee018d302532aacfcd06b", + "value": "0x28820e2" + }, + { + "key": "0x25e1cc4f1f3ce9af20c71e0fb29e4086b6fd7e9401766999dcfb92e348eeb7a", + "value": "0x3e82e8" + }, + { + "key": "0x4aa2885ee95e2eaf83fcdaa59539ef9301372e916bc2419274d92a453c2b422", + "value": "0x1c23ca4cc35" + }, + { + "key": "0x3c510986699890a63f2eefa4a5e1aabe05133761a36bb2774508a6f074a0627", + "value": "0x0" + }, + { + "key": "0x5aaf48b5e4ca2b8274ee5586e47bdafcc6a279415d9a3e3cfb9c869bb397788", + "value": "0x5ae7" + }, + { + "key": "0x75f7d9b2864838d29901b96b6b260b8cb80ed75091da0e7011b5a131ada1d53", + "value": "0x7c6661" + }, + { + "key": "0x53645920eac20936201dccb4f32c86871e405050f7ff1d66cd4244780ea0989", + "value": "0x2bd55" + }, + { + "key": "0x7e745be538f073367d61bddae88e1ef145c8b4c1cf194f95ef33cee6b3ca0db", + "value": "0x1265bee" + }, + { + "key": "0x43f863fbfec515e09baf07ce0460de605f678a1561a44e0bfa821525f5c7d0d", + "value": "0xf7c1bb" + }, + { + "key": "0x3e6b0989e98a92870d8adc93c47b66012be07d88c18215ede84003f41bd5a8b", + "value": "0x1f224d9" + }, + { + "key": "0x3d37bf28dcf87abc1c3472ec18467db45f4b69ed1d1d23439c86d3e56dbbfbd", + "value": "0x565eeab0d2" + }, + { + "key": "0x1c443ec48b88be24b5ab373438471bc6979d6682b529104ef12bf02b92a1b67", + "value": "0x86e6704" + }, + { + "key": "0x5728f65f1dbccbdad8e117e873d17f8488099785f379c6dfb4ec3da2176d372", + "value": "0x21dc641" + }, + { + "key": "0x5be2cbba5dc6102944391bf26c251a361cd9616eae67b1ffab1673391edfd01", + "value": "0xfce84e" + }, + { + "key": "0x1d46e593c07d148fdf2f391245884f108ae66890feb8a9947214ef60c9a1090", + "value": "0x152b4" + }, + { + "key": "0x3713bab4467fdf657069badcb2d75f21c64f43f2e011c9d32255678d94b7eed", + "value": "0x1e91fecdcf" + }, + { + "key": "0x6c6417fd35a3c55106a25adc610b49c90b3e3b028dd80757074ac8696b71aa5", + "value": "0x2a886330" + }, + { + "key": "0x5f3ce98ce02ae19b9942132c6ae704316c799119602cbf7677952ea37f3e5a1", + "value": "0x797a1" + }, + { + "key": "0xc2a038868252b31ec07bfc9482312828a0f35201f4c6a3002be2e11923a423", + "value": "0xbe68a3" + }, + { + "key": "0x51449a3d9b9b9e3f79123bedfc512feb297d98e9ba80aa8f03bfca471ec386a", + "value": "0x989680" + }, + { + "key": "0x622de76fde18c4ad7b9b4a4afb34709868be06146472b53cbe2f74c91f0a001", + "value": "0xfb420ce" + }, + { + "key": "0x773fa9f4d2f7c3d7d4a2247b1cb67e3091a53d024ad91fbba9b1996e6ed0463", + "value": "0x0" + }, + { + "key": "0x6430116fe34e45414893a9e23c18f185d42c6e5b8b8c8c083bd5bbe4eb94e49", + "value": "0x24c04d2041" + } + ] + }, + { + "address": "0x61281febf3f4c4a37fd701e9a7d55751bc33fcc58e881e62a9b7addaa04a7f3", + "storage_entries": [ + { + "key": "0x1ccc09c8a19948e048de7add6929589945e25f22059c7345aaf7837188d8d05", + "value": "0x7b62090f7313d29dbe4110762ddaced7dcf538c5d5c8f78799be7b4f296e82f" + } + ] + }, + { + "address": "0x7606cac9053e9b8b573a4b0a0ce608880f64869e24b8a605210d7a85bb6e5f1", + "storage_entries": [ + { + "key": "0x36c480a44179ef472d737ccdb7d3f4f88ec37ae2a26145b0be60d2fae8c96aa", + "value": "0x1" + } + ] + }, + { + "address": "0xf0f5b3eed258344152e1f17baf84a2e1b621cd754b625bec169e8595aea767", + "storage_entries": [ + { + "key": "0x3b3a699bb6ef37ff4b9c4e14319c7d8e9c9bdd10ff402d1ebde18c62ae58381", + "value": "0x1b6ddbfcf7" + }, + { + "key": "0x1e6f3e4333da349f86a03f030be7f2c76d8266a97c625746ebb9d3220a39d87", + "value": "0x18dee6cf7d14061022fe" + }, + { + "key": "0x57c60b189063035eed65879a14ad5f6e718027a212dafbe52f9bcd79e9f4fa", + "value": "0x15d9d087b69229b1a" + }, + { + "key": "0x3351bce4793f90e4aa00447357c2d34ac08611756193d8249009e0396dd7b41", + "value": "0x6509095f" + } + ] + }, + { + "address": "0x68f5c6a61780768455de69077e07e89787839bf8166decfbf92b645209c0fb8", + "storage_entries": [ + { + "key": "0x764d355edc54321dfe2f543f7a36ea87d28287c34cfc1d7d2c7adc58294fe80", + "value": "0x1a53eea" + }, + { + "key": "0x5aaf48b5e4ca2b8274ee5586e47bdafcc6a279415d9a3e3cfb9c869bb397788", + "value": "0x15a4a10" + }, + { + "key": "0x5aeab87da2ea3824a350b316078eb7525d3eced8159ee58f0afefc06cf165ed", + "value": "0x1bec" + }, + { + "key": "0x41ab16fd8e86aa7721e204c45791a31bda0d9b96fbc68393fe1879b1819a511", + "value": "0x10bcec2f7" + }, + { + "key": "0x510c664db84ee917626c9a54fc14d86c3f1ac58176a20b04944d035a87fd0c7", + "value": "0x6392c561fd" + }, + { + "key": "0x25509252f18c5fd4d47feb32272c38aa4f727ade1b51e3b5376fe8dd53c3cbb", + "value": "0xd68bef" + }, + { + "key": "0x30145392e0879ca5c4dce72e875b6cb79c4be4add3d50b90b06d1de776fc9ba", + "value": "0x78cac02" + }, + { + "key": "0x166130563ae6ab94d9e00b8fd4ae5d1bf585092a1600061a74a3d5954d08be5", + "value": "0x992137" + }, + { + "key": "0x36edf716fee368dc5b1d513a03aa8ec659a4c117199936849897f205f2d907e", + "value": "0x993ce7" + }, + { + "key": "0x5fad7613fd327fc13290b4c80dcb56b41035cff52310cc2f9e1d7de286fcff1", + "value": "0xf181da12c7" + }, + { + "key": "0x43c91473256328ffe6e6c34a16fcee5395bc63d2797f64f6e4aa7a357195b2b", + "value": "0x1b2c38" + }, + { + "key": "0x7bcd382428d0a60441bc6420ec5dbff0ef13baad699c7b06a5c9ccab40feab6", + "value": "0x19aaabc" + }, + { + "key": "0x39a007943ea45f7c9f73fe13cf9eee26e5844828ae7c191ff4f08906f64f951", + "value": "0x5ee09c1" + }, + { + "key": "0x1bdceb369d2d39e055c22db25800d6aa51d526f3ea4be22a5e5af43857e2280", + "value": "0xc2f647" + }, + { + "key": "0xb6980fbfd6243019e03c00f3074a127dc9c7f7b763341a1c0b7ee968fdcb43", + "value": "0x1474a4" + }, + { + "key": "0x3f9c8cfe69ed75925719e1ad4d7921a04781878fafee018d302532aacfcd06b", + "value": "0x0" + }, + { + "key": "0x7301c4f90fe6606a2004bcb07c21d86b05b0f9f9983c0abfec1053848f8f2b1", + "value": "0x6827" + }, + { + "key": "0x5fdd31370faf3464a14c84d816f9822685e72b364232e0b85d015e937e4ff18", + "value": "0x11782" + }, + { + "key": "0x49a8ef79cab313360767015d427d0307368eff5c2c81b019aff018ec638eef2", + "value": "0x1140a127fea" + }, + { + "key": "0x1a231342ccc9ed6b68a70936632b64f66d81fd6a08064f00f0253f4f6ca492d", + "value": "0x1e1ca4" + }, + { + "key": "0x26fe2b53c7313db918f770b466b0916590973618203ba2cd4871944566797e0", + "value": "0x1b6ddbfcf7" + }, + { + "key": "0x3713bab4467fdf657069badcb2d75f21c64f43f2e011c9d32255678d94b7eed", + "value": "0xe9fb23876" + }, + { + "key": "0x63ecb374177ad3aaa28dab33d7c69176d788db559cbe6fb54c5324038de2438", + "value": "0x0" + }, + { + "key": "0x39a3200e942ffc3f7ce9f031920458f516b20bfa82d18acee616a1e8ce9c846", + "value": "0x18dec5" + }, + { + "key": "0x62f560b58cc9849d6286cb988c471dc0450eba7255a4247208c9af87ac54f0", + "value": "0x3fdf" + }, + { + "key": "0x71c196421272ec4fa87fb657064d3d2b74538f0b8b8644f90d0d7c944983b9a", + "value": "0x1751517" + }, + { + "key": "0x3d37bf28dcf87abc1c3472ec18467db45f4b69ed1d1d23439c86d3e56dbbfbd", + "value": "0x56417b8a5f" + }, + { + "key": "0x6edded4efb159b71fb1701ffb016a4a4ce076ff5cd4b6eec20c504b5fdace5e", + "value": "0x1ae39b" + }, + { + "key": "0x1ac24a7b768a9aa561b0e38c32a9ea35e909d2cac583b69cb68aca28b72aa3c", + "value": "0x3dcfed8" + }, + { + "key": "0x5a32563cea8e2291fa594391a65ab56442f11999ca867d48b1851c71a2c5e84", + "value": "0x118deff9" + }, + { + "key": "0x18fed7834ee967311911d57deea47a37a48556305a110ea6863b6d38d5f9678", + "value": "0x40a7" + }, + { + "key": "0x144fb6d7f48cd1daa2f3d0a93b3e0048a8e1f7394caf134818ae57f7150e396", + "value": "0x1bec" + }, + { + "key": "0x52c876c2cfd7abac1ceaa34278a31a2dcdc73753fa6e9e3081ab2470038b2b8", + "value": "0xf8c7f6" + }, + { + "key": "0x43f863fbfec515e09baf07ce0460de605f678a1561a44e0bfa821525f5c7d0d", + "value": "0x11782" + } + ] + }, + { + "address": "0x10884171baf1914edc28d7afb619b40a4051cfae78a094a55d230f19e944a28", + "storage_entries": [ + { + "key": "0x7c679b59d4a3e95d904c93ba8ab33a18bfc774680e69105d4cef5798c143185", + "value": "0x13816bf332" + }, + { + "key": "0xb61ad1b0cce680166d9ae08293663dd76ee32f60afcffb51a601414abe03e6", + "value": "0x65f3b07f04a4769da" + }, + { + "key": "0x5d2fd44e5fc99262e4e3933de973a776fa7737d0bffbba63567324b6bdae8a4", + "value": "0x58d21ce8e4" + }, + { + "key": "0x2487f67598912d31ab84d8fa97c9e78332d00795ecdad092ea09f9c9c14a9a3", + "value": "0x292ae10bf75" + }, + { + "key": "0x2487f67598912d31ab84d8fa97c9e78332d00795ecdad092ea09f9c9c14a9a0", + "value": "0x5dc53fb9905d57b23d" + }, + { + "key": "0x7c679b59d4a3e95d904c93ba8ab33a18bfc774680e69105d4cef5798c143182", + "value": "0x11bd6cb2a682aea860fd" + }, + { + "key": "0xb61ad1b0cce680166d9ae08293663dd76ee32f60afcffb51a601414abe03e3", + "value": "0x28ac71581b55f693202a" + }, + { + "key": "0x4ad5399a6c5b6103e5ad130e0430f02556c7cffc406625fbcbcea4e612b0ac7", + "value": "0xbb37f563b2" + }, + { + "key": "0x4ad5399a6c5b6103e5ad130e0430f02556c7cffc406625fbcbcea4e612b0ac4", + "value": "0x1aa9a6857f2f9dc62a" + }, + { + "key": "0x5d2fd44e5fc99262e4e3933de973a776fa7737d0bffbba63567324b6bdae8a1", + "value": "0x58a63870ed" + } + ] + }, + { + "address": "0x1", + "storage_entries": [ + { + "key": "0x3a58a", + "value": "0x6d504e77964ac443c7ed2b69691239be18f2477c6d76505a3fd9e59c1205cb" + } + ] + }, + { + "address": "0x124aeb495b947201f5fac96fd1138e326ad86195b98df6dec9009158a533b49", + "storage_entries": [ + { + "key": "0xf174f7bd91106ca66d6e4d6a9bc24635ec61030f04b1a992cf5124c25784d5", + "value": "0xae1244878b06599c34" + }, + { + "key": "0x75b8f1368b0555219710be5471aec1d43a370115ab7039abf7216c064ea5671", + "value": "0x0" + } + ] + }, + { + "address": "0x7c662b10f409d7a0a69c8da79b397fd91187ca5f6230ed30effef2dceddc5b3", + "storage_entries": [ + { + "key": "0x604e7fb7848c9c93786aed9fa57b49c439d834262d7da9739dde01902a4046d", + "value": "0x0" + }, + { + "key": "0x110e2f729c9c2b988559994a3daccd838cf52faf88e18101373e67dd061455a", + "value": "0xbc3770ed74eba2d773" + } + ] + }, + { + "address": "0x5e904bcfdc42e08b0d9a98ce4f1a24486c01b45c0e61b60834a80a49d15f677", + "storage_entries": [ + { + "key": "0x10064c6264bc3361adf2b26fd01272239473906cb7bbc183b1819e75188451", + "value": "0x3030302e3030302e303131" + }, + { + "key": "0x3ad34fad732b51fe0d1a1350f149f21a0cf14a9382c9c6e7b262c4e0c8dbf18", + "value": "0x5dec330eebf36c8672b60db4a718d44762d3ae6d1333e553197acb47ee5a062" + } + ] + }, + { + "address": "0x811d8da5dc8a2206ea7fd0b28627c2d77280a515126e62baa4d78e22714c4a", + "storage_entries": [ + { + "key": "0x48be3692ab3e9e8bd4a134a7b958b4e69bcb00a71d4f58c22f9311921f12bcf", + "value": "0x1dc5498c" + }, + { + "key": "0x195698f007a0ccf18c48cde16249d60f00d3a1f74b23942b61dee66f7996d51", + "value": "0x0" + }, + { + "key": "0x1d430bf138ea7c30cc4ba41938ff8081ecede809c1d7bc56b785784aceaae08", + "value": "0x539633816c" + }, + { + "key": "0x2bf5ea7e09ba9198897340bf66c067155d7e0bdd7a6f4eb60db9829e34d32a2", + "value": "0x0" + } + ] + }, + { + "address": "0x6d791d7100e445cb6eaf79f395765dd81869f6b3c4aefb8039a0e54fdac5f75", + "storage_entries": [ + { + "key": "0xf920571b9f85bdd92a867cfdc73319d0f8836f0e69e06e4c5566b6203f75cc", + "value": "0x33434ad846cdd5f23eb73ff09fe6fddd568284a0fb7d1be20ee482f044dabe2" + }, + { + "key": "0x1ccc09c8a19948e048de7add6929589945e25f22059c7345aaf7837188d8d05", + "value": "0x635840880dd2fae4d153134d8d4a26df964e6adbfb15448e2947674af89c050" + } + ] + }, + { + "address": "0x2d5f0f2fcba62a54f0d8a73fb2e437d76c53f7297153b2afd1f198af6d12aa", + "storage_entries": [ + { + "key": "0x14b3c2a2e1c618b002f0c05691a55979e4855673b6b336434a18a0e79b4f3a", + "value": "0x1" + }, + { + "key": "0x6534825ff0aeec29745f1bf8662b36b4febae7b02bbe59b58842df5ebce5a91", + "value": "0x1" + }, + { + "key": "0x10e58727bef0b0199a4f3aa94a679050b1386c747fd592ce63d976db9823e8a", + "value": "0x1" + } + ] + }, + { + "address": "0x8d4f5b0830bd49a88730133a538ccaca3048ccf2b557114b1076feeff13c11", + "storage_entries": [ + { + "key": "0x1b4491c95df6942335174bcfc05749f14b6fbef8205ea29efa6f440f2994de8", + "value": "0x1" + } + ] + }, + { + "address": "0x388ffcdddab0eb1518bbfa0599e32c195398c76a476afda1b0f75bdb64a6de7", + "storage_entries": [ + { + "key": "0xf920571b9f85bdd92a867cfdc73319d0f8836f0e69e06e4c5566b6203f75cc", + "value": "0x0" + } + ] + }, + { + "address": "0x51184e312f09abcbf28132d6ef58259a6ebe9b5e7e32b5200427fdc96973f94", + "storage_entries": [ + { + "key": "0x1e6f3e4333da349f86a03f030be7f2c76d8266a97c625746ebb9d3220a39d87", + "value": "0xae1244878b06599c34" + }, + { + "key": "0x57c60b189063035eed65879a14ad5f6e718027a212dafbe52f9bcd79e9f4fa", + "value": "0x3356e156625ead500" + }, + { + "key": "0x3351bce4793f90e4aa00447357c2d34ac08611756193d8249009e0396dd7b41", + "value": "0x6509095f" + }, + { + "key": "0x3b3a699bb6ef37ff4b9c4e14319c7d8e9c9bdd10ff402d1ebde18c62ae58381", + "value": "0x118deff9" + } + ] + }, + { + "address": "0x7e2a13b40fc1119ec55e0bcf9428eedaa581ab3c924561ad4e955f95da63138", + "storage_entries": [ + { + "key": "0x57c60b189063035eed65879a14ad5f6e718027a212dafbe52f9bcd79e9f4fa", + "value": "0x9fb40aad8" + }, + { + "key": "0x3351bce4793f90e4aa00447357c2d34ac08611756193d8249009e0396dd7b41", + "value": "0x6509095f" + }, + { + "key": "0x3b3a699bb6ef37ff4b9c4e14319c7d8e9c9bdd10ff402d1ebde18c62ae58381", + "value": "0xa860e5bc4463b7de7" + }, + { + "key": "0x1e6f3e4333da349f86a03f030be7f2c76d8266a97c625746ebb9d3220a39d87", + "value": "0x434bdddeaf976f2f360b" + } + ] + }, + { + "address": "0x55098bdfda961f539769be571a591796937e86d0d5329de0d076575c3b7c35", + "storage_entries": [ + { + "key": "0x3ad34fad732b51fe0d1a1350f149f21a0cf14a9382c9c6e7b262c4e0c8dbf18", + "value": "0x5dec330eebf36c8672b60db4a718d44762d3ae6d1333e553197acb47ee5a062" + }, + { + "key": "0x10064c6264bc3361adf2b26fd01272239473906cb7bbc183b1819e75188451", + "value": "0x3030302e3030302e303131" + } + ] + }, + { + "address": "0x5dbdedc203e92749e2e746e2d40a768d966bd243df04a6b712e222bc040a9af", + "storage_entries": [ + { + "key": "0x43c539fc52399f3560ef443c745f6e5be7938902d1e0fda8898a837a456f507", + "value": "0x6fbbf64308e4d5c632462b3a90c929921d38ba2f9bf86760a86d7d8187fd7a8" + }, + { + "key": "0x7e05aa7d2a4c1137c3929079bb0a62d041894a6b0271eca8d1e536b68d14798", + "value": "0xbc88b533" + }, + { + "key": "0x2999c38b959d15d14a931b9ef93c41ad578ab827f239151103bb07a0ddd847", + "value": "0x55a1279f91ea6b4fdcc28038eff829eb58228b888ce5236cdeea0a624fa0ea1" + }, + { + "key": "0x3c4153d59048567b79576b46fa3483b1077a42249b8eb6d9f0ee2187e924c0e", + "value": "0x519b85c7331ac2aeb4cade1f2222404a174a8e0b3ee747169c66e2f40bee99" + }, + { + "key": "0x2104d43923abc4dc1a827d463f2f32bf7a57f5c06109a1819015ce61027b5d", + "value": "0x1" + }, + { + "key": "0x234a8b617442f132148c54f5252aa11cb90f8126da8d8fa7a98e7def236ae07", + "value": "0x1" + }, + { + "key": "0x5ddf51a412cc21611e721fac20b3cbad0f46379bee6d9c1499d89d2c5cd7fe3", + "value": "0x385020dfa38ee8a559cab4ca42e1ac64908c2e35bf2e2b2cf207beefa4f37ff" + }, + { + "key": "0x7809573caf175baa850aa6f31576cd8e0bfa510669672bce6fd482a3b16b300", + "value": "0x1" + }, + { + "key": "0x10be812d2ad9211ae389e39c8d45770c93b8e5aa0474ed708bb60fbb196f56e", + "value": "0x1" + }, + { + "key": "0x7903251eabf5d0ca03a7546e04224ee34e5fac0ad5b92a7ff99c5a2b8306d35", + "value": "0x3" + }, + { + "key": "0x1fbce8cb7d8de458d7dfbe2be7bb8a8b19b59b5970dd3513dc0f789036aae57", + "value": "0x1" + }, + { + "key": "0x63ee1a503237a450bb102b952b428d6537647ba933f158dfe447d52b7807720", + "value": "0x47d5788081f93242204357c1d893138ab1065293e9278eb63abfb030f3e2c5f" + }, + { + "key": "0x152d8c2d30981fe16571568d130726553470bb3e774c12db6aa3242f1d47f4d", + "value": "0x5197a6af3f299cf77c9ed5d814fcd5ffc7b807265333c903b1f99286f9ca01d" + }, + { + "key": "0x6036ee00c789a1d3bc382ff220f4270374703b4115a31e7e2647e9181eabf22", + "value": "0x7f72dd7c0ab8a9deb014d6f03da0c9b9a1116c950241c3ad5d36292118e0772" + }, + { + "key": "0x47ac569e70ae61b76bf51015c7ad162c86c7f0ba5ca7dfe67b505a7c53a673a", + "value": "0x2e8454f19a77ef28502b1d9dff74c506474ff0e1a21eb919023a3d200f7e623" + }, + { + "key": "0x5a2edd253ac2ecc4914f137b0837eead7a82ee007a91583d3983d8f737c571a", + "value": "0x647aff70695bbf69673a3c5d20fb3a0bf42dd714229f1f7918daa87be6de163" + }, + { + "key": "0x66a685fb3858b2ba9b6e4f1cdb1ea1d1c2f145cb4df788c131032806a4b181e", + "value": "0x8af26540a9c49923159b852395b1297c1089202311fd75c77eec5b4418372a" + }, + { + "key": "0x46da86d14ed0de66d38dc5f2e32698c13c3db3e169e208b45a8a001549c8866", + "value": "0x1" + }, + { + "key": "0x5ba91d12f2a6fd4745c0a1a392e37fb342a3d978faa842ed95245074436842b", + "value": "0x575e2f0650aaf9964cf0da778dd40b7487f6f14189c761118b40e81e21a2cff" + }, + { + "key": "0xc7d17b9e21f976a86806b8de2cdf5ac8839bad9c29d5e8e8f73fb13d58d8c7", + "value": "0x3" + }, + { + "key": "0x3df18210264e9e25439cd57f56be1496e654e388a89f5049920f7da2bf41fea", + "value": "0x384b35211f922c5c5cf6eb257c0f0e83203dfb9975ddc20cf0b091c759a03e5" + }, + { + "key": "0x6b5b6439720bb6aac5379db102c0eafe05659f6efda9587a9dce3fc80da9400", + "value": "0xbc895126" + }, + { + "key": "0x5d886e90b566437607b066439e5334a21c24b5a44239103c2e856fd9df9913f", + "value": "0x37511e984c219c9990d4c8a0d43e455da5e4d53bd81688d7c11738a0bb5e4f6" + }, + { + "key": "0x6647a5bd87425a4a9df1ec38961fd6664df24a5de4d21e667d6b9b89493af7c", + "value": "0x1" + }, + { + "key": "0x7f5963c0cfe2522b8617babebc7d68ee9dd25969cdbb145d275e70492c912ba", + "value": "0x1" + }, + { + "key": "0x7c43e09706ad74e4fc865dc69b99db936735edb9cd3c1c542415f6e73933a1f", + "value": "0x1448b4eb934eb79410d7abb8467b5cc190078119f74c24c201baed4cad98cea" + }, + { + "key": "0x2ab6096807e8ab038b491102a99e2c181cea05f08004f4bcb4120caa5a5e966", + "value": "0x6b5af5e69896e6a8a7162b066d7c78c52c85bf2cda704f1ddcc4ce75ef34ef8" + }, + { + "key": "0x755b92be0a3cfa518da138be4671c925c001f9b746e50a04edb0b7d3900eb23", + "value": "0x3" + }, + { + "key": "0x5d40c0dee08b0e56336cff9ad0cfc7ea5cf2f6c0450c56e55c2352a4662cd7", + "value": "0x1" + }, + { + "key": "0x568108b3bc72b8897ae270e6379d7d41beaa90964d6fd5f06db37b7ffc77b8b", + "value": "0xbc893f14" + }, + { + "key": "0x6f6000430103fee11c3f738412b24422a1844e3bf5847694ec053f16749fa4f", + "value": "0x1" + }, + { + "key": "0x5f21fcb70a79812389d473051e54d19c10b5ae5644a14297d968c51a799eb70", + "value": "0x19f20acbe8600fa1ee24c0514cd77620332aac26f695a29b0f4e3d95eddd8c" + }, + { + "key": "0x39527461f31e08ae914814dcd5ca9fcfd8c3ae99b21703560b44e7dffe5246f", + "value": "0x1" + }, + { + "key": "0x17fb584a1e01fef796453f7db644b47db6624fdaf7866bd49a82aa8a51e63e3", + "value": "0x3308e99bd4e65f053a51d05348dbf20e53800ef5843bf139899b6080f88e5f5" + }, + { + "key": "0x1b204e492d8cb502a4a90ced5796f4928f3774ac87b55d4dfb29c82f9d6324e", + "value": "0x207a638e512242596e6d7d8f24f906548ee17812ca76c41aa2e1fd842cdb9bf" + }, + { + "key": "0x588b7edbd5a8c3f7f075e3a164c4e941c83a65db3a09833087bfcfb4f808738", + "value": "0x46e2cfecb05dd08ba75bcb134d92c53b2bf163cef84836c3a7747bb6bf04854" + }, + { + "key": "0x7ffe5207e0d40efbecf5fbd260ee8687cc4ec2fcefffb4ee7486d45a29fe23f", + "value": "0x2" + }, + { + "key": "0x440ab52e57bc81d05bed8d7eea7ae7e1c68d2339ce89fbbc08da2536996393c", + "value": "0x54d50716b8cba8bd053ebdb9be0237b1263e9713c7139eb9fb09d2fcb6dab22" + }, + { + "key": "0x78e92cf6389ec7fb1887723c19a837e95f61ba1a77a73453882e98ba6fd6ae9", + "value": "0x1" + }, + { + "key": "0x62c35c939235b81f672390397c89f275146d703cba6cca732e2355ee97de692", + "value": "0x6b7c455a8dbcb641d6839542eecddc0b56ad3ea97a1621492d6a71be6c9ca24" + } + ] + }, + { + "address": "0x68b6e5d3d9bf46c5451a3a5e921500adece742c8419117a6412aeb8527c8ebc", + "storage_entries": [ + { + "key": "0xf920571b9f85bdd92a867cfdc73319d0f8836f0e69e06e4c5566b6203f75cc", + "value": "0x0" + } + ] + }, + { + "address": "0x5a64a8169d195cf20626ed99fa9dd7c8ff72bbe50aa4ac0f40e599d4b362750", + "storage_entries": [ + { + "key": "0xf920571b9f85bdd92a867cfdc73319d0f8836f0e69e06e4c5566b6203f75cc", + "value": "0x0" + } + ] + }, + { + "address": "0x22b05f9396d2c48183f6deaf138a57522bcc8b35b67dee919f76403d1783136", + "storage_entries": [ + { + "key": "0x110e2f729c9c2b988559994a3daccd838cf52faf88e18101373e67dd061455a", + "value": "0xa16900e66eea18" + }, + { + "key": "0x5728f65f1dbccbdad8e117e873d17f8488099785f379c6dfb4ec3da2176d372", + "value": "0x0" + } + ] + }, + { + "address": "0x23c72abdf49dffc85ae3ede714f2168ad384cc67d08524732acea90df325", + "storage_entries": [ + { + "key": "0x1e6f3e4333da349f86a03f030be7f2c76d8266a97c625746ebb9d3220a39d87", + "value": "0x4019f81d679320e9e5" + }, + { + "key": "0x5205bcb3e3f49a913e913df275c9ea1e4773ccf90f439baf079f61b80303917", + "value": "0x23dc5a6947502" + }, + { + "key": "0x2712b812fff3c2f3b38d4c532c684b5a1800dae9c4a8001c6f855bb520c7c5", + "value": "0xd00112576faa8c7f2ec3222817f" + }, + { + "key": "0x19dbc9b4eab95d05b7871c69cdeef24e69dc2a3536f0c6bf169000dc1fdd20e", + "value": "0x475ae6b23c" + }, + { + "key": "0x19dbc9b4eab95d05b7871c69cdeef24e69dc2a3536f0c6bf169000dc1fdd20d", + "value": "0xe928c100f8530019ca6ca0b111fcf5d7" + }, + { + "key": "0xc2a038868252b31ec07bfc9482312828a0f35201f4c6a3002be2e11923a423", + "value": "0xf81db9ae14" + }, + { + "key": "0x110e2f729c9c2b988559994a3daccd838cf52faf88e18101373e67dd061455a", + "value": "0x7456cacdb99c99" + }, + { + "key": "0x3b3a699bb6ef37ff4b9c4e14319c7d8e9c9bdd10ff402d1ebde18c62ae58381", + "value": "0x1c23ca4cc35" + }, + { + "key": "0x332df419aa058c3f4b36acbf5af4b7e8e3d4dd58918d5f0ab2841741e7b55c2", + "value": "0x6509095f" + }, + { + "key": "0x7af134b7c4f8214516c071148fe043502a19625938f2a16f0538ff40518abc", + "value": "0x70bcd55456cf3cb568fa5f4360f7" + } + ] + }, + { + "address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "storage_entries": [ + { + "key": "0x3ee08d4d25d18e6b94794a8faabf546e02a2862502e405150991927f3ee876a", + "value": "0x5865c12d667af" + }, + { + "key": "0x3d0db130480a59c191f40585647196c048231a1e5077ba26dcb9d7bde15234e", + "value": "0x320abe31c590e6d" + }, + { + "key": "0xc2a038868252b31ec07bfc9482312828a0f35201f4c6a3002be2e11923a423", + "value": "0x27d25107adfd9fde" + }, + { + "key": "0x4f3a1181c8681f86d1ac2e79e373ea550efddbd11e7b85fabdc3b845da4c2cc", + "value": "0x9f7dcd3505d18" + }, + { + "key": "0x45790e6b863e805c10d715384d8655f955c168dc29d33f2dbc941faeb4888a4", + "value": "0x5af3107a4000" + }, + { + "key": "0x2adad32e613091d1bb1d36a89d0f1b77290948d7e784611c904f6602d57d367", + "value": "0x1617c1a0f82ec9" + }, + { + "key": "0x6620ca81fca221dcf423ee80ff135039c02653d4ffdee096a7edb1988633e85", + "value": "0x1e6411278480d3" + }, + { + "key": "0x35be9549b4cfd2bb0c0796f34a923e01aca6f5365a46430fb9a37b6f920db5d", + "value": "0x0" + }, + { + "key": "0x312a169dce2cc79cee477d5612f10ab882f525ccd112157472416da989810c6", + "value": "0x55f8e7dc35dd" + }, + { + "key": "0x25df3a1ffcd26e75291c5b58a666cceb52743712ae809d9fa686c5cc0109e21", + "value": "0x1332832b49397fe8" + }, + { + "key": "0x6e64dc4c4d16d7e0393b02af3d6da5227e1396c56794b0fa57257eb8d537071", + "value": "0x33c7393c2621773" + }, + { + "key": "0x1fc14a4bdfc9d8f0c2b9d9328e4f6a49448ae8b52d81e85530109039f683f3e", + "value": "0x124cf324b7fff206" + }, + { + "key": "0x597eac3b42ecb51c303520e05217f6550e7cb37ccfc0a1fe931184d438e6d3f", + "value": "0xaf0d8e0d55a54a" + }, + { + "key": "0x6355aae1afdc8a3d329dfbf50b2e393f647a9448d1995d38ab56ce91efda3c3", + "value": "0xd9520d4b6039" + }, + { + "key": "0x25509252f18c5fd4d47feb32272c38aa4f727ade1b51e3b5376fe8dd53c3cbb", + "value": "0xf98fece21692b" + }, + { + "key": "0x4b0f686915b177abac371e8fa418dbcc4e19a53ac9b57791b8c1c0b6b6427ed", + "value": "0x2130f97fd72546" + }, + { + "key": "0x73137572f0e5c74e6a75544d6cc16ca72ec577cc650d8016b38d5e4b7429d32", + "value": "0x5f858949fc0c10" + }, + { + "key": "0x465118250b457d55b324ecbddf7a31ab3304115260d1cde1086ef4a142649a5", + "value": "0x739d243f49cd49" + }, + { + "key": "0x764d355edc54321dfe2f543f7a36ea87d28287c34cfc1d7d2c7adc58294fe80", + "value": "0x5066ee814fe9a77" + }, + { + "key": "0x43927e734ff57368ee5a3c06c5e19141508ea8e866aa4e672262cf1471cec63", + "value": "0x2524b93d58a2d4" + }, + { + "key": "0x2a54f1f7bd0dd40ab48c1022108b72e2cefa59227b2af37935e4b4e7a9335a1", + "value": "0x1af262c0ecec088" + }, + { + "key": "0x6b4d3b3ed62ab015998321fb07d993cba9935b0e67aedbd0b522bb6a5a6b905", + "value": "0x9d7ee413ca9d25" + }, + { + "key": "0x43e1ef374bc5f9e49c6c9764a9aac6e36bc8e3df0ca3bffb3cde5a0990ca369", + "value": "0x596206b481c53bb3f" + }, + { + "key": "0x737aa802a8a23e218015e2654ce5ac39ce2e0fcd4595263e112ddf68059d70b", + "value": "0xc00757fbd6696" + }, + { + "key": "0x6fd7e93d009f1501741ae3106190c636e4e15283f16727fa0ce1fe3185a7e26", + "value": "0x6c1a0c57025cb454" + }, + { + "key": "0x278001aff9c5e4a8cfc5a4e24d39eaeb1b0a6b23821354343f1186ee327419e", + "value": "0x52f6bf8ab80ed" + }, + { + "key": "0x5e98ed6b9a59c7e19369a1be15a79aae7940ddbb45689648aa4aa85277253b", + "value": "0x2ce7740e77ab5d" + }, + { + "key": "0x7b5eae139345f010e0abbdea7c44548cbf15d5eed75cb94caa5f4293534f873", + "value": "0x0" + }, + { + "key": "0x51449a3d9b9b9e3f79123bedfc512feb297d98e9ba80aa8f03bfca471ec386a", + "value": "0x1494f8bd972c16" + }, + { + "key": "0x75d6eec778730e48375a9fcfac72369519f09c4ffd9df4a9f24952bcb6f6f82", + "value": "0x24722c53a6e57b" + }, + { + "key": "0x97df8a793598089aefdd463b1c92f4d33bdcafdb9c6402b7e25a3029a4b944", + "value": "0x370c3e0f87050d" + }, + { + "key": "0x3bcb5239535a3fd561789b7cdabe55c8ba8f5ff6fb0ddff4ed7b7a8ad8ec8d4", + "value": "0x114b57eae0cf592b" + }, + { + "key": "0x775fab57fe26b35adfed51f1bd4ece87c5990e79ad2b9e7f84455e5c6a244e4", + "value": "0x55e1693fb4da9" + }, + { + "key": "0x6a24709644db4d4afd096cbd54f2288e80c19accf5cd891efe3d8a3cbdae12b", + "value": "0x21f0a291e341f6" + }, + { + "key": "0x29a8ce0a2e2ed29740aee0cacb575b058c3a4d89f310e9bcef4652ff746583e", + "value": "0xaa46deac032512" + }, + { + "key": "0x7e8f32537a73205a1005b25ecb20596d09ba1b470381be30636a00c05d317ad", + "value": "0xd959838a463ff64" + }, + { + "key": "0x351027ba7dde13941698c0a62b7f89b521a128b1ca7e2dab4467f1b3aa48aea", + "value": "0xe4c0fa9f9d040" + }, + { + "key": "0x5e738fbcbb0d07258e9d01b18aa9e57d67ad75c3c1198bccccfc278cc01a612", + "value": "0x37e23cc8f7089a" + }, + { + "key": "0x1a231342ccc9ed6b68a70936632b64f66d81fd6a08064f00f0253f4f6ca492d", + "value": "0x682d206e47a9c" + }, + { + "key": "0x659a645cfdba0410ff2a368fa48e461f099061ed42a745b9fdeec4e687cc1d", + "value": "0x571be3acbd72f" + }, + { + "key": "0x3f9c8cfe69ed75925719e1ad4d7921a04781878fafee018d302532aacfcd06b", + "value": "0x78ec6276cd320" + }, + { + "key": "0x5171eed1a35e69d43c5e908d0a0b34d2c459703f17e0f9d1853d044946232b8", + "value": "0x23e59f155dd7f1" + }, + { + "key": "0x588002530ca35c3990703b64199bd03cee0d09db2c78ebb7793ae0b134208d3", + "value": "0x1afb772ba7615c" + }, + { + "key": "0x50456409fbb1c71fbf7b5cfca51a9cdd7967b2e7810d265a632d9969b313576", + "value": "0xc5ca01d62f" + }, + { + "key": "0x5cd61a539cb40ab5a0c71ed48449cec5e1a89b7a8f00c74fc0f686fd51321f", + "value": "0x1b47a81bd112c0" + }, + { + "key": "0x5197c4536c40276bd753bc5c60052d93abe71394815b62d7c2a9d9d7ea507e5", + "value": "0xb7d2c601725ac24" + }, + { + "key": "0x4db20f0a7c940bf6bf972483d1cf92de02f99ea0e647cd98d0f6334007df6d8", + "value": "0x6b982b7877c7a1" + }, + { + "key": "0x76ee213b2988fb6d758acc23004f6faba07f5d7b2099f112d8d7f706660b9ee", + "value": "0x0" + }, + { + "key": "0x6f5f596b12e37e5ddbb08690209c7fe4b100f32ee9fc350aa64189bc449f705", + "value": "0x5b329d6c047e5686" + }, + { + "key": "0x224a13ff8e291dbc630c0a252a8eae501cffcf3c398aff5b0f5e993129ef6ab", + "value": "0x6026b4bea228cde6" + }, + { + "key": "0x3a311817de43bbbb14e4b5922ef5940ae579a15ed2839ea96ddda6ba21fa480", + "value": "0x107872eaef60e1" + }, + { + "key": "0x3adeaea50e2564ffa4d0c5c9a76de3ee700fabc915d2e0daf17f4e77af66f7f", + "value": "0x416f70729a3957" + }, + { + "key": "0x5405f9088f8937b8d58b45d7cd60842585880e4b744d859375a38712f58c76c", + "value": "0x6a6db6ebc3cce0" + }, + { + "key": "0x476507f14d3b54f13379b0f4818b0ddd42990984fdb26e228a132b8a780853d", + "value": "0x834f18362076c1" + }, + { + "key": "0x5f3ce98ce02ae19b9942132c6ae704316c799119602cbf7677952ea37f3e5a1", + "value": "0x6e079fa17beb194" + }, + { + "key": "0x75f7d9b2864838d29901b96b6b260b8cb80ed75091da0e7011b5a131ada1d53", + "value": "0x1cd52ac93348f9" + }, + { + "key": "0x21d83ce8c79de94a064090271be1ef0fbb409d3b7a8ae68a1ad023257e643be", + "value": "0x32825c2d083c3d" + }, + { + "key": "0x6edded4efb159b71fb1701ffb016a4a4ce076ff5cd4b6eec20c504b5fdace5e", + "value": "0x1041ee55640f12" + }, + { + "key": "0x2037a6c955a0a3ae3586f9c32ad0a18f611d2e284797b231912c810a077ddb8", + "value": "0x0" + }, + { + "key": "0x5489da9312188ea57f59ddec4bcea4fa0be0d086dd6b49c9ce309966f1f0905", + "value": "0xe8f6b4dfe8ce6" + }, + { + "key": "0x6421bc80bc9d8f946b0e73dfd79d7fef596e4742c64d66ef9394cf7ea60261d", + "value": "0x17dfe1f1e49a11" + }, + { + "key": "0x4d67ca49fee01a0ca06f697befd57304d6b48383e324032b9a38458683453af", + "value": "0x29611c30263a809" + }, + { + "key": "0x320e9b93cc1e61c6edfe0517e5067c84d8e4c6b7beffe0f67afd546704d885c", + "value": "0x8d8edfad47012" + }, + { + "key": "0x25e1cc4f1f3ce9af20c71e0fb29e4086b6fd7e9401766999dcfb92e348eeb7a", + "value": "0x180f5175791fe7" + }, + { + "key": "0x14274eb1c3bfe419f8db0d8c20a6e37ef81d3475222f6ea34c584fe10a1f25d", + "value": "0x26ae67c04fe59f" + }, + { + "key": "0x53645920eac20936201dccb4f32c86871e405050f7ff1d66cd4244780ea0989", + "value": "0x9e39becdb807d" + }, + { + "key": "0x7e745be538f073367d61bddae88e1ef145c8b4c1cf194f95ef33cee6b3ca0db", + "value": "0xedda3420f5e80" + }, + { + "key": "0x1d4d0313a8cb20065e67c8bc7a680c5c71f577fd65eccc1f1b4ef87f50cdecc", + "value": "0x7adce156c0a7d357" + }, + { + "key": "0x14417eb11937366d0b688923a539cd896ae519de6d99012dc6dddf37fa36fdc", + "value": "0xab847eadca928ed" + }, + { + "key": "0x49a8ef79cab313360767015d427d0307368eff5c2c81b019aff018ec638eef2", + "value": "0x99612c0c802c2d8ed8" + }, + { + "key": "0x2b0b97a93ec1f367241bb641f2acc920eb934b3cd6c37ccd2a68ef2fdfae07f", + "value": "0x30038a31455f2b57" + }, + { + "key": "0x5728f65f1dbccbdad8e117e873d17f8488099785f379c6dfb4ec3da2176d372", + "value": "0x6eec62d6f2d1ee" + }, + { + "key": "0x48fb763f0e734e7c8345ad1e45150a91541b1b9a29062d8fb7b65857e60841d", + "value": "0xd187393aaf9c000" + }, + { + "key": "0x558692aa59307787ce5642979bf402d47cbdc0e593f527e8a4447ac227be705", + "value": "0x1183c2b137e63f" + }, + { + "key": "0x60e5f5a75121977417e7979741ab8530d20f3b5a3ebc4d4ae9f69996a4a73d4", + "value": "0xe32add790a260a" + }, + { + "key": "0x6b803d83bd497850377f3501da6d7d37d0564b7a2971adc586a992b1ff19029", + "value": "0x963e1bd2b1b05c" + }, + { + "key": "0x476e1fb2e01c5d103c273ac785d84da9d8696e0cc998ab05d5573a899d4125d", + "value": "0x36f13b6cb14b1b" + }, + { + "key": "0x324f76c4b88d11809a837815f103ebe4e7441c9539bfe450c25d86b830227a9", + "value": "0x0" + }, + { + "key": "0x5be2cbba5dc6102944391bf26c251a361cd9616eae67b1ffab1673391edfd01", + "value": "0x13d2320c581aebd" + }, + { + "key": "0x510c664db84ee917626c9a54fc14d86c3f1ac58176a20b04944d035a87fd0c7", + "value": "0xe22be37d71caa09d1" + }, + { + "key": "0x4b70c66c4d3dd4221208cef5048569ee7eb5ac17ec3b83011569c25e53d8cdd", + "value": "0x171106c3119dd" + }, + { + "key": "0x5e43132a127926d088b6ce6e66adb0ec366d8448473abee41cc813ab784eeb5", + "value": "0x578d6b20b9f4a" + }, + { + "key": "0x6c717cfd8eb2c6c66b511f44803a656dd303ddeb45dd68466e778b39c097483", + "value": "0x9ef2b3ba02fa2" + }, + { + "key": "0x5496768776e3db30053404f18067d81a6e06f5a2b0de326e21298fd9d569a9a", + "value": "0x2146ebbff43bba033" + }, + { + "key": "0x696274d77f5b0c432221c1a14e1350cd2ae1777ecad3685d34f074ee3cf4fe9", + "value": "0xb965fbd253875" + }, + { + "key": "0x332cecccb4c630fe3d6a7510a783cb8ce0f2768addd456e9767eb5df0b71797", + "value": "0x20525b08c3026a10" + }, + { + "key": "0x786f1f09e18bdbef1973730868e4981b5b9ade8a71890bb369709ba11fea9e1", + "value": "0xda9e406c600a7" + }, + { + "key": "0x10da9915e9edccc5dad1181adab91746b7c01e5d9f31183bda1b5bb801eac4b", + "value": "0x73e9ed7aed2" + }, + { + "key": "0x4aa2885ee95e2eaf83fcdaa59539ef9301372e916bc2419274d92a453c2b422", + "value": "0x4019f81d679320e9e5" + }, + { + "key": "0x49c1f3f5f2cfcce86e95763c90746e9455461a0928290b118f2db1256da9cdc", + "value": "0x7fe59cea65364e" + }, + { + "key": "0x273ce3f4cf5f20c72a57c80a1eb3502bdfba6c7803cb4f55b3517e83fdcb055", + "value": "0x23788ffc5dc5a518" + }, + { + "key": "0xb6980fbfd6243019e03c00f3074a127dc9c7f7b763341a1c0b7ee968fdcb43", + "value": "0x1053222fe42221" + }, + { + "key": "0x52553b4b6ed1543dbff450cb5bdc3f7115b2a81070b0aacc2821729eb4a9187", + "value": "0x56bea2a58ce3a" + }, + { + "key": "0x1526497a520f4b5ca79f5d031ff4fa4142801f9b0fbfbdbb55cf7ba951e56e0", + "value": "0x2e169462a6ac1c" + }, + { + "key": "0x2b9344ffc09b3bfd715dc285845f90dfcc746fc49a0c817b6cbe532092d90c7", + "value": "0x17e5db6b29bf2c" + }, + { + "key": "0x5fad7613fd327fc13290b4c80dcb56b41035cff52310cc2f9e1d7de286fcff1", + "value": "0x2260eb9a4d8a2e38a7" + }, + { + "key": "0x60baf59b9853ce4779f36c8d3bf03eced96b2cfb5200155383b97aa8a2b3f66", + "value": "0x3c753bee65d0bf" + }, + { + "key": "0x33f0c8ee294a14dad53745da05bb90dbdef6e78de534e8822923f46f2cb5d24", + "value": "0xfdfc68476716518" + }, + { + "key": "0x1bdceb369d2d39e055c22db25800d6aa51d526f3ea4be22a5e5af43857e2280", + "value": "0xa8f86a615eb6e58" + }, + { + "key": "0x6d89744a040efc40509aa2e8161deb83c00cdd467450b60303efcb205dcbc7a", + "value": "0x50fad906287f7e" + }, + { + "key": "0x3a2e403d5ae423a53f92c8902189b65c1675e5f7dfa6b509de20f4964df1176", + "value": "0x1531cfdf62d2aa" + }, + { + "key": "0x43b93079603c736faa41bf060a0180eacaf47c1329b0faa284328f79ab99b95", + "value": "0x3c33252728bee" + }, + { + "key": "0xf8616ddc2e26a7d530fa0e85535efe63b0b25f1157305eeee8357c90da4fb3", + "value": "0xc87e06d9f6a6f" + }, + { + "key": "0x189f421443795ae59bc938c5e129cafdf78082f389c2d203f8f56dd4fd6b656", + "value": "0x1e4febc5ea7f65" + }, + { + "key": "0x6c6417fd35a3c55106a25adc610b49c90b3e3b028dd80757074ac8696b71aa5", + "value": "0x48bb69aee52675" + }, + { + "key": "0x484b58d14b5ae33aa29b25f31f3558c0e6013d59f6c58193cc3a87d843bc34b", + "value": "0x7a5b02976ad3d09aba" + }, + { + "key": "0x5df2a97bf5eb4941f9a318b0df056a60873cc783ea8ba4ac05ad32110f15a", + "value": "0xad24072455f99" + }, + { + "key": "0x5035d6cc1aa46366de3e345b1a11fcb310efcc2e99719b14664580d61f5838f", + "value": "0x1484f4ebae9a60" + }, + { + "key": "0x4674d19a24d0dc7182142a040cda17c06b60e990abf1b1a0701e63a5253abdf", + "value": "0x362dcb50d320000" + }, + { + "key": "0x604e7fb7848c9c93786aed9fa57b49c439d834262d7da9739dde01902a4046d", + "value": "0x6e165975d2de03" + }, + { + "key": "0x450e4c4d0f04a431c7d4961350fac2612765ab8911d388aeb66d44046b786e4", + "value": "0x23d9cc5897efe46" + }, + { + "key": "0x39465f14fa8ab04311b2ac4c65a1d2ebcea468352381bc0d656654e77b1dbae", + "value": "0x5ec1908dfac8f" + }, + { + "key": "0x2c6705dcc5ac75d87473b218701d811d6731e1863067927cc311120b16a28a5", + "value": "0x181d41c782c665" + }, + { + "key": "0x779b8c599645d38ffcda12fe2ef0c397589b768da14839d553c6f4470023fab", + "value": "0x29ceba413e51a4" + }, + { + "key": "0x4a93ee107891028d67918cf171605b918288ce306aa9e861785cc482eaa75b", + "value": "0x91f2239dcc774" + }, + { + "key": "0x43f863fbfec515e09baf07ce0460de605f678a1561a44e0bfa821525f5c7d0d", + "value": "0x3730d7e60a099a" + }, + { + "key": "0x496d7267d8a8ec7097e4eedb6e9c3913912a0bb22f77d302b051e6e573637ee", + "value": "0x221eb4e3b2e4c4298f" + }, + { + "key": "0x1271de89b7411ef08b898fdb508fbc8d8d1131657a2552eb44350a1786c183f", + "value": "0x34aa8b0158f7b9" + }, + { + "key": "0x775baa087cdf0d733e1b9b46270c5164038fa38136eb1a8f39879b5db6ff3b4", + "value": "0xfa6081b7a8" + }, + { + "key": "0x5ae8b0b3431c8b279bffa04f2af6824a732c97b9a45a2132ce926dcc66f60f4", + "value": "0xa04b656a50ba8d2" + }, + { + "key": "0x1ef49b0c57d43b99e6d392f7b11846867f242b99fc5ba8d3f6857ba09991d17", + "value": "0x5376ef0c99396" + }, + { + "key": "0x6dd0182567da231e1ff1cbb3537bc81be012bf173529aac2372247cccd5bae0", + "value": "0x521608264e943c" + }, + { + "key": "0x55e58654b3641926525ee1ba66df8e43200ef0b6ae5da1bdd4d5be4b2e84477", + "value": "0x57c83297ff070" + }, + { + "key": "0x4189e52e8d290d14dbab84427b0582700f849dfec2da2f2146ffbe023978c27", + "value": "0xa26dfebd05" + }, + { + "key": "0x30145392e0879ca5c4dce72e875b6cb79c4be4add3d50b90b06d1de776fc9ba", + "value": "0x112c1691b830108" + }, + { + "key": "0x5aeab87da2ea3824a350b316078eb7525d3eced8159ee58f0afefc06cf165ed", + "value": "0x0" + }, + { + "key": "0x57b80b58a4ac8483874931359045426251d93b1726b9bcc87c5b7eab6e701c7", + "value": "0x14c69183f420b8f" + }, + { + "key": "0x144fb6d7f48cd1daa2f3d0a93b3e0048a8e1f7394caf134818ae57f7150e396", + "value": "0x1ee480fac761335" + }, + { + "key": "0x4606b971a1cfe4e5418ecd6ccca787ca29b9fae630748c4750854351ac86084", + "value": "0x277c552c54378b" + }, + { + "key": "0x5457ec56c73fc738dfd7ff3b89067c1ac632feb96c3f0dbf8850ed1ae9a2781", + "value": "0x5635e360189c8" + }, + { + "key": "0x24a89f59a90e033ed2c2d70155d431730facb3bef1a4e8265c877e6e7efa844", + "value": "0xae9efc38aefa2" + }, + { + "key": "0x1f409fbc06daa4d3fb86915e326f965f13ffab887b7e88d75e67b343f9d6a09", + "value": "0x17147731b0608c" + }, + { + "key": "0x7380093719a5ca22265c1ac3ba424c5d661f17f54305f410a74c3e815c7ceac", + "value": "0x11e617439446d" + }, + { + "key": "0x1c443ec48b88be24b5ab373438471bc6979d6682b529104ef12bf02b92a1b67", + "value": "0x5904b2a5a3979791" + }, + { + "key": "0x34f73df68e41816f4705b999fd9936bb67e74c5fafe0f2ebedb01e62f2aaa1a", + "value": "0x1ce3347b313ec0" + }, + { + "key": "0x265b51683e92ead6c7a6bc8a853d093e41421f4dc61d74a74b194182196ae59", + "value": "0x8d450c41a59d0c4" + }, + { + "key": "0x3e6b0989e98a92870d8adc93c47b66012be07d88c18215ede84003f41bd5a8b", + "value": "0x2dd049c53cd818" + }, + { + "key": "0x24c86bd5d54046e2f819ad5cbb9c4ae9cd7847a3a4c496e305bec938b0847f7", + "value": "0x1d0390c7bc82ede" + }, + { + "key": "0x5a19f995f76152a326123a9464685541b0697a76091710eda6416642a877745", + "value": "0x374a899d14b3c4" + }, + { + "key": "0x5c30a09c84f95e5a14c724df84a27aae24a67d20be0b9eb7ee70dff6af50c9f", + "value": "0x2c47077005aadf7" + }, + { + "key": "0x166130563ae6ab94d9e00b8fd4ae5d1bf585092a1600061a74a3d5954d08be5", + "value": "0x433571c95447d4" + }, + { + "key": "0x1b7e2095fde35ec725c9c69e68fc436bcee206451664a5d395a055f01a4542", + "value": "0xb25b458d4ea095b" + }, + { + "key": "0x4e06349c92198ca69c94b3c25bd7dcf9d4081d199b87a6dd98ec8d6bb8ea9c", + "value": "0x54101b8079b6593" + }, + { + "key": "0x61ae574ce0f54d68d83899fcfbe073d7e95bd59a0997649a62f46393b50e832", + "value": "0x978a0c9c1816136" + }, + { + "key": "0x2677b1a3331434bcda6889ff1d729c64786efa1195ceab2d1662857b0363e49", + "value": "0x8ebcfd488187536" + }, + { + "key": "0x3d3ae9c2513683f83cffd32f1b55f2ed2bcdef71591e54fd94b3a7410fcee0a", + "value": "0x0" + }, + { + "key": "0x5350bbaed2e5c775f513eaa016d87163780d3161f7df1fc317c2eab49cd62ed", + "value": "0x6a9cfdf4a07ba7" + }, + { + "key": "0x6c0e497c7778d73ca13170223e09b4b0f91820504b75211c07fc57365ffc52f", + "value": "0x8e99c0673b4906" + }, + { + "key": "0x71c196421272ec4fa87fb657064d3d2b74538f0b8b8644f90d0d7c944983b9a", + "value": "0xaa2b6e6f551dd" + }, + { + "key": "0x7b29dabf3f1155805333954606efcfaed70d716fcf69d0d270bf23ced7b1ffd", + "value": "0xb9e69b1bcde098" + }, + { + "key": "0x52c876c2cfd7abac1ceaa34278a31a2dcdc73753fa6e9e3081ab2470038b2b8", + "value": "0x80ec8494895e71" + }, + { + "key": "0x7bcd382428d0a60441bc6420ec5dbff0ef13baad699c7b06a5c9ccab40feab6", + "value": "0x7deba07ad993c" + }, + { + "key": "0x5afd8183a0693f43e5b0df4cebcbee0c2e10d17f0143487f6642c9709b6a7f7", + "value": "0xf9c8e2f432ed7" + }, + { + "key": "0x200dcffeedc92c26597ab450b7036556158faef4aa2b61c355d5a3a5494458b", + "value": "0xce34647a19de8" + }, + { + "key": "0x5c7afb30230efd10e6b0b054f8076b736f3eb642abb1a1d1053c08baf97f33d", + "value": "0x2a59254467bad2" + }, + { + "key": "0x369f752ab77bae83965a4441870ca03b17b3dc6aa8161e867211a69fd081c51", + "value": "0x9a0cbf86abab29" + }, + { + "key": "0x5c9eb87f859ed4317df981c9bb27fb1f910eb2878e6f57c5300de07267576e8", + "value": "0x10a9943ae1e8b5" + }, + { + "key": "0x1fcc08181dd2da46cd5918639fd037bb6de682517fc8b664ebc5f991ba5a384", + "value": "0x1d36d1e5806c4f5" + }, + { + "key": "0x75944a6a3f7601672881359362ec17c9d1296f857a7f2bbd2577f611c43eabb", + "value": "0x25d48615c996a518" + }, + { + "key": "0x773fa9f4d2f7c3d7d4a2247b1cb67e3091a53d024ad91fbba9b1996e6ed0463", + "value": "0xa68bb54651b348" + }, + { + "key": "0x6a8c0e67cd69f25f9107ec4a0ea60736464b39dd3e7e7361237364f31fa78db", + "value": "0x55492e52218b1a" + }, + { + "key": "0x2b9f134fedc89748f7a67525121e01ba084455fee3347768e780040ffc271e7", + "value": "0x9de320bf74f1" + }, + { + "key": "0x999246f1b7b1b1d4a844aee2a1a8c7bb9a1b3c25a10bc293fce8e144989599", + "value": "0x198d40d5287b8d" + }, + { + "key": "0x51462eb2072fd943d9507f3eb706475b8782a0b2e8e25108131f589b72cf54d", + "value": "0x2581376c4d70e" + }, + { + "key": "0xd72ba2d9a036c47c2a85ea43ad6d749f1df5fc2f75b7ccf30b01da9b859c6a", + "value": "0x565cd2cdba66be" + }, + { + "key": "0xd926e26b20e28495b94adc7b6cd14466d994a4c86a687f5b07c47e6db2da4d", + "value": "0x4199e4c55568efd3" + }, + { + "key": "0x1c0d06bd7060fec0ae69b82cb9dbed198512b21e28f74090aed0092ad8497f1", + "value": "0x902573550586a6f133" + }, + { + "key": "0x2cbcb37cda697c24a0e80280187b5080f1e6947537118ae532d7279b76bdec4", + "value": "0x234145b4a5e19847" + }, + { + "key": "0xdeb535c18c50db2297b3febff490af42a972af00185705355db663271fde1b", + "value": "0x139ed596737826" + }, + { + "key": "0x1616c2861603ece945a82de03e5ebbb40762a796b12e835c2267de3cff94952", + "value": "0xafb5b00e78f11" + }, + { + "key": "0x3e16683db14eebdaa50dce56a1044668b1a59620f8683f234c02e57413215d", + "value": "0x1fa97a82ca384" + }, + { + "key": "0x41ab16fd8e86aa7721e204c45791a31bda0d9b96fbc68393fe1879b1819a511", + "value": "0x2febab219deb3f32" + }, + { + "key": "0x6074837b7ac1a7f99df4b6cd8799e0660daf3d439c0e9724d7818b7f8b3e28b", + "value": "0xb7b6e20c9302e" + }, + { + "key": "0x7301c4f90fe6606a2004bcb07c21d86b05b0f9f9983c0abfec1053848f8f2b1", + "value": "0x3a0f95703f097e" + }, + { + "key": "0x18fed7834ee967311911d57deea47a37a48556305a110ea6863b6d38d5f9678", + "value": "0x1b0ebf4ef0483b" + }, + { + "key": "0x10e26aea5f15cc57abe9164f1ed1aa499b55d2f137adef3bd49a3e06301c7d5", + "value": "0x25f4ac0264b18000" + }, + { + "key": "0x79d9c4c8571265c53e983218cdddfcb9ca42ef0e203f38e9990e3a455cfd302", + "value": "0xfb656792f3d095" + }, + { + "key": "0x2b37b0d90d6730cde7ea32367bab601df6c01a0c6ce3b0a8c44af134995e210", + "value": "0x453dd5649cc624" + }, + { + "key": "0xf963692e8b5270be661fb56c16d7638462e901d0603f77dcc07fc81a42af2a", + "value": "0xae8b88ab2a14f6" + }, + { + "key": "0xaa3c5a4ae58646f857d65e1fa97163e25ef2e1bb9a03260e8db54db91d0e2b", + "value": "0x1321a42a80b" + }, + { + "key": "0x1ac24a7b768a9aa561b0e38c32a9ea35e909d2cac583b69cb68aca28b72aa3c", + "value": "0xbe2c3f23935b1c" + }, + { + "key": "0x49faadb6b39b4913f0b1d9310d49ad12e6ad62fa1671db41e371ea2cd0450da", + "value": "0xea5c14406bb2bd" + }, + { + "key": "0x2aeee57e3179a5b1d7cfa868e586408dc1c66424302c508cc702e7df09ec00", + "value": "0x65c2e696681761" + }, + { + "key": "0x3ca4869fc2c2e20c676f6ff8ab38fb9ce7ec0784069f483ca90b1d15c0b3a74", + "value": "0x4ee2d6d415b85acef8100000000" + }, + { + "key": "0x5fdf971868bba85dfd60a725d142bc82a991fbec1947c31b85925597d9b9bb9", + "value": "0x23fabff09d80b7" + }, + { + "key": "0x584fd2096a2e4407036870a16719a5fbcbf5e0ac129e8d52d7407f797ecc64a", + "value": "0x280a5a60439e85" + }, + { + "key": "0x3c510986699890a63f2eefa4a5e1aabe05133761a36bb2774508a6f074a0627", + "value": "0x4e32c60bd747fd" + }, + { + "key": "0x110e2f729c9c2b988559994a3daccd838cf52faf88e18101373e67dd061455a", + "value": "0xb1aa6ded93f6b59df9b" + }, + { + "key": "0x3bed98af2f2a951f633f3c32520659f1505e4f053c3f29664acda817eb27e45", + "value": "0xa2fd70b7b0424" + }, + { + "key": "0x30dd8d392d6c765768217a26fcc2591ff29bcc703ec01de0d460ab4595fcc71", + "value": "0x5724ea0ec9d2934" + }, + { + "key": "0x21291b90804d9b28ddff8d558fb24387a0e226d33cb75e9344147ee0636d9bf", + "value": "0x40e2dd97b4b148" + }, + { + "key": "0x82df99399c81c5d047102f91ed6d6e5a25d0ebbcc89471ea3ef7ebad239607", + "value": "0xaaea8d3f7437a04" + }, + { + "key": "0x32976cb353ca8ed756b1f127a1dd66f530ac347856c9a67d886366abfeb0d42", + "value": "0x32330a9bd72d12004" + }, + { + "key": "0x36fbd8a35a6e285e9d7aa1bf6dba2cea8ea56473af8e93b8f786403faa6c12", + "value": "0x2207a25852c19c" + }, + { + "key": "0x13fcf322febb7272a2691e99724e92ece7cae9137d4442ab12105d2d62ff85a", + "value": "0x467bf951eac595" + }, + { + "key": "0x3713bab4467fdf657069badcb2d75f21c64f43f2e011c9d32255678d94b7eed", + "value": "0x9c1d4fbe456b9f80d7" + }, + { + "key": "0x1d46e593c07d148fdf2f391245884f108ae66890feb8a9947214ef60c9a1090", + "value": "0x2b9c8e9c87842c" + }, + { + "key": "0x63ecb374177ad3aaa28dab33d7c69176d788db559cbe6fb54c5324038de2438", + "value": "0x327c2fa61f0159" + }, + { + "key": "0x36b4cd37bb769f7eb567506d7e698ef4b9d087281b5042eaf644bfd8a59f15f", + "value": "0x18de76816d8000" + }, + { + "key": "0x39a007943ea45f7c9f73fe13cf9eee26e5844828ae7c191ff4f08906f64f951", + "value": "0x114c6001762517" + }, + { + "key": "0x146521d834a245b0c3325ca5bd55effeaeb21dd7466cf506d12595011c275ec", + "value": "0x62fe72dbb8b505" + }, + { + "key": "0x4ec50f63c9dbaa8da9a7a270af6ee37ce5f4043d7a27f3e13c0c90f0d080efa", + "value": "0x1d4f54392400a12" + }, + { + "key": "0x191173181be33f69c8ff052d500f988c1e4e2273b50a17241b98d4a499ac8af", + "value": "0x1f11e8bb088d51" + }, + { + "key": "0x622de76fde18c4ad7b9b4a4afb34709868be06146472b53cbe2f74c91f0a001", + "value": "0x698a032fa1730" + }, + { + "key": "0x7667eca993a06da12c4d640c1cd3deb1fb26aa08c25a690f6139e5d74750d8f", + "value": "0x6a95b23516b370" + }, + { + "key": "0x36edf716fee368dc5b1d513a03aa8ec659a4c117199936849897f205f2d907e", + "value": "0x413bdd371e20f" + }, + { + "key": "0x5797885c2725f592c5504f676e254c5d2564e03ae0e44af30a9b400d2626845", + "value": "0x690afecc964ace" + }, + { + "key": "0x3c0dccd55ab26726d4a9c5d844da2004fb0941ca63e910c1971929697c8d121", + "value": "0x4aad2262e5831b" + }, + { + "key": "0x141f95f017119e011b00403c3448dd7497063e2375e7df22d65d3436bb46b47", + "value": "0x89cfef3b13cd7" + }, + { + "key": "0x36e008accf5696f1002cffa271fde440d7e4d73861756cea55e9476f071c46d", + "value": "0xa860e5bc4463b7de7" + }, + { + "key": "0x62f560b58cc9849d6286cb988c471dc0450eba7255a4247208c9af87ac54f0", + "value": "0x30e6b973c64553d" + }, + { + "key": "0x31d785e3cbbb1c72405f6200be875457f60a9d04734e291a807556165721fa9", + "value": "0x1431cb316c183f" + }, + { + "key": "0x43c91473256328ffe6e6c34a16fcee5395bc63d2797f64f6e4aa7a357195b2b", + "value": "0x41355af83e980" + }, + { + "key": "0x39a3200e942ffc3f7ce9f031920458f516b20bfa82d18acee616a1e8ce9c846", + "value": "0x1606d69dd341b5" + }, + { + "key": "0xe9bd753a67ca2c8a40a5902d7611f5eb4985d3f572fbad0a100c460cef54", + "value": "0x85d798ccf038bb" + }, + { + "key": "0x5aaf48b5e4ca2b8274ee5586e47bdafcc6a279415d9a3e3cfb9c869bb397788", + "value": "0x2de356abe123cd" + } + ] + }, + { + "address": "0x1b5bd713e72fdc5d63ffd83762f81297f6175a5e0a4771cdadbc1dd5fe72cb1", + "storage_entries": [ + { + "key": "0x36929a188a04ab62bd04e6c8570fd537cbe704208d61f647023bfa4dc58df37", + "value": "0x0" + }, + { + "key": "0x47b7a2a1e09d304a3e6d92fe27e1280c56bfc931da78c91a3ef1a50089dbb2e", + "value": "0xfa5ab54cf0f6a9d" + }, + { + "key": "0x5728052634af786a29590e94e9c604fb4aa9e499cbe18df7f0a064e083e0c82", + "value": "0x10d66b8b144f0df4" + }, + { + "key": "0x33c2b8d82426b3ddea58c6a9e5982f3de49fd2574cc5a051abc856822ede56a", + "value": "0xcbbeed6b8da29d4" + }, + { + "key": "0x438650d5bfac8bec8df76b94366f4774565ab7295280c572eb12296ae968d9f", + "value": "0x145a9848b" + }, + { + "key": "0x7d99d75132ca703353e6994dff949f1cba965e43754aad7e201a2c6a3f1725c", + "value": "0x0" + }, + { + "key": "0x6b5ec96d066072f05daba42a589e5a0f6d08257b1feb9a7bbf2fe20d532e63c", + "value": "0x0" + }, + { + "key": "0x4f3417591710891c3a59640190dfd1534e2dfdbbf6867803a0d4e4c5e69da6a", + "value": "0xdd805e22f06d4cc" + }, + { + "key": "0x351f611461b9233a3dfead76c7266ff9da0344ba798cea3253aa700c7defbda", + "value": "0x4797371cc1873" + }, + { + "key": "0x22c4bf46b2070636acdfb199cb04b00b5ee68b789d9bbb65fc268634cba5658", + "value": "0x0" + }, + { + "key": "0x48be3692ab3e9e8bd4a134a7b958b4e69bcb00a71d4f58c22f9311921f12bcf", + "value": "0x1cdd9b93ad11feb" + }, + { + "key": "0x2d3a3f7bb59900ced1bc84e5b6b0ecf8433ba1d55b208b2d24765d9ab8b469a", + "value": "0x946b2ddb5694802" + }, + { + "key": "0x7e14fd6000d4fcc713e12b6f663ec138ba8479619b5dce677f30f367cbe8ab7", + "value": "0x3212667af2caf3" + }, + { + "key": "0x4dbad9918314c1c82698955fa70fd826eaadd4f42c6b73b0709e383b24a9844", + "value": "0x1248621007b980a9" + }, + { + "key": "0x2da4aac028f10b6a15ba0e2b48e103d14857939e8a6ccfae8d276c7ad5fe0b5", + "value": "0x7fbe8fe1cb7f431" + }, + { + "key": "0x5b49e54b6904675c29525f217593e9454054b62146fb1a5d733410efadf7b1b", + "value": "0x2810cb5c" + }, + { + "key": "0x1d430bf138ea7c30cc4ba41938ff8081ecede809c1d7bc56b785784aceaae08", + "value": "0xbc3625ab94dbc1f41a" + }, + { + "key": "0x1eac5fa65039185eedf86909d861e9ccce7c6a860d266e5ca52dc1791026782", + "value": "0x0" + }, + { + "key": "0x9f31593996a0a8f30c653bdc6a5b08935bae29295146522d93783a9dbea066", + "value": "0x6a6912b76065" + }, + { + "key": "0x3d37be32ade4c0be4db94442ebd1a405f62b504a3f2461b295bf8ff4806c026", + "value": "0x12d66d95c2cfd624" + }, + { + "key": "0x364327a1df0f2eb067d39ec1d2dadb773e3a720465e87eabd8d37c589101cb3", + "value": "0x10d407f47b72e290" + } + ] + }, + { + "address": "0x247444a11a98ee7896f9dec18020808249e8aad21662f2fa00402933dce402", + "storage_entries": [ + { + "key": "0x70176b9e5d57f7532fbea6c667116906048b6eb94c49a0ad5cc7b51273d184c", + "value": "0xb" + }, + { + "key": "0x2da4e0cdfc95f8ad825f6010d32f4fe1ed447414fc651dabf42f2de5d8ec38f", + "value": "0x1" + }, + { + "key": "0x7d0c3344c72c0a1d2f423f3b4a9a6918177d73b731a20d785282a2d8746e52a", + "value": "0x1" + } + ] + } + ], + "deprecated_declared_classes": [], + "declared_classes": [], + "deployed_contracts": [ + { + "address": "0x61281febf3f4c4a37fd701e9a7d55751bc33fcc58e881e62a9b7addaa04a7f3", + "class_hash": "0x1a736d6ed154502257f02b1ccdf4d9d1089f80811cd6acad48e6b6a9d1f2003" + }, + { + "address": "0x136910b27feeb0d898bef1786746528380ffa35ce4f1167a6872d89fa62b6d4", + "class_hash": "0x3530cc4759d78042f1b543bf797f5f3d647cde0388c33734cf91b7f7b9314a9" + }, + { + "address": "0x6d791d7100e445cb6eaf79f395765dd81869f6b3c4aefb8039a0e54fdac5f75", + "class_hash": "0x25ec026985a3bf9d0cc1fe17326b245dfdc3ff89b8fde106542a3ea56c5a918" + }, + { + "address": "0x5d1ea877c135deda37c55aa05b9fb9ca6d5d86a077f8a9895a269dd60c827d0", + "class_hash": "0x3530cc4759d78042f1b543bf797f5f3d647cde0388c33734cf91b7f7b9314a9" + }, + { + "address": "0x408f08dd87750f5218c029563db17cbcde313ff44c7d01d15be3cc9d5af60bf", + "class_hash": "0x3530cc4759d78042f1b543bf797f5f3d647cde0388c33734cf91b7f7b9314a9" + } + ], + "replaced_classes": [ + { + "contract_address": "0x388ffcdddab0eb1518bbfa0599e32c195398c76a476afda1b0f75bdb64a6de7", + "class_hash": "0x1a736d6ed154502257f02b1ccdf4d9d1089f80811cd6acad48e6b6a9d1f2003" + }, + { + "contract_address": "0x68b6e5d3d9bf46c5451a3a5e921500adece742c8419117a6412aeb8527c8ebc", + "class_hash": "0x1a736d6ed154502257f02b1ccdf4d9d1089f80811cd6acad48e6b6a9d1f2003" + }, + { + "contract_address": "0x5a64a8169d195cf20626ed99fa9dd7c8ff72bbe50aa4ac0f40e599d4b362750", + "class_hash": "0x1a736d6ed154502257f02b1ccdf4d9d1089f80811cd6acad48e6b6a9d1f2003" + }, + { + "contract_address": "0x72291cbfd4d8be52134884cb34ee0b268258cb8ac209bfc185bcb91db1e7999", + "class_hash": "0x1a736d6ed154502257f02b1ccdf4d9d1089f80811cd6acad48e6b6a9d1f2003" + } + ], + "nonces": [ + { + "contract_address": "0x5c21b7aa62231f8d99e266d18fa00062403f4ba071ba95d174179f04d744014", + "nonce": "0x3e" + }, + { + "contract_address": "0x1c17191276440ee2e338dbf9f5406966b16531dcf4702a37a5aef8344078208", + "nonce": "0x1b" + }, + { + "contract_address": "0x15dcbeeaa53c6f2aa4559a880175540255c6d9268d7dbefa79cf575b03f21a3", + "nonce": "0x3" + }, + { + "contract_address": "0x1e670f4f40f11a6488dd8bacffaaea26b04b7dd4f775a6df504e8b76cef85fe", + "nonce": "0x1f" + }, + { + "contract_address": "0x384b35211f922c5c5cf6eb257c0f0e83203dfb9975ddc20cf0b091c759a03e5", + "nonce": "0xb" + }, + { + "contract_address": "0x85a1896d13213afc7bd7495b50e9fbe11daf5595979a4896e05c15c4ee36f7", + "nonce": "0x21" + }, + { + "contract_address": "0x1f5adbb3ecc4c3432fd23df11140928e106694bac9ae2fdd18a78fd294de57c", + "nonce": "0x1c" + }, + { + "contract_address": "0x6f6289f8f7acad8b81f72803ff226e1f7706f9bf4faa945823292098407ecce", + "nonce": "0x1a" + }, + { + "contract_address": "0x12bc25706bb8554512f924d903b0cb6e240c60a93c94d5fe1ca45b1fb693ddd", + "nonce": "0x51" + }, + { + "contract_address": "0xca1c554b6ccbc949e59ddda8ce0ddbb9b5dcfc462bd3bf612d046c50bc628d", + "nonce": "0x1e" + }, + { + "contract_address": "0x328f8e8d0c5ed1f171a4cdae748a473fb6d82d274bba6392a11fe0d5837776", + "nonce": "0x41" + }, + { + "contract_address": "0x3d9c29ed4bc69f1f10cb299344924c034259947260187319955153125733855", + "nonce": "0x10" + }, + { + "contract_address": "0x207a638e512242596e6d7d8f24f906548ee17812ca76c41aa2e1fd842cdb9bf", + "nonce": "0x18" + }, + { + "contract_address": "0x6ed626e921310dc500fff72c212b80d4597bec4b82aba0599e1a18b6b57c986", + "nonce": "0x1a" + }, + { + "contract_address": "0x37a18d80a3995b13d1508f9d3b0fc6d376d00109564ad211673b82a6817abf4", + "nonce": "0x40" + }, + { + "contract_address": "0x136910b27feeb0d898bef1786746528380ffa35ce4f1167a6872d89fa62b6d4", + "nonce": "0x1" + }, + { + "contract_address": "0x6f7e65a93049d04a6d83804fec7025c5d5ddb32d79d13a44e95c165ec63c7e4", + "nonce": "0x38" + }, + { + "contract_address": "0x128fcbd5ac8a98eedc4d83c968bdea25ad06c78341425c6050e7d0feeb697e2", + "nonce": "0xc" + }, + { + "contract_address": "0x14f9f06ff5981e5f6915b8cf0a959c5e5e3effdecd37bc51d94404501d49e25", + "nonce": "0x20" + }, + { + "contract_address": "0x3b64cb597b23d970c0b9df5bff789a9e8b49162ca8721c734e1a3668fcb02e7", + "nonce": "0x30" + }, + { + "contract_address": "0x42726d87c7dfb36f5254791dfe79ba792ac147ffa6035f6ba355585087e6b31", + "nonce": "0x41" + }, + { + "contract_address": "0x793d1793e8515ad16432e7873f264182c7d8a1c6e45bb2d025cb63afa923124", + "nonce": "0x17" + }, + { + "contract_address": "0x25a504d884a2c50d34d578e97c47ca10b43e3ae92b81ef15656b16d22016bf", + "nonce": "0xc" + }, + { + "contract_address": "0x152f1614e347d2f0bc7d652da7d32c27f9ee38984ad910875545ab268dfbb2f", + "nonce": "0x14" + }, + { + "contract_address": "0x25e23874d051a17bd1d145e3634970d1bb290dae5c0d73386d4598278861715", + "nonce": "0x185" + }, + { + "contract_address": "0x60790b386f44b999831a7a60d20258eceb8b0f21e49423028de616ccd312c96", + "nonce": "0x19" + }, + { + "contract_address": "0x2da0f2b8fac36863f131efeb65d73ca148f5ea55fa358bd6f552c226501c901", + "nonce": "0x5a" + }, + { + "contract_address": "0x414c0f350113323c2609804c86227cdeb34258c828aacabab3cc913554ca153", + "nonce": "0xd" + }, + { + "contract_address": "0x185c52379e556e9cd7d290be97712a491c328dd4e91ae7f3ab86adb7896c816", + "nonce": "0x40" + }, + { + "contract_address": "0x5197a6af3f299cf77c9ed5d814fcd5ffc7b807265333c903b1f99286f9ca01d", + "nonce": "0x17" + }, + { + "contract_address": "0x6720786d99c4c40a0d8641d596ece3878d8785701b586691a6a7855ac8c748e", + "nonce": "0x18" + }, + { + "contract_address": "0x575e2f0650aaf9964cf0da778dd40b7487f6f14189c761118b40e81e21a2cff", + "nonce": "0x18" + }, + { + "contract_address": "0x3a58bdee7b0a258829801a7f14230eb88b86301b263fe9fb5f40e7993a37165", + "nonce": "0x14" + }, + { + "contract_address": "0x2983472c8683388fc73f88139cb3b5c04da42a89008188129886c38ef1eb8bd", + "nonce": "0x26" + }, + { + "contract_address": "0x1cae80284ab2b27915c06ad966a54303d30eccb3b70764e1573ecd68747218c", + "nonce": "0x18" + }, + { + "contract_address": "0x6c7b10697e6c4441f04acb26096badc253e329e099754811d948aae4c680564", + "nonce": "0x22" + }, + { + "contract_address": "0x7f72dd7c0ab8a9deb014d6f03da0c9b9a1116c950241c3ad5d36292118e0772", + "nonce": "0xb" + }, + { + "contract_address": "0x34b4cfbf7cfe83b0888fcac9cd34c435e50a44fcd112b8373959097d10465fe", + "nonce": "0x3e" + }, + { + "contract_address": "0x993c091f0d0480c9f793ca2bf4c0ba4a6ae7c8fc52aeed7a2604b43269254f", + "nonce": "0x2d" + }, + { + "contract_address": "0x167487a5ea04a1dce2023efba67175c649970f8ce49757a2e2f0ec236dc64e2", + "nonce": "0xf" + }, + { + "contract_address": "0x459b565077fc9a00f7968898cf691412f9bcb420d0fbb2cc1cebfd85323ed68", + "nonce": "0xd" + }, + { + "contract_address": "0x21e0abccdeebd618b3a0793af890829e624822a670dfd97e85c708df289abe1", + "nonce": "0x19" + }, + { + "contract_address": "0x18d79e2abcc734a550e41bcc60b37f2823e2c73936d4a8cabc9d47ed7ab3163", + "nonce": "0x15" + }, + { + "contract_address": "0x8af26540a9c49923159b852395b1297c1089202311fd75c77eec5b4418372a", + "nonce": "0xd" + }, + { + "contract_address": "0xd52115230ac0de286850b2dffb328c00999cba010691f78d6f74754317afb9", + "nonce": "0x13" + }, + { + "contract_address": "0x1b74669b4eff662b5fefe9c12f7960d8ee782960e9aed7106d689e88921fab2", + "nonce": "0xb" + }, + { + "contract_address": "0x17f991315097a9a21f8666bcd813615446e5886e9b6532735e2b69c315ed33f", + "nonce": "0x5c" + }, + { + "contract_address": "0x41969fa75160f181a0129c5971563c9db4548a2b32ff764efcf2c45f367f7d6", + "nonce": "0x22" + }, + { + "contract_address": "0x242635a04dc647e028658e0718780d4203b356653eee7fa2b0b266f050019dd", + "nonce": "0x4" + }, + { + "contract_address": "0x7f158f583c7c8fc21f35ba5b086c931464ee23aa0552f861243d60c3a64526c", + "nonce": "0xd" + }, + { + "contract_address": "0x176fddca3f94edaa29b98cea39a68b76aefccde75e4aef5f482835541c7a6f4", + "nonce": "0x6" + }, + { + "contract_address": "0x4316e91e4eb07fb73de074d193d5da11a0a535a829993ad7b4600cc589b1b0b", + "nonce": "0x1f" + }, + { + "contract_address": "0x6dd58012ed1a77371c6ddd467ace0bd1f3b2e766d1623d02dcc7be330eb6a47", + "nonce": "0x29" + }, + { + "contract_address": "0x2f12e3edb139414e9b3dd2ba2ce848c05700e9bbb2f47181f6e1fea1bb5ccbb", + "nonce": "0x10" + }, + { + "contract_address": "0x77df21fde1005cb749f85d1ad085b0358d1a09d84e4dae3f96eaed0fe6b9371", + "nonce": "0x56" + }, + { + "contract_address": "0x33725fb40e1a4246f5eabd5f3127f2d150141d93e36abf4f97051527aabb5b3", + "nonce": "0x18" + }, + { + "contract_address": "0x29ace44cae516282d9dd250722da3f5a6d4e925db7bdf5e161e997cd2864eed", + "nonce": "0x28" + }, + { + "contract_address": "0x21c985ef91240bd3a69153d34859754df4a33fb10a2d612eb08c2ea34e1a7d2", + "nonce": "0x15" + }, + { + "contract_address": "0xd97bc41c23f4b15b74a4b0443dfeed051d8f3e28a77ebb7d9ed74e5801483d", + "nonce": "0x7" + }, + { + "contract_address": "0x4d5758f8c016f9d4becb3798d80b2e74bb8744cd2f1e23f487ccfe90445ae83", + "nonce": "0x23" + }, + { + "contract_address": "0x6083599966bf4dad4f3ff547b3f96a57fb50e97d65201d60fcb5c6ecb8a9893", + "nonce": "0x28" + }, + { + "contract_address": "0x6b5af5e69896e6a8a7162b066d7c78c52c85bf2cda704f1ddcc4ce75ef34ef8", + "nonce": "0x20" + }, + { + "contract_address": "0x423508635cf395398567422c7d1f6ba102f25e115cc3c8d2b2b5faba26ce74a", + "nonce": "0x5c" + }, + { + "contract_address": "0x508a4ff58295dbef862abe3234e5acedc57f8def087f1b07272b4541edfbffb", + "nonce": "0x9" + }, + { + "contract_address": "0x676562b29a115b718a79a7496c2a1996d789b3f87c544b2476e6b36a6e61a29", + "nonce": "0x12" + }, + { + "contract_address": "0x1664f7aaf4a3f72814f828f98dfca15b4a555ebcc63b9651903d2cd034d2588", + "nonce": "0xf" + }, + { + "contract_address": "0x5076c2ad76e56b24072798d1a18fa1f460d1bc3cc136a34859e4fc2c00c64e9", + "nonce": "0x25" + }, + { + "contract_address": "0x3da4c90ef3ccd4a7e0bc6c4139a7a9d35f0dc17d0a1dd2c8df3520f11d57653", + "nonce": "0x3" + }, + { + "contract_address": "0x1f509ea65d63edb0fdb2f28c74630393334b1f4b045397d5b4d765382ef9762", + "nonce": "0xe" + }, + { + "contract_address": "0x5250b56265f724618a90acf327c45d9dd6271de682a768039c6ccf88c6adbf5", + "nonce": "0x47" + }, + { + "contract_address": "0x71ea5151ae74d60aff9f39b5d2d7b2be50079208a2d4cf468f419aec9af18cd", + "nonce": "0x52" + }, + { + "contract_address": "0x6c7919259808f142f071b4d159cc5966176e1cddd9c465d64110111fce55ec4", + "nonce": "0x37" + }, + { + "contract_address": "0x2e8454f19a77ef28502b1d9dff74c506474ff0e1a21eb919023a3d200f7e623", + "nonce": "0x5" + }, + { + "contract_address": "0x35fc38cd032a6f6c338944dc41bfa6bf8e3bf56f3e262e4c7120c7ef56f4def", + "nonce": "0x21" + }, + { + "contract_address": "0x1ecba75c3feb29ef4fab06122a17b7ef9162c1b9ea4a5487140ee80a9f35daf", + "nonce": "0x8" + }, + { + "contract_address": "0x32c99033f99260006590412fd519c0d26049d2fefa546c5c4ae50c617fbc2ee", + "nonce": "0x15" + }, + { + "contract_address": "0x2fc003a0260946abc69633e4ef31f03ccd22c901b4af9de6c63b74635eb1cb7", + "nonce": "0x4" + }, + { + "contract_address": "0x669ccac65ea54f9db3118cc0135306d70dca350595e04fa025af6993ed90c4a", + "nonce": "0x11" + }, + { + "contract_address": "0x1648d3ba795b8a596afc3eaa407559f9707257d6585cf4d05aeb3d6402726a1", + "nonce": "0xe" + }, + { + "contract_address": "0x60e1770d9c3216687a394bdfb27edbf390233760cb8e95cab952938d886b08f", + "nonce": "0x28" + }, + { + "contract_address": "0x1ce2f16d382b646cc3960738c1137c75fd6a29f9e283e3fa10513332a26669c", + "nonce": "0x11" + }, + { + "contract_address": "0x5201ea4dd69f9bbf561e9b4c2c7f9709a1b96bf216d311b60c4a54371dd1738", + "nonce": "0x7" + }, + { + "contract_address": "0x6813d8ff50bd367569b685b2281bc8961fd1746ab60ea5f16af1dd5c47891bf", + "nonce": "0x13" + }, + { + "contract_address": "0x62819c26df4821c42a638bc1059ed5fdd747b5ba8745f5fa8f89069d901f41d", + "nonce": "0x4" + }, + { + "contract_address": "0x42ae6db06206ef2475297ea9d7ae41c16f8aea7381aa08a428c0b4fd67aebbf", + "nonce": "0x4" + }, + { + "contract_address": "0x408f08dd87750f5218c029563db17cbcde313ff44c7d01d15be3cc9d5af60bf", + "nonce": "0x1" + }, + { + "contract_address": "0x5e904bcfdc42e08b0d9a98ce4f1a24486c01b45c0e61b60834a80a49d15f677", + "nonce": "0x25" + }, + { + "contract_address": "0xb8ac914346625dab1f4fb186d7110a19c6e49856f6bd352f259edba08a3e27", + "nonce": "0xa" + }, + { + "contract_address": "0x28c33d71f1d49e31ebb1739d46c718017c12b929888dc4269bfba15222931e8", + "nonce": "0x5" + }, + { + "contract_address": "0x6da9492c537c0d774474d34b1cec00da3ca2d774a1302de9c8bff0a9deeff4", + "nonce": "0x53" + }, + { + "contract_address": "0x3a197aa034674f9d27b7aba01e9479ca5adeb0504855bb39252c86048131eb5", + "nonce": "0x10" + }, + { + "contract_address": "0x6918de0f4e305e6501962867513a07ba70c54ad258085ba0a6a62cc8cbeb575", + "nonce": "0x8" + }, + { + "contract_address": "0x72291cbfd4d8be52134884cb34ee0b268258cb8ac209bfc185bcb91db1e7999", + "nonce": "0x13" + }, + { + "contract_address": "0x583cedc3226bec710925c0013c248268499d9a81a0d345e0843e1cd44dba6b5", + "nonce": "0x22" + }, + { + "contract_address": "0x388ffcdddab0eb1518bbfa0599e32c195398c76a476afda1b0f75bdb64a6de7", + "nonce": "0x13" + }, + { + "contract_address": "0x690d1dec308c40d9426440c96af3e1b1d31fc4ee8935ca35d7f57604283c894", + "nonce": "0x11" + }, + { + "contract_address": "0x6d791d7100e445cb6eaf79f395765dd81869f6b3c4aefb8039a0e54fdac5f75", + "nonce": "0x1" + }, + { + "contract_address": "0x3f7c1e8f76877127b5bfd4ce39bab7f63d793024d2ac436ada4657af72bbbdb", + "nonce": "0x12" + }, + { + "contract_address": "0x4ee5ef283df69389fcc850e20dc6b1207f058a5bc3c991a9609d16f3013efab", + "nonce": "0x4" + }, + { + "contract_address": "0xabccbd0d7dda5629761e064f771ea51f2babdb8740d38a8acf39c6358f048", + "nonce": "0x27" + }, + { + "contract_address": "0x7e0ff6a3b133ba5bad78a5bdf0465b065e7a9b62384b6b74f9a2f7803f49036", + "nonce": "0x16" + }, + { + "contract_address": "0x62341497b412f0aa8e2f5bf3fbc4724a704338066b19a5b490b56f8f48ccb2f", + "nonce": "0x17" + }, + { + "contract_address": "0x4e68830fe8be1f79ed4c00289e64dd057905981a1840ad5c5e0aa24f22815ca", + "nonce": "0x18" + }, + { + "contract_address": "0x4142dd4be719a72edb17e97bcd603b576f02d5b0d148b5f02525784a169d98d", + "nonce": "0x37" + }, + { + "contract_address": "0x179aa76deab144ef996ddda6b37f9fb259c291f7b79f4e0fca63e64228a53f5", + "nonce": "0x1ef02" + }, + { + "contract_address": "0x2ad8829fd3ce54f776bb260277c3325268eefbd480c8e0745d5a47950269951", + "nonce": "0x4" + }, + { + "contract_address": "0x5a64a8169d195cf20626ed99fa9dd7c8ff72bbe50aa4ac0f40e599d4b362750", + "nonce": "0x16" + }, + { + "contract_address": "0x4cb6ebc671eb059831541fa8c269ddac84a57535b34c12e3d907f82e3e4bea3", + "nonce": "0x2c" + }, + { + "contract_address": "0x57771f24bdcfc85ee64c0ef104cb12313fb3b4617817163a0dd18f66de3d356", + "nonce": "0x24" + }, + { + "contract_address": "0x3ca7b52f806c6200f26d61c2b3ad082c698614cedfc7f4e31a58913dea37bfe", + "nonce": "0xf" + }, + { + "contract_address": "0x39e0e699b6dbd66675319832b405e9fc717c709d1df1bdfaa5ca96d394ebc78", + "nonce": "0x2a" + }, + { + "contract_address": "0x20cbfb7cadb604429719da134eee0d0f889abd5dfca89b84cc14c5f3184f37f", + "nonce": "0xb" + }, + { + "contract_address": "0x7ea646f7b616340984647eb4bd8a3151e62dc0d9e10315374f1205a66a887c4", + "nonce": "0x33" + }, + { + "contract_address": "0x347a413305735f5354eb8f90e4102b29392a99eebba52a3eb048041a14abbdd", + "nonce": "0x8" + }, + { + "contract_address": "0x77582f956544534f20c7fe066e8ba4b5dcf13f4889f151ad584d5f948d3aae3", + "nonce": "0x34" + }, + { + "contract_address": "0x70166c74c096faf839648a018ee8063d0e64a023ad2b0503a1d177e824f243e", + "nonce": "0x53" + }, + { + "contract_address": "0x45e9b8f2e677f8d872fe7b87cffdc798e9864126c89864a7026b5765d2fcef3", + "nonce": "0x56" + }, + { + "contract_address": "0x55a1279f91ea6b4fdcc28038eff829eb58228b888ce5236cdeea0a624fa0ea1", + "nonce": "0x19" + }, + { + "contract_address": "0x1a056c7b5d4b981439a870ad94c126101aadad9d37f9c50aa899ca31872fac0", + "nonce": "0x2" + }, + { + "contract_address": "0x423fa685549c80eefb33e3c5c4613bb3429bb88bf85d116534b84b4694f6b58", + "nonce": "0xa" + }, + { + "contract_address": "0x10db94f197387dfbf3fb1b0d0f6f0985e12ff871711606286ae152b456b376", + "nonce": "0x14" + }, + { + "contract_address": "0x175dd442db5dd1430d9e4bd1c5bcff6293da2e71754dd2bc8b0b49d68dafcbb", + "nonce": "0x17" + }, + { + "contract_address": "0x63d6c807bd1f74ec456abb1d8b0a42dc90df1a64f3f974bc943a66bb5b1e58", + "nonce": "0x8" + }, + { + "contract_address": "0x5b593d7157976e09247ecae125153813437c0ed1781464972f09fd7cb3040f3", + "nonce": "0x17" + }, + { + "contract_address": "0x5d1ea877c135deda37c55aa05b9fb9ca6d5d86a077f8a9895a269dd60c827d0", + "nonce": "0x1" + }, + { + "contract_address": "0x61281febf3f4c4a37fd701e9a7d55751bc33fcc58e881e62a9b7addaa04a7f3", + "nonce": "0x1" + }, + { + "contract_address": "0x467470244db5f6d88b21478b71b3d32739706794efb2c380303acae7d2ca0fb", + "nonce": "0x5" + }, + { + "contract_address": "0x375944b09f0350e5c2340277cd38bdde3cfdb7b84ef7fc3c2aa22ee6c799a35", + "nonce": "0x21" + }, + { + "contract_address": "0xe7afa8a24a553396847ab357df55df7d95c7e51ecd483b2990f61426e364b4", + "nonce": "0x71" + }, + { + "contract_address": "0x4e3e27bdbcdf5b1152a4b097892ed893edcc5cfb03fcef7e2d9342a1dc020a0", + "nonce": "0xf" + }, + { + "contract_address": "0x69c06405546cbb672717d1e7980b95300e5e6301f3220f316935741c811f398", + "nonce": "0x18" + }, + { + "contract_address": "0x114fbb727a4604aadf8fbda4512728b12a7ff74fdeeb861d6ddecbec7b2d594", + "nonce": "0x11" + }, + { + "contract_address": "0x50350d68e7e354615775ef383d32bc2d04338aa4041256c7085cf5769259b78", + "nonce": "0x13" + }, + { + "contract_address": "0x1d1c15c607230c876e96be6a0fee89b2e173cb848e26bbbb1ef7a6d5d6e7ed4", + "nonce": "0x12" + }, + { + "contract_address": "0x4433d90fad089fabd1316c3675920c05da9109336670342c34ae0a27dcf1d44", + "nonce": "0xb" + }, + { + "contract_address": "0x7c703a2cea0c5f38100f9d66d2cc70f6d6ee1d6be9c43b4f7a0fa980ffcd732", + "nonce": "0x31" + }, + { + "contract_address": "0x3335df4e4d01cbf05f38855b76689d6ad4f67e26d4111d811be51dd296e94f1", + "nonce": "0x8" + }, + { + "contract_address": "0x2020d23fe919a209b1e745884b3e80513476b46e73bfba9e06234d11251453c", + "nonce": "0x13" + }, + { + "contract_address": "0x45481816d8a277adecb5214f0d60415c6ca9c9f27460d53971b690f22c8c9b0", + "nonce": "0x19" + }, + { + "contract_address": "0x3c00ded573f01f8eff7d5e67cd53d0a42e367b9ab4da9d2e7580a47c5c444ac", + "nonce": "0x1c" + }, + { + "contract_address": "0x2bf75693b6228b597488dbaf7ca55edaf9373fd4a012c7b54eef2c1a86f22f1", + "nonce": "0x30" + }, + { + "contract_address": "0x1674b3231d8c6ebd8cca067d8778cbafae9b4d3c5af68d59a97c3c458823c77", + "nonce": "0x7" + }, + { + "contract_address": "0x68b6e5d3d9bf46c5451a3a5e921500adece742c8419117a6412aeb8527c8ebc", + "nonce": "0x14" + }, + { + "contract_address": "0x55098bdfda961f539769be571a591796937e86d0d5329de0d076575c3b7c35", + "nonce": "0x26" + }, + { + "contract_address": "0x61a6c8eb1e5cc8f6033f779723efeea7d7c8a157b8f3fa91c40b97bc91b5707", + "nonce": "0x63" + }, + { + "contract_address": "0x6d07fd67fec855bcae14f28429ea875532715ac19fa04efb8edf11c394e6cd2", + "nonce": "0x11" + }, + { + "contract_address": "0x29e10c4fc9c7bdcd966185c1914871bd70834adfb100ff11f807d7fe503494b", + "nonce": "0x2a" + }, + { + "contract_address": "0x46e2cfecb05dd08ba75bcb134d92c53b2bf163cef84836c3a7747bb6bf04854", + "nonce": "0x2" + }, + { + "contract_address": "0x519b85c7331ac2aeb4cade1f2222404a174a8e0b3ee747169c66e2f40bee99", + "nonce": "0x14" + }, + { + "contract_address": "0x418948d83033b3a7ecdf9170cc334aaa48ea1c8e0d8926e855f9dbbd107de48", + "nonce": "0x57" + }, + { + "contract_address": "0x5003e44a7fd883cdfeddababf43aa3a59432fc83bb8a13d4ea164dec0afe510", + "nonce": "0x1b" + }, + { + "contract_address": "0x6b045b4f0de83159e5bd65bc1434a59ac043ad5d61b4a1e9485a89a50ed48a7", + "nonce": "0x21" + }, + { + "contract_address": "0x552d67025769b09ca108414300e43986ac2470e29a3d06f4233dece1475d6f", + "nonce": "0x25" + }, + { + "contract_address": "0x385020dfa38ee8a559cab4ca42e1ac64908c2e35bf2e2b2cf207beefa4f37ff", + "nonce": "0x19" + }, + { + "contract_address": "0x3cf0925a4b9c4ebde97970f449f1de1e4be55e744d9f88fde5b7924ee4a1dbb", + "nonce": "0x1a" + }, + { + "contract_address": "0x5bfe664214ad911ba618f717523ed2f089d4bcff9e3e1bb65ed26969bbb48f4", + "nonce": "0xaa" + }, + { + "contract_address": "0x1448b4eb934eb79410d7abb8467b5cc190078119f74c24c201baed4cad98cea", + "nonce": "0xe" + }, + { + "contract_address": "0xb8e757d56ec5491ec9b035d66a6754a075a8be07a6b2e98cf70ab794b534e3", + "nonce": "0x2" + }, + { + "contract_address": "0x66d8d61bb85464c291c00deb7eae860cdfc4082cabde9610748dc94adddf9f0", + "nonce": "0xf" + }, + { + "contract_address": "0x7f04d1308182f7f5852249c277474ccce27a8fc1e3c0110a34e0d0270b26bfc", + "nonce": "0x63" + }, + { + "contract_address": "0x2609ba6641ffd0c129fb14cd524fba0a84ec0713ceae05a43614ffd668c769f", + "nonce": "0xa" + }, + { + "contract_address": "0x47d5788081f93242204357c1d893138ab1065293e9278eb63abfb030f3e2c5f", + "nonce": "0x18" + }, + { + "contract_address": "0x1cb1fd41a68a36365a2a576d424ef2a57bf928602fc5a315bab4286ed391d1e", + "nonce": "0x12" + }, + { + "contract_address": "0x67b4d6fec279cf80ce0910573406a03eabc7e612f4ad5a752107ac4bfb83592", + "nonce": "0x13" + } + ] + } +} diff --git a/e2e-tests/artifacts/program_output_238996.txt b/e2e-tests/artifacts/program_output_238996.txt new file mode 100644 index 00000000..9dc75ff7 --- /dev/null +++ b/e2e-tests/artifacts/program_output_238996.txt @@ -0,0 +1,102 @@ +1822922502232419837250886949706477034225078151827907081290472545297754056762 +1575975341976033587828397293328945422807168398550414997080377553292877673504 +238996 +1338520627571051121654124025202042913813489381715816541993765995406348479957 +671483050609816861429812414688707376174032882875357307847551691140236175837 +7 +3256441166037631918262930812410838598500200462657642943867372734773841898370 +993696174272377493693496825928908586134624850969 +4 +0 +1051195669891659433555637051801932554623347152093 +307000000000000000 +0 +88 +993696174272377493693496825928908586134624850969 +3256441166037631918262930812410838598500200462657642943867372734773841898370 +1247820 +1285101517810983806491589552491143496277809242732141897358598292095611420389 +3 +2703378999549632419301897627932541816250740708707798580500072430987523754698 +11114229349496715 +0 +993696174272377493693496825928908586134624850969 +3256441166037631918262930812410838598500200462657642943867372734773841898370 +1247821 +1285101517810983806491589552491143496277809242732141897358598292095611420389 +3 +1143387524800542912827323660214641581984816946811867156195570217140464801355 +128500000000000000 +0 +993696174272377493693496825928908586134624850969 +3256441166037631918262930812410838598500200462657642943867372734773841898370 +1247822 +1285101517810983806491589552491143496277809242732141897358598292095611420389 +3 +3496794549129298843272925358385643343914338801679783374153674383329039463443 +41747368794231730 +0 +993696174272377493693496825928908586134624850969 +3256441166037631918262930812410838598500200462657642943867372734773841898370 +1247823 +1285101517810983806491589552491143496277809242732141897358598292095611420389 +3 +2275328500449361401852439083133519412445303435877185954682932199340280534232 +809800000000000000 +0 +993696174272377493693496825928908586134624850969 +3256441166037631918262930812410838598500200462657642943867372734773841898370 +1247824 +1285101517810983806491589552491143496277809242732141897358598292095611420389 +3 +2398504191038257754602083118044408419011945436568671774709183397196672882094 +800000000000000000 +0 +993696174272377493693496825928908586134624850969 +3256441166037631918262930812410838598500200462657642943867372734773841898370 +1247825 +1285101517810983806491589552491143496277809242732141897358598292095611420389 +3 +1597456322245318876737870449155828097073464928197293858582694865169026585761 +6910000000000000000 +0 +993696174272377493693496825928908586134624850969 +3256441166037631918262930812410838598500200462657642943867372734773841898370 +1247826 +1285101517810983806491589552491143496277809242732141897358598292095611420389 +3 +2156992103548378709439156869380283072682215287835224552808562473636240237268 +1299000000000000000 +0 +993696174272377493693496825928908586134624850969 +3256441166037631918262930812410838598500200462657642943867372734773841898370 +1247827 +1285101517810983806491589552491143496277809242732141897358598292095611420389 +3 +2384796211375691500906214678988290645567986753928375202953551583049477672140 +10454952155062996 +0 +993696174272377493693496825928908586134624850969 +3256441166037631918262930812410838598500200462657642943867372734773841898370 +1247828 +1285101517810983806491589552491143496277809242732141897358598292095611420389 +3 +2083028049574058891691341847693575636689286278981463916743720322874352362635 +129500000000000000 +0 +993696174272377493693496825928908586134624850969 +3256441166037631918262930812410838598500200462657642943867372734773841898370 +1247829 +1285101517810983806491589552491143496277809242732141897358598292095611420389 +3 +2724390671094763747228216104750955256481898495701067776080492422659412539271 +4719000000000000000 +0 +993696174272377493693496825928908586134624850969 +3256441166037631918262930812410838598500200462657642943867372734773841898370 +1247830 +1285101517810983806491589552491143496277809242732141897358598292095611420389 +3 +2732531119861745145492580393321309303646146194169251696076657349465120407109 +6570000000000000000 +0 \ No newline at end of file diff --git a/e2e-tests/artifacts/snos_output.json b/e2e-tests/artifacts/snos_output.json new file mode 100644 index 00000000..b0cfffad --- /dev/null +++ b/e2e-tests/artifacts/snos_output.json @@ -0,0 +1,12 @@ +{ + "initial_root": "0x7D7E0C5772392D15F3F0C9CFF6DFE549BE29250462485F80D7ECBBC283256CF", + "final_root": "0x4EC6744B24853BDEC273225D76232DD0A342535816FFBD578CF8A5B3D1F2AE6", + "block_number": "0x9EF2F", + "block_hash": "0x7FBECAFB986506E1EC0D529A1A706B1FF810EC48CF71BDE18825E111D1211FF", + "starknet_os_config_hash": "0x5BA2078240F1585F96424C2D1EE48211DA3B3F9177BF2B9880B4FC91D59E9A2", + "use_kzg_da": "0x0", + "messages_to_l1": [], + "messages_to_l2": [], + "contracts": [], + "classes": {} +} diff --git a/e2e-tests/src/ethereum.rs b/e2e-tests/src/ethereum.rs index 31131a36..dcdf8436 100644 --- a/e2e-tests/src/ethereum.rs +++ b/e2e-tests/src/ethereum.rs @@ -1,28 +1,49 @@ -use alloy::node_bindings::Anvil; +use crate::get_env_var_or_panic; +use alloy::network::EthereumWallet; +use alloy::node_bindings::{Anvil, AnvilInstance}; +use alloy::signers::local::LocalSigner; +use std::str::FromStr; +// This is the transaction for updateState : +// https://etherscan.io/tx/0xacc442468b2297ea3fe7aee63f3dac0816625f3f0fd7ba074217316a25658355 const BLOCK_TO_FORK: u64 = 18169622; -const ETH_MAINNET_URL: &str = ""; pub struct EthereumClient { anvil_endpoint: String, + anvil_instance: AnvilInstance, } impl EthereumClient { /// To create a new Ethereum Client (spawns a new anvil instance) pub fn new() -> Self { + let eth_mainnet_rpc_url = get_env_var_or_panic("ETHEREUM_MAINNET_RPC_URL"); + let forked_anvil = Anvil::new() - .fork(ETH_MAINNET_URL) + .fork(eth_mainnet_rpc_url).port(8545u16) .fork_block_number(BLOCK_TO_FORK) .try_spawn() .expect("Unable to fork eth mainnet and run anvil."); - Self { anvil_endpoint: forked_anvil.endpoint() } + // TODO : uncomment + // Self { anvil_endpoint: forked_anvil.endpoint(), anvil_instance: forked_anvil } + Self { anvil_endpoint: "https://dbd8-2405-201-4059-e00f-b442-3c8d-7769-1c1e.ngrok-free.app".parse().unwrap(), anvil_instance: forked_anvil } } /// To get the anvil endpoint pub fn endpoint(&self) -> String { self.anvil_endpoint.clone() } + + /// To get anvil instance + pub fn anvil_instance(&self) -> &AnvilInstance { + &self.anvil_instance + } + + /// To get the signer + pub fn get_signer(&self) -> EthereumWallet { + let signer = LocalSigner::from_str(get_env_var_or_panic("ETHEREUM_PRIVATE_KEY").as_str()).unwrap(); + EthereumWallet::from(signer) + } } impl Default for EthereumClient { diff --git a/e2e-tests/src/lib.rs b/e2e-tests/src/lib.rs index 55e99e24..2d2b5fb4 100644 --- a/e2e-tests/src/lib.rs +++ b/e2e-tests/src/lib.rs @@ -6,15 +6,28 @@ pub mod node; pub mod sharp; pub mod starknet_client; +use ::mongodb::bson::doc; +use ::mongodb::options::{ClientOptions, ServerApi, ServerApiVersion}; +use serde_json::json; +use starknet::core::types::{MaybePendingStateUpdate, StateUpdate}; +use std::collections::HashMap; +use std::env::VarError; +use std::fs::File; +use std::io::Read; use std::net::TcpListener; use std::path::{Path, PathBuf}; +use crate::sharp::SharpClient; +use crate::starknet_client::StarknetClient; pub use mongodb::MongoDbServer; pub use node::Orchestrator; pub use orchestrator::database::mongodb::MongoDb as MongoDbClient; +use orchestrator::jobs::types::{ExternalId, JobItem, JobStatus, JobType}; +use uuid::Uuid; const MIN_PORT: u16 = 49_152; const MAX_PORT: u16 = 65_535; +const TEST_BLOCK_NUMBER_L2: u64 = 238_996; fn get_free_port() -> u16 { for port in MIN_PORT..=MAX_PORT { @@ -31,3 +44,84 @@ fn get_repository_root() -> PathBuf { let repository_root = manifest_path.parent().expect("Failed to get parent directory of CARGO_MANIFEST_DIR"); repository_root.to_path_buf() } + +pub async fn get_mongo_db_client(mongo_db: &MongoDbServer) -> ::mongodb::Client { + let mut client_options = ClientOptions::parse(mongo_db.endpoint()).await.expect("Failed to parse MongoDB Url"); + // Set the server_api field of the client_options object to set the version of the Stable API on the + // client + let server_api = ServerApi::builder().version(ServerApiVersion::V1).build(); + client_options.server_api = Some(server_api); + // Get a handle to the cluster + let client = ::mongodb::Client::with_options(client_options).expect("Failed to create MongoDB client"); + // Ping the server to see if you can connect to the cluster + client.database("admin").run_command(doc! {"ping": 1}, None).await.expect("Failed to ping MongoDB deployment"); + println!("Pinged your deployment. You successfully connected to MongoDB!"); + + client +} + +pub fn get_env_var(key: &str) -> Result { + std::env::var(key) +} + +pub fn get_env_var_or_panic(key: &str) -> String { + get_env_var(key).unwrap_or_else(|e| panic!("Failed to get env var {}: {}", key, e)) +} + +fn read_state_update_from_file(file_path: &str) -> color_eyre::Result { + // let file_path = format!("state_update_block_no_{}.txt", block_no); + let mut file = File::open(file_path)?; + let mut json = String::new(); + file.read_to_string(&mut json)?; + let state_update: StateUpdate = serde_json::from_str(&json)?; + Ok(state_update) +} + +/// Puts after SNOS job state into the database +pub async fn put_job_data_in_db(mongo_db: &MongoDbServer) { + let job_item = JobItem { + id: Uuid::new_v4(), + internal_id: TEST_BLOCK_NUMBER_L2.to_string(), + job_type: JobType::SnosRun, + status: JobStatus::Completed, + external_id: ExternalId::Number(0), + metadata: HashMap::new(), + version: 0, + }; + + let mongo_db_client = get_mongo_db_client(mongo_db).await; + mongo_db_client.database("orchestrator").drop(None).await.unwrap(); + mongo_db_client.database("orchestrator").collection("jobs").insert_one(job_item, None).await.unwrap(); +} + +/// Mocks the endpoint for sharp client +pub async fn mock_proving_job_endpoint_output(sharp_client: &mut SharpClient) { + // Add job response + let add_job_response = json!( + { + "code" : "JOB_RECEIVED_SUCCESSFULLY" + } + ); + sharp_client.add_mock_on_endpoint("/add_job", None, Some(200), &add_job_response); + + // Getting job response + let get_job_response = json!( + { + "status": "ONCHAIN", + "validation_done": true + } + ); + sharp_client.add_mock_on_endpoint("/get_status", None, Some(200), &get_job_response); +} + +/// Mocks the starknet get state update call (happens in da client for ethereum) +pub async fn mock_starknet_get_state_update(starknet_client: &mut StarknetClient) { + let state_update = + read_state_update_from_file("artifacts/get_state_update_238996.json").expect("issue while reading"); + + let state_update = MaybePendingStateUpdate::Update(state_update); + let state_update = serde_json::to_value(&state_update).unwrap(); + let response = json!({ "id": 640641,"jsonrpc":"2.0","result": state_update }); + + starknet_client.add_mock_on_endpoint("/", Some("starknet_getStateUpdate"), Some(200), &response); +} diff --git a/e2e-tests/src/localstack.rs b/e2e-tests/src/localstack.rs index d71071d6..8327c124 100644 --- a/e2e-tests/src/localstack.rs +++ b/e2e-tests/src/localstack.rs @@ -1,8 +1,15 @@ use aws_config::Region; +use aws_sdk_eventbridge::types::{InputTransformer, RuleState, Target}; +use aws_sdk_sqs::types::QueueAttributeName; +use bytes::Bytes; use orchestrator::data_storage::aws_s3::config::{AWSS3ConfigType, S3LocalStackConfig}; use orchestrator::data_storage::aws_s3::AWSS3; use orchestrator::data_storage::{DataStorage, DataStorageConfig}; -use orchestrator::queue::job_queue::{JOB_HANDLE_FAILURE_QUEUE, JOB_PROCESSING_QUEUE, JOB_VERIFICATION_QUEUE}; +use orchestrator::queue::job_queue::{ + WorkerTriggerMessage, WorkerTriggerType, JOB_HANDLE_FAILURE_QUEUE, JOB_PROCESSING_QUEUE, JOB_VERIFICATION_QUEUE, + WORKER_TRIGGER_QUEUE, +}; +use std::fs::read; const PIE_FILE_URL: &str = "https://madara-orchestrator-sharp-pie.s3.amazonaws.com/238996-SN.zip"; const PIE_FILE_BLOCK_NUMBER: u64 = 238996; @@ -29,6 +36,8 @@ impl LocalStack { sqs_client.create_queue().queue_name(JOB_PROCESSING_QUEUE).send().await?; sqs_client.create_queue().queue_name(JOB_VERIFICATION_QUEUE).send().await?; sqs_client.create_queue().queue_name(JOB_HANDLE_FAILURE_QUEUE).send().await?; + sqs_client.create_queue().queue_name(WORKER_TRIGGER_QUEUE).send().await?; + println!("sqs queues creation completed ✅"); Ok(()) } @@ -37,12 +46,77 @@ impl LocalStack { pub async fn setup_s3(&self) -> color_eyre::Result<()> { let s3_client = self.s3_client().await; + // putting the snos output and program output for the given block into localstack s3 + let snos_output_key = PIE_FILE_BLOCK_NUMBER.to_string() + "/snos_output.json"; + let snos_output_json = read("artifacts/snos_output.json").unwrap(); + s3_client.put_data(Bytes::from(snos_output_json), &snos_output_key).await?; + println!("snos output file uploaded to localstack s3 ✅"); + + let program_output_key = PIE_FILE_BLOCK_NUMBER.to_string() + "/program_output.json"; + let program_output = read(format!("artifacts/program_output_{}.txt", PIE_FILE_BLOCK_NUMBER)).unwrap(); + s3_client.put_data(Bytes::from(program_output), &program_output_key).await?; + println!("program output file uploaded to localstack s3 ✅"); + // getting the PIE file from s3 bucket using URL provided let file = reqwest::get(PIE_FILE_URL).await?; let file_bytes = file.bytes().await?; + // putting the pie file into localstack s3 let s3_file_key = PIE_FILE_BLOCK_NUMBER.to_string() + "/pie.zip"; s3_client.put_data(file_bytes, &s3_file_key).await?; + println!("PIE file uploaded to localstack s3 ✅"); + + Ok(()) + } + + /// Event Bridge setup + pub async fn setup_event_bridge(&self, worker_trigger_type: WorkerTriggerType) -> color_eyre::Result<()> { + let event_bridge_client = self.event_bridge_client().await; + let sqs_client = self.sqs_client().await; + + let rule_name = "worker_trigger_scheduled"; + + event_bridge_client + .put_rule() + .name(rule_name) + .schedule_expression("rate(1 minute)") + .state(RuleState::Enabled) + .send() + .await?; + let queue_url = sqs_client.get_queue_url().queue_name(WORKER_TRIGGER_QUEUE).send().await?; + + let queue_attributes = sqs_client + .get_queue_attributes() + .queue_url(&queue_url.queue_url.unwrap()) + .attribute_names(QueueAttributeName::QueueArn) + .send() + .await?; + let queue_arn = queue_attributes.attributes().unwrap().get(&QueueAttributeName::QueueArn).unwrap(); + + // Create a sample WorkerTriggerMessage + let message = WorkerTriggerMessage { worker: worker_trigger_type.clone() }; + let event_detail = serde_json::to_string(&message)?; + + // Create the EventBridge target with the input transformer + let input_transformer = InputTransformer::builder() + .input_paths_map("$.time", "time") + .input_template(format!("{}", event_detail)) + .build()?; + + event_bridge_client + .put_targets() + .rule(rule_name) + .targets( + Target::builder() + .id(format!("worker-trigger-target-{:?}", worker_trigger_type)) + .arn(queue_arn) + .input_transformer(input_transformer) + .build()?, + ) + .send() + .await?; + + println!("Event bridge setup completed ✅. Trigger Type : {:?}", worker_trigger_type); Ok(()) } @@ -63,4 +137,33 @@ impl LocalStack { async fn s3_client(&self) -> Box { Box::new(AWSS3::new(AWSS3ConfigType::WithEndpoint(S3LocalStackConfig::new_from_env())).await) } + + async fn event_bridge_client(&self) -> aws_sdk_eventbridge::Client { + let region_provider = Region::new("us-east-1"); + let config = aws_config::from_env().region(region_provider).load().await; + aws_sdk_eventbridge::Client::new(&config) + } + + pub async fn delete_event_bridge_rule(&self, rule_name: &str) -> color_eyre::Result<()> { + let event_bridge_client = self.event_bridge_client().await; + + let list_targets_output = event_bridge_client.list_targets_by_rule().rule(rule_name).send().await?; + + let targets = list_targets_output.targets(); + if !targets.is_empty() { + let target_ids: Vec = targets.iter().map(|t| t.id().to_string()).collect(); + + event_bridge_client.remove_targets().rule(rule_name).set_ids(Some(target_ids)).send().await?; + + println!("Removed targets from rule: {}", rule_name); + } + + // Step 2: Delete the rule + event_bridge_client.delete_rule().name(rule_name).send().await?; + + println!("Deleted EventBridge rule: {}", rule_name); + println!("Rule deleted successfully ✅"); + + Ok(()) + } } diff --git a/e2e-tests/src/mongodb.rs b/e2e-tests/src/mongodb.rs index 0d99020f..9f37efcd 100644 --- a/e2e-tests/src/mongodb.rs +++ b/e2e-tests/src/mongodb.rs @@ -1,34 +1,27 @@ -use testcontainers::core::{ContainerPort, WaitFor}; -use testcontainers::runners::AsyncRunner; -use testcontainers::{ContainerAsync, GenericImage, ImageExt}; -use url::Url; - -use crate::get_free_port; +use std::str::FromStr; -const MONGODB_DEFAULT_PORT: u16 = 27017; -const MONGODB_IMAGE_NAME: &str = "mongo"; -const MONGODB_IMAGE_TAG: &str = "8.0-rc"; +use url::Url; #[allow(dead_code)] pub struct MongoDbServer { - container: ContainerAsync, + // container: ContainerAsync, endpoint: Url, } impl MongoDbServer { pub async fn run() -> Self { - let host_port = get_free_port(); - - let container = GenericImage::new(MONGODB_IMAGE_NAME, MONGODB_IMAGE_TAG) - .with_wait_for(WaitFor::message_on_stdout("Waiting for connections")) - .with_mapped_port(host_port, ContainerPort::Tcp(MONGODB_DEFAULT_PORT)) - .start() - .await - .expect("Failed to create docker container"); - Self { container, endpoint: Url::parse(&format!("http://127.0.0.1:{}", host_port)).unwrap() } + // let host_port = get_free_port(); + // + // let container = GenericImage::new(MONGODB_IMAGE_NAME, MONGODB_IMAGE_TAG) + // .with_wait_for(WaitFor::message_on_stdout("Waiting for connections")) + // .with_mapped_port(host_port, ContainerPort::Tcp(MONGODB_DEFAULT_PORT)) + // .start() + // .await + // .expect("Failed to create docker container"); + Self { endpoint: Url::from_str("mongodb://localhost:27017").unwrap() } } - pub fn endpoint(&self) -> &Url { - &self.endpoint + pub fn endpoint(&self) -> Url { + Url::from_str("mongodb://localhost:27017").unwrap() } } diff --git a/e2e-tests/src/node.rs b/e2e-tests/src/node.rs index 3a00d67a..10748fb8 100644 --- a/e2e-tests/src/node.rs +++ b/e2e-tests/src/node.rs @@ -1,6 +1,6 @@ -use std::fs::{create_dir_all, File}; -use std::path::Path; +use std::io::{BufRead, BufReader}; use std::process::{Child, Command, ExitStatus, Stdio}; +use std::thread; use std::time::Duration; use tokio::net::TcpStream; @@ -26,25 +26,25 @@ impl Drop for Orchestrator { } impl Orchestrator { - fn cargo_run(root_dir: &Path, binary: &str, args: Vec<&str>, envs: Vec<(&str, &str)>) -> Child { - let arguments = [vec!["run", "--bin", binary, "--release", "--"], args].concat(); - - let logs_dir = Path::join(root_dir, Path::new("target/logs")); - create_dir_all(logs_dir.clone()).expect("Failed to create logs dir"); - - let stdout = Stdio::from(File::create(logs_dir.join(format!("{}-stdout.txt", binary))).unwrap()); - let stderr = Stdio::from(File::create(logs_dir.join(format!("{}-stderr.txt", binary))).unwrap()); - - Command::new("cargo") - .stdout(stdout) - .stderr(stderr) - .envs(envs) - .args(arguments) - .spawn() - .expect("Could not run orchestrator node") - } - - pub fn run(envs: Vec<(&str, &str)>) -> Self { + // fn cargo_run(root_dir: &Path, binary: &str, args: Vec<&str>, envs: Vec<(String, String)>) -> Child { + // let arguments = [vec!["run", "--bin", binary, "--release", "--"], args].concat(); + // + // let logs_dir = Path::join(root_dir, Path::new("target/logs")); + // create_dir_all(logs_dir.clone()).expect("Failed to create logs dir"); + // + // let stdout = Stdio::from(File::create(logs_dir.join(format!("{}-stdout.txt", binary))).unwrap()); + // let stderr = Stdio::from(File::create(logs_dir.join(format!("{}-stderr.txt", binary))).unwrap()); + // + // Command::new("cargo") + // .stdout(stdout) + // .stderr(stderr) + // .envs(envs) + // .args(arguments) + // .spawn() + // .expect("Could not run orchestrator node") + // } + + pub fn run(envs: Vec<(String, String)>) -> Self { let port = get_free_port(); let address = format!("127.0.0.1:{}", port); let repository_root = &get_repository_root(); @@ -52,9 +52,41 @@ impl Orchestrator { std::env::set_current_dir(repository_root).expect("Failed to change working directory"); let port_str = format!("{}", port); - let envs = [envs, vec![("PORT", port_str.as_str())]].concat(); - - let process = Self::cargo_run(repository_root.as_path(), "orchestrator", vec![], envs); + let envs = [envs, vec![("PORT".to_string(), port_str)]].concat(); + + let mut command = Command::new("cargo"); + command + .arg("run") + .arg("--bin") + .arg("orchestrator") + .current_dir(repository_root) + .envs(envs) + .stdout(Stdio::piped()) + .stderr(Stdio::piped()); + + let mut process = command.spawn().expect("Failed to start process"); + + // Capture and print stdout + let stdout = process.stdout.take().expect("Failed to capture stdout"); + thread::spawn(move || { + let reader = BufReader::new(stdout); + reader.lines().for_each(|line| { + if let Ok(line) = line { + println!("STDOUT: {}", line); + } + }); + }); + + // Capture and print stderr + let stderr = process.stderr.take().expect("Failed to capture stderr"); + thread::spawn(move || { + let reader = BufReader::new(stderr); + reader.lines().for_each(|line| { + if let Ok(line) = line { + eprintln!("STDERR: {}", line); + } + }); + }); Self { process, address } } diff --git a/e2e-tests/tests.rs b/e2e-tests/tests.rs index 44dc2f11..1e6cc830 100644 --- a/e2e-tests/tests.rs +++ b/e2e-tests/tests.rs @@ -2,30 +2,56 @@ use e2e_tests::ethereum::EthereumClient; use e2e_tests::localstack::LocalStack; use e2e_tests::sharp::SharpClient; use e2e_tests::starknet_client::StarknetClient; -use e2e_tests::{MongoDbServer, Orchestrator}; -use std::env::VarError; +use e2e_tests::{ + get_env_var_or_panic, mock_proving_job_endpoint_output, mock_starknet_get_state_update, put_job_data_in_db, + MongoDbServer, Orchestrator, +}; +use orchestrator::queue::job_queue::WorkerTriggerType; +use std::time::Duration; +use tokio::time::sleep; extern crate e2e_tests; -#[ignore] #[tokio::test] -async fn test_orchestrator_launches() { - let mongodb = MongoDbServer::run().await; - let mut orchestrator = Orchestrator::run(vec![ - // TODO: mock Madara RPC API - ("MADARA_RPC_URL", "http://localhost"), - ("MONGODB_CONNECTION_STRING", mongodb.endpoint().as_str()), - ]); +async fn test_orchestrator_workflow() { + // Fetching the env vars from the test env file because setting up of the environment + // requires all these variables. + dotenvy::from_filename("../.env.test").expect("Failed to load the .env file"); + + let (mongo_db_instance, mut starknet_client_mock, _ethereum_client_mock, mut sharp_client_mock, env_vec) = + setup_for_test().await.unwrap(); + + // Step 1 : SNOS job runs + // TODO : Update the code with actual SNOS implementation + // Updates the job in the db + put_job_data_in_db(&mongo_db_instance).await; + + // Step 2: Proving Job + // Mocking the endpoint + mock_proving_job_endpoint_output(&mut sharp_client_mock).await; + + // Step 3: DA job + // mocking get_block_call from starknet client + mock_starknet_get_state_update(&mut starknet_client_mock).await; + + // Step 4: State Update job + // For now use_kzg_da is 0 + // TODO : After getting latest PIE file update the code here to perform actual `update_state_with_blobs` + + println!("Orchestrator setup completed ✅ >>> "); + + // Run orchestrator + let mut orchestrator = Orchestrator::run(env_vec); orchestrator.wait_till_started().await; -} -#[ignore] -#[tokio::test] -async fn test_orchestrator_workflow() { - let (mongo_db_instance, starknet_client, ethereum_client, sharp_client) = setup_for_test().await.unwrap(); + sleep(Duration::from_secs(1200)).await; + + // TODO : + // Adding a case here to check for required state of the orchestrator to end the test. } -pub async fn setup_for_test() -> color_eyre::Result<(MongoDbServer, StarknetClient, EthereumClient, SharpClient)> { +pub async fn setup_for_test( +) -> color_eyre::Result<(MongoDbServer, StarknetClient, EthereumClient, SharpClient, Vec<(String, String)>)> { let mongo_db_instance = MongoDbServer::run().await; let starknet_client = StarknetClient::new(); let ethereum_client = EthereumClient::new(); @@ -33,36 +59,35 @@ pub async fn setup_for_test() -> color_eyre::Result<(MongoDbServer, StarknetClie // Setting up LocalStack let localstack_instance = LocalStack {}; - localstack_instance.setup_s3().await.unwrap(); + // TODO : uncomment + // localstack_instance.setup_s3().await.unwrap(); localstack_instance.setup_sqs().await.unwrap(); + localstack_instance.delete_event_bridge_rule("worker_trigger_scheduled").await.unwrap(); + localstack_instance.setup_event_bridge(WorkerTriggerType::Proving).await.unwrap(); + localstack_instance.setup_event_bridge(WorkerTriggerType::DataSubmission).await.unwrap(); + localstack_instance.setup_event_bridge(WorkerTriggerType::UpdateState).await.unwrap(); + println!("Localstack instance setup completed ✅"); let mut env_vec = get_env_vec(); - let starknet_client_url = starknet_client.url(); - let sharp_client_url = sharp_client.url(); - let ethereum_client_endpoint = ethereum_client.endpoint(); - // Adding other values to the environment variables vector - env_vec.push(("MONGODB_CONNECTION_STRING", mongo_db_instance.endpoint().as_str())); - env_vec.push(("MADARA_RPC_URL", starknet_client_url.as_str())); - env_vec.push(("ETHEREUM_RPC_URL", ethereum_client_endpoint.as_str())); - env_vec.push(("SHARP_URL", sharp_client_url.as_str())); + env_vec.push(("MONGODB_CONNECTION_STRING".to_string(), mongo_db_instance.endpoint().to_string())); + env_vec.push(("MADARA_RPC_URL".to_string(), starknet_client.url())); + env_vec.push(("ETHEREUM_RPC_URL".to_string(), ethereum_client.endpoint())); + env_vec.push(("SHARP_URL".to_string(), sharp_client.url())); + // Sharp envs - let sharp_customer_id = get_env_var_or_panic("SHARP_CUSTOMER_ID"); - let sharp_user_cert = get_env_var_or_panic("SHARP_USER_CRT"); - let sharp_user_key = get_env_var_or_panic("SHARP_USER_KEY"); - let sharp_server_cert = get_env_var_or_panic("SHARP_SERVER_CRT"); - env_vec.push(("SHARP_CUSTOMER_ID", sharp_customer_id.as_str())); - env_vec.push(("SHARP_USER_CRT", sharp_user_cert.as_str())); - env_vec.push(("SHARP_USER_KEY", sharp_user_key.as_str())); - env_vec.push(("SHARP_SERVER_CRT", sharp_server_cert.as_str())); - - Ok((mongo_db_instance, starknet_client, ethereum_client, sharp_client)) + env_vec.push(("SHARP_CUSTOMER_ID".to_string(), get_env_var_or_panic("SHARP_CUSTOMER_ID"))); + env_vec.push(("SHARP_USER_CRT".to_string(), get_env_var_or_panic("SHARP_USER_CRT"))); + env_vec.push(("SHARP_USER_KEY".to_string(), get_env_var_or_panic("SHARP_USER_KEY"))); + env_vec.push(("SHARP_SERVER_CRT".to_string(), get_env_var_or_panic("SHARP_SERVER_CRT"))); + + Ok((mongo_db_instance, starknet_client, ethereum_client, sharp_client, env_vec)) } /// To get env variables to be used in testing -fn get_env_vec() -> Vec<(&'static str, &'static str)> { - vec![ +fn get_env_vec() -> Vec<(String, String)> { + let env_vec = vec![ // AWS env vars ("AWS_ACCESS_KEY_ID", "AWS_ACCESS_KEY_ID"), ("AWS_SECRET_ACCESS_KEY", "AWS_SECRET_ACCESS_KEY"), @@ -71,6 +96,8 @@ fn get_env_vec() -> Vec<(&'static str, &'static str)> { ("AWS_ENDPOINT_URL", "http://localhost.localstack.cloud:4566"), ("SQS_JOB_PROCESSING_QUEUE_URL", "http://sqs.us-east-1.localhost.localstack.cloud:4566/000000000000/madara_orchestrator_job_processing_queue"), ("SQS_JOB_VERIFICATION_QUEUE_URL", "http://sqs.us-east-1.localhost.localstack.cloud:4566/000000000000/madara_orchestrator_job_verification_queue"), + ("SQS_JOB_HANDLE_FAILURE_QUEUE_URL", "http://sqs.us-east-1.localhost.localstack.cloud:4566/000000000000/madara_orchestrator_job_handle_failure_queue"), + ("SQS_WORKER_TRIGGER_QUEUE_URL", "http://sqs.us-east-1.localhost.localstack.cloud:4566/000000000000/madara_orchestrator_worker_trigger_queue"), ("AWS_DEFAULT_REGION", "localhost"), // On chain config urls ("ETHEREUM_PRIVATE_KEY", "0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80"), // Private key from anvil @@ -79,17 +106,11 @@ fn get_env_vec() -> Vec<(&'static str, &'static str)> { ("DA_LAYER", "ethereum"), ("PROVER_SERVICE", "sharp"), ("SETTLEMENT_CLIENT", "ethereum"), - ("DATA_STORAGE", "s3"), + ("DATA_STORAGE", "s3_localstack"), ("ALERTS", "sns"), // Sharp configs ("SHARP_PROOF_LAYOUT", "small") - ] -} - -pub fn get_env_var(key: &str) -> Result { - std::env::var(key) -} + ]; -pub fn get_env_var_or_panic(key: &str) -> String { - get_env_var(key).unwrap_or_else(|e| panic!("Failed to get env var {}: {}", key, e)) + env_vec.into_iter().map(|(first, second)| (first.to_string(), second.to_string())).collect() } From 0c89e584ff1b4630da00360167d12a292b4f099f Mon Sep 17 00:00:00 2001 From: Arun Jangra Date: Mon, 26 Aug 2024 11:09:01 +0530 Subject: [PATCH 5/6] updated code and removed redundant code --- .../artifacts/get_state_update_101038.json | 3404 +++++++++++++++++ e2e-tests/artifacts/program_output_101038.txt | 102 + e2e-tests/src/ethereum.rs | 4 +- e2e-tests/src/lib.rs | 7 +- e2e-tests/src/localstack.rs | 9 +- e2e-tests/tests.rs | 2 +- 6 files changed, 3518 insertions(+), 10 deletions(-) create mode 100644 e2e-tests/artifacts/get_state_update_101038.json create mode 100644 e2e-tests/artifacts/program_output_101038.txt diff --git a/e2e-tests/artifacts/get_state_update_101038.json b/e2e-tests/artifacts/get_state_update_101038.json new file mode 100644 index 00000000..13d96db5 --- /dev/null +++ b/e2e-tests/artifacts/get_state_update_101038.json @@ -0,0 +1,3404 @@ +{ + "block_hash": "0x7e86905d8401e757036a8d8850cb33c1e6aba578b9a4bf7d170578dc4616164", + "old_root": "0x276262918797c8411337eff3031f3c9be9474c98456946f04815012d31d43e3", + "new_root": "0x1837124f12f043c7fbe5d037ea10d4d2f2469e61b9e936d658dbe7fa81b476a", + "state_diff": { + "storage_diffs": [ + { + "address": "0x2b690fae7153819735def799afa9b758e6dfaa658f1d56a3fb20400a1d0608a", + "storage_entries": [ + { + "key": "0x3ad34fad732b51fe0d1a1350f149f21a0cf14a9382c9c6e7b262c4e0c8dbf18", + "value": "0x2c2b8f559e1221468140ad7b2352b1a5be32660d0bf1a3ae3a054a4ec5254e4" + }, + { + "key": "0x10064c6264bc3361adf2b26fd01272239473906cb7bbc183b1819e75188451", + "value": "0x3030302e3030302e303130" + }, + { + "key": "0x1f23302c120008f28b62f70efc67ccd75cfe0b9631d77df231d78b0538dcd93", + "value": "0x1" + }, + { + "key": "0x1f23302c120008f28b62f70efc67ccd75cfe0b9631d77df231d78b0538dcd8f", + "value": "0x7a2a065c9b0237a9cad28fb384f64573d4680f96bf4f87b866003259e48ef6c" + }, + { + "key": "0xb4243e5c50fe8b1ec72787e8bdc6875d9e0ac2cf01c216a38498dad9576672", + "value": "0x54600" + }, + { + "key": "0x387c153462d309d4b5a1fc5f90e85bc59eeb2094b2fcef46513ea5f1d1c9b85", + "value": "0x1" + }, + { + "key": "0xee2b6c840729051a0d06a623ff093dcc01e03f2e0c0e07114ac2440394b889", + "value": "0x2b690fae7153819735def799afa9b758e6dfaa658f1d56a3fb20400a1d0608a" + } + ] + }, + { + "address": "0x6ac597f8116f886fa1c97a23fa4e08299975ecaf6b598873ca6792b9bbfb678", + "storage_entries": [ + { + "key": "0x793f962f9290b264b6a99b55e864c846c59979b339217de59870fab7845fa8d", + "value": "0x1" + }, + { + "key": "0x793f962f9290b264b6a99b55e864c846c59979b339217de59870fab7845fa8c", + "value": "0x668cd1ac" + }, + { + "key": "0x793f962f9290b264b6a99b55e864c846c59979b339217de59870fab7845fa8b", + "value": "0x51f6daaa8d0ad2bf68d2e4cc50b89c50a528a5d3680919e569c03a94a49bedb" + }, + { + "key": "0x793f962f9290b264b6a99b55e864c846c59979b339217de59870fab7845fa89", + "value": "0xb050b65ec6" + }, + { + "key": "0x677a9b52214934be11007e238d174c7aba4646df5a938030b69a76b122968b4", + "value": "0xce31cfe97" + }, + { + "key": "0x490c4138db032023c71ac3514e0151b573d734c4d48e262858d7c327a9c4c7e", + "value": "0x4ff2edcc6ebc" + } + ] + }, + { + "address": "0x1b5bd713e72fdc5d63ffd83762f81297f6175a5e0a4771cdadbc1dd5fe72cb1", + "storage_entries": [ + { + "key": "0x48be3692ab3e9e8bd4a134a7b958b4e69bcb00a71d4f58c22f9311921f12bcf", + "value": "0x21b8d40071eee8" + }, + { + "key": "0x6cfa444e1c02ae94eff0c186d36669e5ea35155a96e79a28bcae52f820cf0f4", + "value": "0x703e60c65eef" + }, + { + "key": "0xde810d84bf5d06039a887001528dc9e5dfbfc5846032fd09138154e082e316", + "value": "0x19934b44722f9c" + }, + { + "key": "0x1d430bf138ea7c30cc4ba41938ff8081ecede809c1d7bc56b785784aceaae08", + "value": "0x2f337a8c1ce850d054" + }, + { + "key": "0x77a674877db341db577af440a511c4b7967e0ee660922265cffe3e9f3620164", + "value": "0x5fe85a40ac3289" + }, + { + "key": "0x647fb195d0a085703199dcadda97bec25061ff58da57d45b174ea3626d8556d", + "value": "0x209c49dfd1d" + }, + { + "key": "0x71b3a3d5198a2879f804a0d0c37e5737b57e07dd9a14a80259dbee36993bb13", + "value": "0x62278bce5d9bd3" + }, + { + "key": "0x2e416c95185e9dc2253991a2488100e1e7891c714d6afd14af31ece5d0840ed", + "value": "0x5ed78c7327708d" + }, + { + "key": "0xbb91039e53b611facaf874c6c874873887a19c115b32f2db8e2bd0d5a64bfd", + "value": "0x33b8155ce6e8c" + }, + { + "key": "0x28446ceb22075a1ff9efd743e1148467eaf4656aa1acfe73fdafd0be7671672", + "value": "0xe5eb2f6872" + }, + { + "key": "0x59d1bcd42c5a9980739f2c71891adcdeec63457036aa17510aec5f7e8b9aa4", + "value": "0x75386e4f0b5a35" + }, + { + "key": "0x5f29806c2ef9edd0a076d5fb927d3bd1643189ac0720db3a2088892f336fc17", + "value": "0x12bb61a0a1a1dec5" + }, + { + "key": "0x360c72aafd23e8ce29af6e09722c998735d42cbce4694998e883852df6d9db7", + "value": "0x1255aa8ddd46ed3" + } + ] + }, + { + "address": "0x14e644c20bd5f9888033d2093c8ba3334caa0c7d15ed142962a9bebf36cc7e0", + "storage_entries": [ + { + "key": "0x110e2f729c9c2b988559994a3daccd838cf52faf88e18101373e67dd061455a", + "value": "0x158ce32af43ea92e67" + }, + { + "key": "0x39d1faa8c2150a09fb2e231aafcd53581dbe68535d1833a500d71f11d909e39", + "value": "0x20afa0ad9890a0be" + } + ] + }, + { + "address": "0x480258f58d43fb73936f803780047a0f6d0a563697d80bd3f95b603f9c8b1c8", + "storage_entries": [ + { + "key": "0x254b0a38c1e3e7ed86f4fb2dec42238eeddcbc347bc4f29fe2f62853c81f830", + "value": "0x1" + }, + { + "key": "0x289b711483b9bb553fd9242ee03b3f206bbe3e059aca881905014ef3b1abcfd", + "value": "0x1" + } + ] + }, + { + "address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", + "storage_entries": [ + { + "key": "0xad20fd94e67e84c968fcf804742cc9fb074386df4aede8b1b154cf81ebd21b", + "value": "0x11619180d118f" + }, + { + "key": "0x7a9019cc74a5c7af38f494a1df7f3ff359976b3f3f517d425abb42412b776ba", + "value": "0x25849e5e2d3c" + }, + { + "key": "0x76bd6a0639853b76bb254cf3cb42ef5484f0c55a809d296af1c9e5be0ac501c", + "value": "0x418f148700358d" + }, + { + "key": "0x292b01ad53973802851f4362e55aaa58f96f5e0c3b957ea06482a420f84f8be", + "value": "0xf1ce668d0b125" + }, + { + "key": "0x35af65165c578290e1708a549d33418e1f9b04e070b7e65665f0d64f90a0401", + "value": "0x1453c251f7275c" + }, + { + "key": "0x5023bfc0a67e8e98d7ce1071493ffa61a08581659b532d70b15b489730580da", + "value": "0x12530fd1207e6a" + }, + { + "key": "0x41fdc76bf0dc9a3163300fbf57a4e30efc97071ae2bc80fdaebefb0c105226e", + "value": "0x6cceb01302bfa" + }, + { + "key": "0x689e98abfa996338c020f84672fa68031c74af9a2412ce914c7c24a7319d4ca", + "value": "0x11bb2de8c91e0" + }, + { + "key": "0x16577a890481a2e6776312ed6f6760bd165b51123d80d2bbead3447d05b58e5", + "value": "0x1a372cf85b0ed6" + }, + { + "key": "0x206ec56781272d0ce117f66b26a5fcd3e774add29fff4023c2a1b1f8a23832c", + "value": "0x1195f9b3280fc" + }, + { + "key": "0x35076560a6d336fc7906949142070a39b9292f8a5faa29f9662d15bff81d8c9", + "value": "0x112de6aeed357a" + }, + { + "key": "0x6cbd3ef161ca40cc746e8cc3baf4da4a1adcde5c80d89679b498f48fb1009a3", + "value": "0xcb6ecae1371fa" + }, + { + "key": "0x6a6a1821f45e7172dfb0f0e2f51750270df833fb66605dd5470810ccabdc75d", + "value": "0x15e8f6a3f5f3a1" + }, + { + "key": "0x1671adef483709788a335cebe4ce51384f04a073b99c0b48a71517ff14b223d", + "value": "0x4fd64f17a745ac" + }, + { + "key": "0x74fb5b61b91770f8841a8101769e9f6f9085fe8536ad632469a100c25caeca8", + "value": "0x3ef1399f11b6ff" + }, + { + "key": "0x64ebcd9ad50d27ccaae8bf8dd3eba0399f7522435c57df8221c07fc4b6f6a32", + "value": "0x138afbaa98f1aa" + }, + { + "key": "0x2564b5e83fa668ec411c89c0abc8a1a07f32d2741d19b8354d5ad4995316aa8", + "value": "0x1765028b76619c" + }, + { + "key": "0x1c0d06bd7060fec0ae69b82cb9dbed198512b21e28f74090aed0092ad8497f1", + "value": "0x42d9269fe88c4b271e" + }, + { + "key": "0x7f9e7c8139411698bf61fee90d5a77d22f149c1c0ce106c857877664b8a9097", + "value": "0x118e96cc6d774" + }, + { + "key": "0x2e1bd4dc69d5e25eb3127ac16aed3d963c5bde74a6b260c673a24e5c1525201", + "value": "0xffffffffffffffffffffffffffffffff" + }, + { + "key": "0x2e1bd4dc69d5e25eb3127ac16aed3d963c5bde74a6b260c673a24e5c1525200", + "value": "0xfffffffffffffffffcab4fc0294a9be5" + }, + { + "key": "0x7c1826e2d125f774203fb2520de37e15a8e66a744269c5bfcf2a726ca115f0d", + "value": "0xa191b17aa430d8" + }, + { + "key": "0x1c2644caa906cb6534efef86e9327bfadad2c05fdb2afbb68775b2237e1bbd8", + "value": "0x2d8e996f8be279" + }, + { + "key": "0x68989d1331cea02d5dbeb831f6e91999903fb052af5c9ecfcc5688de48225", + "value": "0x1ba1a88c5749f9" + }, + { + "key": "0x3320964dfdde12e148738fb726741b85189081980366decea9fb3d10dba6df9", + "value": "0x11a699f98669e" + }, + { + "key": "0x5466ff833671f0fb9775af8926fd94fabb1f6aefeb20497ae385d085223cdad", + "value": "0x567b2535a68d9" + }, + { + "key": "0x13cbe4973d24e8ba62792dda2cb997830162a44d8e57c4e88645bb3fea13e4c", + "value": "0x96249e253f14ac" + }, + { + "key": "0x7d4718cb20e88943ff0aa4f23cea67b11d159c13866fe5946d0bd27eeeaeb7d", + "value": "0x130bbb355e701e25" + }, + { + "key": "0x4e99e0df9e4e29049ae29f99f8796066150f5db442cfbabbdb6ada6fdcbc14a", + "value": "0x13f0122ac94bc" + }, + { + "key": "0x496ff72fd15e22fc1f6eae827bfaa638d603494e868cbb31be62c7662e86a46", + "value": "0x62018a590a845" + }, + { + "key": "0x4a7422bb4d3e41e5dd470d51ba4dc5e4963b8ef7e4f16d2612732959ea8f50a", + "value": "0x35a889e0ef1e3" + }, + { + "key": "0x6ebcfff42af3b563ee9580a7b5ad37b997f3ad025691201fa49f0851ee3b964", + "value": "0x2f5e9d4385c3fd" + }, + { + "key": "0x36e008accf5696f1002cffa271fde440d7e4d73861756cea55e9476f071c46d", + "value": "0x56a35b4213be3b0b3" + }, + { + "key": "0x1af2de636aeec34b8cb1fa5d6c60ab21d124fc59e46f4cc0b7e77f6a0269741", + "value": "0xcb824834f13357" + }, + { + "key": "0x5ca181489992d8745f56eed91444b4a1f5fe2104d148e7f02275153b796d45b", + "value": "0xffffffffffffffffffffffffffffffff" + }, + { + "key": "0x354cd7a876888171d6e317d7225935c7622c5458c69e20a6e0667bfe6349b46", + "value": "0x52d0d8b6b04b9" + }, + { + "key": "0xa0e68a69c7305d9fbb19bbb8b5e44caadfaf7dd51e0a815b12006495513826", + "value": "0x1078008df8b57a" + }, + { + "key": "0x5abd4bf47a2a2cefc3b9346b6f0b370ee26b1d7d7bbbe92f5396d72ae39fa8", + "value": "0x54385e0905765b" + }, + { + "key": "0x3b74261c5d853e43ca2f1092004bc60ebbd4ee9f36ef29941c71f75908420d7", + "value": "0x0" + }, + { + "key": "0x54240225081f804f7672a54ab591312a6dfe11954aa4c0d25053619620c6bfe", + "value": "0x16357a4034891c" + }, + { + "key": "0x2f50ed74306b0693c83ba763085e1fd9c173a6fae153afe3453e56fe07d9195", + "value": "0x461a8262c4625f" + }, + { + "key": "0x2a471f904a2979048992789a0525053ed465775ab4981d4dc25e329b8b9893d", + "value": "0x78187babfc1287" + }, + { + "key": "0x5190fbe54f648bef852967cb4368d3cb976fda68858e25dab7e9e8f9aa3bfb1", + "value": "0x14386131b292e0" + }, + { + "key": "0x7f34f87c276ff04d68e01c777f56ef4f7d2ba23f4eb216b56396f65ec3fec93", + "value": "0xe038f3da0973b" + }, + { + "key": "0x6e8ea382fe1fb90f4df42f72e4123d01158f235cbb743dd32b678d3b5cad2c3", + "value": "0x81394891b05289f5" + }, + { + "key": "0x1b72395413c3b69d4a883e26323ddda81598c431eed0fc31c289c4a4e83eb4c", + "value": "0x3d7ddad1fc52f6" + }, + { + "key": "0x367f9cf6e20bb4ddf615ed836572e4c5daa8cd7dd727049a573698f28b534a1", + "value": "0x20bd53f26df37f" + }, + { + "key": "0x5496768776e3db30053404f18067d81a6e06f5a2b0de326e21298fd9d569a9a", + "value": "0xe66272c7ed6643aaf" + }, + { + "key": "0x72972accbc82688e0659913d61a3ee8aab461b2c49a971b82b3d2467ced720e", + "value": "0x117bf6f8779fb" + }, + { + "key": "0x6e7fc1138b0f5028a141da3c9dceb4104c0b3ef63bbf5bdf746fffe1cf3051b", + "value": "0x1797ad73c4b9bb" + }, + { + "key": "0x399ca1bc7e1158cb8cfe243a9d4e91fcd681283066762649a2d5041fe544c02", + "value": "0x1737598eb5ca6d" + }, + { + "key": "0x52532273a6dc19cdf3601e1aceabe4b740aeb48ebb27ac03f0732c7593779b1", + "value": "0x11996843be21c" + }, + { + "key": "0x646114178e1abbced986fec3ed17b6b70443811267a98ed731b10da54fcc9a0", + "value": "0x11816496c93b3" + }, + { + "key": "0xd73bffd1aaa8e8152e34277c0c0847081622613d14f0c2e5992f01064c2109", + "value": "0x8e7f25a4e2699" + }, + { + "key": "0x69ef7fb1f80a828a36ecb625e90ef38d127d5b38bd05035c015091d6eaff4d5", + "value": "0x274163614efb210db" + }, + { + "key": "0x1c89b5028db8f9363e2ecc597aa0afed760c562ae167e4f01e8b8f998f6e024", + "value": "0x2c3487394ed" + }, + { + "key": "0x60e609445683d3fac756a4470b54363d31e8c17ccb206675554cacf7b612106", + "value": "0xc4d80092f23547" + }, + { + "key": "0x54ee9bca9838eb5684276cc0f2a2dda239afede06798c068d769b55c347ed17", + "value": "0x1905b3fc4d0e9c" + }, + { + "key": "0x720ced0254b8bebab7d8ced7e7b024789bb945e988c1cf5af9bc1688cd1f56c", + "value": "0x188a12fbd209bf" + }, + { + "key": "0x5eb1f2ec3f811bd7cc7ff22633e0ab78738fab0426ed79288f39b2d56cd9a91", + "value": "0x156ed1d9f77bf1" + }, + { + "key": "0x6131a66f8fc938e5e72796b2481dd22f47dbb2ff5c05831f28e26359f9e477f", + "value": "0x1d7f23cb8bc973" + }, + { + "key": "0x5be0d911be5dd9010e7c3d50ed14ff5fb1002293271edf368233d9393ccb979", + "value": "0x1187fdba641c0" + }, + { + "key": "0x49a8ef79cab313360767015d427d0307368eff5c2c81b019aff018ec638eef2", + "value": "0x3661ba5b23eb20ef7a" + }, + { + "key": "0x10bfc0c52d5e53afc289d4b835ee0cce477851ba40cec8948b586f98821c90e", + "value": "0x34807ffc8222ee" + }, + { + "key": "0x2f6b16f0e89511a87c1ae4b87218bd43bf4da5e44e888c7063932afed368a30", + "value": "0x186f4a3adc4360" + }, + { + "key": "0x405c2689d6141ee1cc62e1a05978a05fd27e62b4dab3ca5e219a30d978e5332", + "value": "0x168657baad90b0" + }, + { + "key": "0x7f2fac3e5dae50f74a3cfba59ffe6c53e6fd48fa2b86c5453a25f6cc8bf13d8", + "value": "0xd81fb1c8b0ecf" + }, + { + "key": "0x40ca7623b29445e9e83a339ac14ce3d1087d8fb801a961eabed1b31112f06f1", + "value": "0x34bcf84f04be58" + }, + { + "key": "0x7f802c7292ed48fd9fddf95364eb9481a6e6d1222e666e5b1280058f1eef92d", + "value": "0x71591bde00d35406" + }, + { + "key": "0x4c39df8442286aea9982bab52bc9d079a845bbdb6190aafcaf0eb9b79f914c7", + "value": "0x11c1c67299034" + }, + { + "key": "0x1cd1c7f3b29169174202af063d6433d4cf89a04448fc38daf776c739d07c951", + "value": "0xa5602d59e49c32" + }, + { + "key": "0x1c98b819d72803c6a57d88fd01e68d815b3d96cf9e7d7c476bd7ce75d9adc4b", + "value": "0x181ddd92746c6e" + }, + { + "key": "0x65013b3d26da8a164699e50c05aa175d0d5c796b0b276da5b65642e6f0d9ec9", + "value": "0x1a938643b6bae6" + }, + { + "key": "0x3693fd9b7930b6de218b992c73017d510370c439a86fe3114712b6e2bf13845", + "value": "0x116ec45fc9437" + }, + { + "key": "0x37c9cfaa5ac3f390e2a32f6e84fbca615b3f4e4eb84531e1d156deb7de0848f", + "value": "0x4033d9bef78efe" + }, + { + "key": "0x3c28d86c794bc0717279a1c08e05e7007edc03bccb891d1f2ae94278ef6d6e8", + "value": "0x5adb68d0e4986" + }, + { + "key": "0x4b63358de0013d4cc1166b3c496b225f235f92afcedb82b5a1c472ab4a62c27", + "value": "0x422cd6dd421072f1" + }, + { + "key": "0x7d26a440f412674c48aa6ddfb16abf303962c768529b183e228a3c55b481f71", + "value": "0x12a86b00f1cc12d" + }, + { + "key": "0x4f2a36636e0f6de7965c4546de79b3ecd55f08cc75d255611b9a7b7636d83b9", + "value": "0x19f49b393000589" + }, + { + "key": "0x1ca5f22d0a5174f52984df8036530dd52c5fdb53767ae6570c547533d070b94", + "value": "0x47c9a3141f7a0bef" + }, + { + "key": "0x34847e759c85d3599217d8a7157faa5b94931f2afded22ecd799c6beb519756", + "value": "0x166a0b6a099acd" + }, + { + "key": "0x27715142720fd8fa360a79c9c60f2530174861118b6faa2f8b0c714cc0a8de7", + "value": "0x210636169e4e86" + }, + { + "key": "0x3ae193f0c7db8c985f23bdb6f42f7177221db405b4f47288379440fe387c798", + "value": "0x2fae7e67a2f9" + }, + { + "key": "0x4b861fc4376a46130748b1ec952573548c7c64824d409c9a4dafb243f5e935", + "value": "0x17483e3ba2d49a" + }, + { + "key": "0x104cf52dad0df9f71700d15e3146e5c7cc419cce29b1779b17329539e874db", + "value": "0x19cfddc86bdac00" + }, + { + "key": "0x4aa2885ee95e2eaf83fcdaa59539ef9301372e916bc2419274d92a453c2b422", + "value": "0x1a56f3db22dc725fec" + }, + { + "key": "0x57dbb90d6e3e6e431c1c03742f9795d1a3aa56124a18374977c0fcc2a0c6b73", + "value": "0xda2276be8fe82" + }, + { + "key": "0x2d5874254d0946c9d14a768972f4bc8912e9eb4fde7561ea54e277fab7ebd78", + "value": "0x10405c80c4e8900" + }, + { + "key": "0x15b06bddd80708cebe742e7be8591e96af1b83357473d350b98b66d4aae3188", + "value": "0x115e55da6d491e" + }, + { + "key": "0x36b633f3aec85a7a2d92368d7d402e9db73dc1fd5d970fb5994f39231c60e53", + "value": "0x6e520c008f14f" + }, + { + "key": "0x484a19d5c851b0aae319d5d88be778e66532f3b04d0689bd28cae6d3ed88b4b", + "value": "0x85b044bd0bb34" + }, + { + "key": "0x2ef559def7b9ac8dddc5fab33b37f1581d5f2c925c2f30a643fdecb818f7729", + "value": "0x11cef7519fc42" + }, + { + "key": "0x3dd22dd1f18509158197d16ede517c394de8f09a9a2caac525634a9b67a8486", + "value": "0x15c7ca2457ddb8" + }, + { + "key": "0x63406b35c7d69a868c6e68a91578f2668cd1956d3ac305eee2687cf190c3c61", + "value": "0x1a9df045a8db3e" + }, + { + "key": "0x2144299fb50e5a0518e0decff2c4a696db0bd8236d09e6dc1440e3ee18fef29", + "value": "0x286f3eb93ad1301" + }, + { + "key": "0x617028afdf86a806918c766e5b43cf2ed96713d3e491e75e38db6c3950135de", + "value": "0x15571923851b3c" + }, + { + "key": "0x25f19140d95746c32c64000cb559959d72d293d2cf2bac8f40b42bd541d564a", + "value": "0x11e9583cfc5f2" + }, + { + "key": "0x64735173819085521e44a2a8077c6cdfab75561de60a85e6fe942f14126acfd", + "value": "0x542f1b4de4af34" + }, + { + "key": "0x7aee6702763c0e2d71582bd696423f5b7fcc24e90a9be2422b2ff85bc56b55b", + "value": "0x96fb3d0d82814" + }, + { + "key": "0x4e25117c5af12b34b5e6adafa06f8a7859e1296aa29f627756c72cc60d93ab3", + "value": "0x651c3ff1db7cb0" + }, + { + "key": "0x7f8acdce20d3addc0dd9d084268062699620bd5fa1617d46f966ed6c1e9e103", + "value": "0x2851df9e5cfb23" + }, + { + "key": "0x63199b87a08866f1f62b301bb150f199ada06bd2980892c7ee4e41bbaa652e", + "value": "0x107d7df5047b8a" + }, + { + "key": "0x261c691051ad1ffdbd9035aa1819fd16174cc4b4e1283436c59ab35c501eeb9", + "value": "0x11755db4e98c3" + }, + { + "key": "0xbdb80b0392a1b20552bc44f8fee3ededb87e461c2f235a2f2935057f79b8ed", + "value": "0x3610d128d5ac90" + }, + { + "key": "0x13c9b3f002bb9bb77d749d79e5a3082e5d14cd678c9f022006f9752cdb0e0ba", + "value": "0xba712562929847" + }, + { + "key": "0x45cc6c706e1600c68c2148ea946b864742ee337a63c9e0c084b7d70ac795cc7", + "value": "0x1189294ade20b" + }, + { + "key": "0xa03f1d5f148de131b30c016440297599b5cf904f1c9fbbd08851698310355f", + "value": "0x187648237857ba" + }, + { + "key": "0x56cbab2e2eee4583a4191cea835945c10141454eb5940995469b73871a9364e", + "value": "0x8517daaad06c29" + }, + { + "key": "0x5ca181489992d8745f56eed91444b4a1f5fe2104d148e7f02275153b796d45a", + "value": "0xfffffffffffffffffcbde63054febaa5" + }, + { + "key": "0xd25a1f7a6c97a797e020f1591c936933e7c75f5520cd7f26fff06e69365ea3", + "value": "0x117acb619c968" + }, + { + "key": "0x5ee36f2424d38c5d3a68d2d5896f58364840f3d2a417ffef5574702f12b8376", + "value": "0x11545e5b8d2d4" + }, + { + "key": "0x2336465c23c18785fc8365b432fa51fa5d42d8aec4edfcf3f468d9c2be7b528", + "value": "0x21d8ecd2db4610" + }, + { + "key": "0xe3f75a129028dda5d7b07797b9ebf53bb514a700d86dcde1b0a5b3e4025c96", + "value": "0x16672706d9e7aa" + }, + { + "key": "0x74e5cd27c174f96c672aad7979f024f80307ce452bd1493db241191c355aac5", + "value": "0x1d4d4b1b2bde8f" + }, + { + "key": "0x6dafefb86f1cee04ff8bc4270644a7bf2d080e584d2597b1ac125546f99b4ff", + "value": "0x1296827349f234" + }, + { + "key": "0x1f10d587979a333b3d0287342060ab2fe9465881dcf893b38e120f33f52eda8", + "value": "0x36cb5de3bf2e4d" + }, + { + "key": "0x21d1e885f8b1931b2e997e1ae571d9200591568485074dc6b02039aba0b3b9e", + "value": "0x86e8b9c4c823ad" + }, + { + "key": "0x43be0f7b006c882c3c8cd5cc5873aafc8a82a3ca6fc3a2077eb407772a8177e", + "value": "0x5a49fc6aef6ebd" + }, + { + "key": "0x42b16f072a8b8d9c74760d8fd855a03e5db3a60501aeb83db9d2fdc458f4f32", + "value": "0xffb1b4cc91fc7" + }, + { + "key": "0x1c2f642d85b9e42fea8c462a172760dada46ca50b90824c376a05a2fdbe7fac", + "value": "0x87b32b5fa27d5b" + }, + { + "key": "0x2facc3980f8a362caba95fe51d6c983442ff9afee312d7cf2cdb822f8440084", + "value": "0x1146ce743ea2a" + }, + { + "key": "0x465387e84e6a7c8e5377bf75a5c13ea94a13649b7afbb256e8bc86acd52587f", + "value": "0xffffffffffffffffffd6c9dc889ab9ab" + }, + { + "key": "0x245872223ba5cb51628f50ed0e293726e16b08e5fab15bbc07776bbc1353720", + "value": "0x126f2bf0f59e4c" + }, + { + "key": "0xe3a3a8c197db9a0166eb1ff0aa51462466fdb0a862acd9a04d2731ee305321", + "value": "0x84412a9489761321e" + }, + { + "key": "0x107058f6989a44261c121d3d9b9b05c7a71ed33eeb543deb17ad5713f41b7c0", + "value": "0xc4b5236879001" + }, + { + "key": "0x36e77c2c0f8831eed23eaa3fcfda5bb4523899d24dec739f46cd184befc0f17", + "value": "0x1ca3bde2b299d2" + }, + { + "key": "0x746915032f8ba12089660c6126b4cff63b4d3070f8c32f1fc76da4fb2294520", + "value": "0x55c2a61642e488" + }, + { + "key": "0x2e28fe1e8f7fa4780cbf1212cf1d34f0902b8274e919984b1fc5a1540d0725a", + "value": "0x5e5f973ba11b9" + }, + { + "key": "0x3bc872a05764a025cde322c0b8757aa5191a23ba3ddc33a2084425988c63ede", + "value": "0x4d4137720c84" + }, + { + "key": "0x230742ddf18073c15e36c3def1db5a954e67e6a4b0c456badc62139dfd4ed9c", + "value": "0x7e499e15d8bd1f" + }, + { + "key": "0x142590b89b39abd61344c31b6fd7503fcf92badba8a884314307f153655c2c", + "value": "0xa0c883a9344647" + }, + { + "key": "0x71bfaf6a0a5f2ca929fa31950f5815cbb43045d35e71601f34a17cdb32466e", + "value": "0x1aa1cd13c5ca7" + }, + { + "key": "0x47832096355a60c436822be65f408aafe9230ec35fe1d72c1bf74b0783b7272", + "value": "0x11b3cb690d20b" + }, + { + "key": "0x687398b8d1d2635075b00866477ca70d7f105e761b822f791b76fcd2706c262", + "value": "0x5ea5b25551cb4" + }, + { + "key": "0x36419a6817d78852ee9be387b38f931d01c72b9866cf3a41ff66cb18deddc31", + "value": "0x182cb0ad2ece9c" + }, + { + "key": "0x2888070e6e91bc263f21c8698db56def35413226112653d3a508f32a91f5e34", + "value": "0x618a03df13a57" + }, + { + "key": "0x7559d0084e8f5253dfa6df13db52dfd4fbb5056925fa04ebc88778f94726b62", + "value": "0x54271e59067d7" + }, + { + "key": "0x5821e169493d8e6564dd49a1b688eda9de227f0772fd73c9f803631e03ac75c", + "value": "0x92eb1a65ad209" + }, + { + "key": "0x5449ff5621cacb3da16e983e62f1b71ea3724e8314d08f16a53e3c3e07e4349", + "value": "0x114d6833c744e" + }, + { + "key": "0x420f12803da8627f6b31a810efbb83ca75e44a8947693cb2b0adc5d4bb5c8cb", + "value": "0x1676b1cd839695" + }, + { + "key": "0x6d6f33770b1bf7891b48caac6e896ac2d45737b5c33bd0503410848fdea41d4", + "value": "0x11ad32ba11d84" + }, + { + "key": "0x547f8114927592559689f3723f98f995af7f74cbda36db122195f71cf3c2692", + "value": "0x187287dd86a46ddba0" + }, + { + "key": "0x110e2f729c9c2b988559994a3daccd838cf52faf88e18101373e67dd061455a", + "value": "0x5d92be76e103fe3d988" + }, + { + "key": "0x14ff239ecf77853749af8dc8ef7be5ad7d3620de6a841d59555a3a13987fcdb", + "value": "0x2787c7ee1e6890" + }, + { + "key": "0x35138eed309499d16e81ed5f4f85ca30c381992e22ce7f91134f7a405f9fdbb", + "value": "0x13940bdd17b929" + }, + { + "key": "0x5d88a13dad0b9001f0b4a22d234b201ad8cf6a7955b3900605ea3fbe4ab20b8", + "value": "0x1174321addef8" + }, + { + "key": "0x50ab7faf6fb625aa3bbbe45896eb836d6e4a8ad3cf4acd2cece915123b460f9", + "value": "0x266dbf49c9bd9a" + }, + { + "key": "0x73e797020877be31fa33283c28cd483231eb173343e059783492bc1a4f8688c", + "value": "0x112194582070d6" + }, + { + "key": "0x35f8e6f24e67f3d4c8fcca3f8776ca2029a3d1d73ba524ca271196acf82db63", + "value": "0x11c85eeae3f69" + }, + { + "key": "0x114bc5a40426f61cbbc2c320f67c502d64dca196761ed4f267a5abad0539459", + "value": "0x122bbc3c658ed4" + }, + { + "key": "0x2f103bcea784d1f6501dd953a5c9b5ed1bf282a6ed430ea704fc088086dd081", + "value": "0xcd2856e5d0ce4a" + }, + { + "key": "0x4e7c5fa4723a5fd6e8a224286cc62f46d63e6144cf828ec099c8258de6c9a44", + "value": "0x11a001276a972" + }, + { + "key": "0x71a19b4998859f7cba70edb1e9f67aea3bcf9ef7ea6f876a6e522efff900c04", + "value": "0x9c0a9337c922f" + }, + { + "key": "0x3e936dd9bcc032b509cab8bdc9d2471f45126a2af67b869da0afb6ee38a87f4", + "value": "0x17115711456778" + }, + { + "key": "0x35f2c27f9eb8d33eea528d16b10d246cb16d92b5c328edb5409b1656076eb41", + "value": "0x1715cfc3e6281e" + }, + { + "key": "0x7256df463582bc7b8d506ad47c8387ef9976b0f1ce953ad79f763b4ceaa04ee", + "value": "0x53cbb4ec750db2ed" + }, + { + "key": "0x6bef48b8a90202dd6b2928b76f042df6ab15958de67df1e299608142bc520f3", + "value": "0x31af6b32603460" + }, + { + "key": "0x740ec9e6ff190a436c466e14d6d26b9fd94bbc19f7ca3c3d329af514505d227", + "value": "0x1c5e005db3c66d" + }, + { + "key": "0x1af9ce4eca4cce118027c63b08f2b085165ad9061953b87d91e07926faf1502", + "value": "0x357688f9115787" + }, + { + "key": "0x131966c485a168b535171db1035da61739a77ee780a1db20b6040a126a4bf27", + "value": "0xfffffffffffffffffcc68f17e8691e05" + }, + { + "key": "0x65d56469c6195669e9ed57c29b15ce767a6f33152cd2047d8ee3bd6d96472a", + "value": "0x57536444972519" + }, + { + "key": "0x57b10c17850ec1320989e5c91d5392b33b75e14869e658417f8ee3d830e40f3", + "value": "0x8b1eb5bfadfe5" + }, + { + "key": "0x4ea568d0a87fa53223fa367a2c3146534db9ac63e5250ebbeac09b5202e1c3", + "value": "0xa27f7c426f8df" + }, + { + "key": "0x2862348d285bb5ad7cdf093a4daa462b199da28fb0c8e29dcce17f1965989be", + "value": "0x14e038af437add" + }, + { + "key": "0x39d1faa8c2150a09fb2e231aafcd53581dbe68535d1833a500d71f11d909e39", + "value": "0x56fe1c0eab06223a" + }, + { + "key": "0xa3d5f4308cccd2f07178d69e780902409a3f18c36c01b15feb4c2865a5b95e", + "value": "0xbc7bc5b4746bb7" + }, + { + "key": "0x2f5bfb9320128a1954bd95ccd43dcaef29a62e1d89dee932300c6aa21068e4f", + "value": "0x1b0770a074138b" + }, + { + "key": "0x2515386059f3c3f24e19865e36de617adf6ea537166683bb8ef27c563d44ec6", + "value": "0x169f288bda2eed" + }, + { + "key": "0x79810d9ee82ad6d0226717ad9729f3832a598149ec9d28f7155a88973befbb5", + "value": "0x7bb47ab79bdbb5" + }, + { + "key": "0x4ce426f810a4da9f037d351bfad4f0ce85b418c58e0f93608f58b70e39a6c6d", + "value": "0x11f68849561e1" + }, + { + "key": "0x510c664db84ee917626c9a54fc14d86c3f1ac58176a20b04944d035a87fd0c7", + "value": "0x4b26ded9dfd24f430" + }, + { + "key": "0x6e23cd207371d0ebedc87525b5aa990599f88fc3a4264ced80430efd5bf4b7f", + "value": "0x115af7f6f8ba7" + }, + { + "key": "0x78b9aaf1df67dbee800d982586990241f0ee18f4b7c120defaa450b61b89077", + "value": "0x14e7c1c5f53def3" + }, + { + "key": "0xacf63e4280da4778aad5e51aa6500d32f11cc3dd60f3b499a198b536f2ae7d", + "value": "0x1b5238d605acfe" + }, + { + "key": "0x44dab1b7a7d540fe925defdefa7645088cc0d30663bc5f9432cc079902d4c41", + "value": "0x11e2c01c7ab97" + }, + { + "key": "0x389905820f661abc99cb46fa011e41deece0383d6cb744cdf40f09c21b81d91", + "value": "0x16dc8d7ed9b8f77" + }, + { + "key": "0x25037ee7378dfe6370c7a26427b275239e0d26064200e029b7bf923a7feb237", + "value": "0x3dcec617378deb" + }, + { + "key": "0x36535b27f0e5798d202454d0949a5b846e1343767b69bdfa1ccecda4826e1d5", + "value": "0x11682af916873" + }, + { + "key": "0x65e2806a2553ed060c5df3417b7c8ea017497ed56e7aefacde6ee2ced2df9ef", + "value": "0x8f4c925bd219a" + }, + { + "key": "0x5490c7d95350e1ff8062500106eef78d7ccbd25d9da5ae7939f95814f7587b", + "value": "0x11dc27ea6ae74" + }, + { + "key": "0x6cbaf8ee62a613b7c0acc6e3c8acc2c6877e054581a419941a3d7c04d04469d", + "value": "0x1b37fe0cb18639dfb" + }, + { + "key": "0x570849f0593f1d5a818c9d4490ed535975124ab519bbbe7ee5afa8b74ad7509", + "value": "0x41ce0af22d2c67" + }, + { + "key": "0x32976cb353ca8ed756b1f127a1dd66f530ac347856c9a67d886366abfeb0d42", + "value": "0x25a65d7125ea5818a" + }, + { + "key": "0x4ad7888089ec3442dae2b5e16a34ce884a63d8dbfb3aa704388776e25fd27c2", + "value": "0xa6e3902f8f852c" + }, + { + "key": "0x267d7ae45e5184d778e9e89d51fe4889e77b4f09edcb7c1ebc404c58abcc088", + "value": "0x2e600210a09ccb" + }, + { + "key": "0x1da8c44c38e9d3ddffa16f5428be6fb2a51374f0874077a7b59ed8cf67818ef", + "value": "0xf4fbc79d32a63f" + }, + { + "key": "0x7b3d7f238e9bd98118cc8f1e1ef7cf936222c489ebae1445014fd657f52ba13", + "value": "0x4b5f5f57fc63" + }, + { + "key": "0x2d413640033f3b1c809d71f1bedc25d43580fa4f65ea3a7c6a72a1281d2ea74", + "value": "0x1a200a9a6da85a" + }, + { + "key": "0x3713bab4467fdf657069badcb2d75f21c64f43f2e011c9d32255678d94b7eed", + "value": "0x2bf74ee7d57ff9e43f" + }, + { + "key": "0x2422aff34b1d3d7c9e8efe9e461455c28cee27bb54391bb7aa20a7b0aca2124", + "value": "0x11eff04bf0169" + }, + { + "key": "0x5064687a07355975373a6cdc7e9b1faa0121433e073bda62a19d01df8499298", + "value": "0x15860c7797fa05" + }, + { + "key": "0x30eef4a1db957092ff6bccac18b099e1b3beb05be0b62a62024a1c7396a0a09", + "value": "0x1182902a73bc7" + }, + { + "key": "0x4f256df1405f589f3c8ff2ac7070c2f66d2669eb6d57f3109332fc980d9ab7f", + "value": "0x1dd1dcb0e3c54e" + }, + { + "key": "0x131966c485a168b535171db1035da61739a77ee780a1db20b6040a126a4bf28", + "value": "0xffffffffffffffffffffffffffffffff" + }, + { + "key": "0x239a744782b9eddea86273b9ccf1978fd1c3c79f4c38e3702e597785704c12f", + "value": "0x33576c7d244374a9e" + }, + { + "key": "0x13d0c87635987c37a5fafb2f1252457cc5304affd8a6d7eff25275377aabd5b", + "value": "0x1041dcad90bc21498" + }, + { + "key": "0x6fa8f373ae2c9e743b48a04ee4f0bc9b815954824e682be328de0638f9107f4", + "value": "0x2a50946774" + }, + { + "key": "0x4caa6a8c95104afb0a6cb8d8903683f3c7766256a2abae7725240743d470c2", + "value": "0x14eb891c92b42b" + }, + { + "key": "0x2b0b97a93ec1f367241bb641f2acc920eb934b3cd6c37ccd2a68ef2fdfae07f", + "value": "0x12bc4c10e0d13770f" + }, + { + "key": "0x369f33538b0ca73f1ce5de8dfb37d5e0526383c8351d2a07665bd34c97fc4bd", + "value": "0x15df761a1a809d" + }, + { + "key": "0x3c306f534d6738a5ec3b194d9bcdc444ba356136c4eaf10750a4a99858346ed", + "value": "0x1d8be7a8544709" + }, + { + "key": "0x74cd53cea410454a7300adb453c02668f3454d11a27e475d256dc808e74905c", + "value": "0x11ef58e80d8b9" + }, + { + "key": "0xbb571777046c93018e6c5125c26acf1ac8aec53439e6aba9ac1562271ad8e2", + "value": "0x16ae9ea4177aa2" + }, + { + "key": "0x73978d8d53133975e34747cc541e34b3822a653906b3cdb413f14fb890fb24a", + "value": "0x180040e5ef870c" + }, + { + "key": "0x22e1e546e629b770bf288c0793ab4e9afe2b9de9110a64cb88b2b1bb801f6ec", + "value": "0x11d58fa6ccaa4" + }, + { + "key": "0x354882f85ac3ad7c3e7a5485034b8615e085ae125daaccfb57db64fdb92c771", + "value": "0x1770efd77d2ac1" + }, + { + "key": "0x4d69bc24bb10ac02cd3e20db3d06672f6084cb16a79095ad907b0f1aa996950", + "value": "0x4fd0b53d862004" + }, + { + "key": "0x497d33c5bc20cc2545aa41b6858be1067547dbc1aa43dd6fc634597c8ffeef3", + "value": "0x5855461f50ee6f0d8" + }, + { + "key": "0x3b86765c38bae68a0f1587fcfae027c4bca7971ada7f9f959e4dd4252e45f0b", + "value": "0x23d84b750d2e7c" + }, + { + "key": "0x7d5f37ab2f2d1533cdb31458b7dc5e452244606a63e6d0cc89b96da20b6ce58", + "value": "0x35edfff8e45b09f" + }, + { + "key": "0x5932e41d771a8afc5448bc39c6b3cb8a917ea01cfe30afad0aed57803d3c4cd", + "value": "0x1ae3f83b4ea455" + }, + { + "key": "0x6ba9d68a4633225b4a234d4ae069c8c42e24cf351d33d373af922da7198dbc5", + "value": "0x18bdade3ef6ece7" + }, + { + "key": "0x63bb0d3ddc18a04b45b87c074459886c47311c3a973179a09ba9986bd388a1b", + "value": "0x186bdcab699790" + }, + { + "key": "0x6c266f99253928cfd30734a1d0dbf74280b30738833a9f8302588663d7c3b6c", + "value": "0x1618e6170e933b" + }, + { + "key": "0x5fad7613fd327fc13290b4c80dcb56b41035cff52310cc2f9e1d7de286fcff1", + "value": "0xd9b868e6bcc540f7c" + }, + { + "key": "0x6120601cda31bf6e639496affe00d5b1191dde782aacedcaab5f839948eff8b", + "value": "0x1de6fee0e9120b" + }, + { + "key": "0x61af46029793b382d693ce3b8a7d14561284fe75ed4903031db566cc6d3392d", + "value": "0x21849fc2cb4fde" + }, + { + "key": "0x7b918d0179bec969200bcf3bfc97609f1ff75580c1f242e9a9dc94e733f26d3", + "value": "0x9c0a9337c922f" + }, + { + "key": "0x7552b97f40bb280970ed100903dc366d5d1678e14c0b8343b54b256088d8ec5", + "value": "0x17aa342fc94d2e" + }, + { + "key": "0x5e09b6843616a896991b9a68cbf198eb792432f7c7ac0261aa15a3c263dd92f", + "value": "0x14c2f4cdcedb13" + } + ] + }, + { + "address": "0x1b23ed400b210766111ba5b1e63e33922c6ba0c45e6ad56ce112e5f4c578e62", + "storage_entries": [ + { + "key": "0x91a1444c8318db8befce13d17c97ecb433449a11b53cfa2fe346fc5a90f80f", + "value": "0x13ed2b4c" + }, + { + "key": "0x16959433341337ac941cd4e57b41288667ddd17669996bef9d213060da40dbf", + "value": "0xc596019" + } + ] + }, + { + "address": "0x70f8a4fcd75190661ca09a7300b7c93fab93971b67ea712c664d7948a8a54c6", + "storage_entries": [ + { + "key": "0x110e2f729c9c2b988559994a3daccd838cf52faf88e18101373e67dd061455a", + "value": "0x1ce50f8b99df28034" + }, + { + "key": "0x5821e169493d8e6564dd49a1b688eda9de227f0772fd73c9f803631e03ac75c", + "value": "0x4065148c2b90a" + } + ] + }, + { + "address": "0x7e2a13b40fc1119ec55e0bcf9428eedaa581ab3c924561ad4e955f95da63138", + "storage_entries": [ + { + "key": "0x3b3a699bb6ef37ff4b9c4e14319c7d8e9c9bdd10ff402d1ebde18c62ae58381", + "value": "0x56a35b4213be3b0b3" + }, + { + "key": "0x1e6f3e4333da349f86a03f030be7f2c76d8266a97c625746ebb9d3220a39d87", + "value": "0x272e2bee6bbe8027722b" + }, + { + "key": "0x57c60b189063035eed65879a14ad5f6e718027a212dafbe52f9bcd79e9f4fa", + "value": "0x7779c94ad" + }, + { + "key": "0x3351bce4793f90e4aa00447357c2d34ac08611756193d8249009e0396dd7b41", + "value": "0x64ab9e2c" + } + ] + }, + { + "address": "0x811d8da5dc8a2206ea7fd0b28627c2d77280a515126e62baa4d78e22714c4a", + "storage_entries": [ + { + "key": "0x48be3692ab3e9e8bd4a134a7b958b4e69bcb00a71d4f58c22f9311921f12bcf", + "value": "0x12d5334" + }, + { + "key": "0x1d430bf138ea7c30cc4ba41938ff8081ecede809c1d7bc56b785784aceaae08", + "value": "0x1c33db9927" + } + ] + }, + { + "address": "0x7aba50fdb4e024c1ba63e2c60565d0fd32566ff4b18aa5818fc80c30e749024", + "storage_entries": [ + { + "key": "0x110e2f729c9c2b988559994a3daccd838cf52faf88e18101373e67dd061455a", + "value": "0x174f420d6009c75e5" + }, + { + "key": "0x7d4718cb20e88943ff0aa4f23cea67b11d159c13866fe5946d0bd27eeeaeb7d", + "value": "0x34a24f0d18867" + } + ] + }, + { + "address": "0x23c72abdf49dffc85ae3ede714f2168ad384cc67d08524732acea90df325", + "storage_entries": [ + { + "key": "0x110e2f729c9c2b988559994a3daccd838cf52faf88e18101373e67dd061455a", + "value": "0x3638a92594fbdc" + }, + { + "key": "0x3b3a699bb6ef37ff4b9c4e14319c7d8e9c9bdd10ff402d1ebde18c62ae58381", + "value": "0xd25a955ee9" + }, + { + "key": "0x5205bcb3e3f49a913e913df275c9ea1e4773ccf90f439baf079f61b80303917", + "value": "0x11cc5c7f30f25" + }, + { + "key": "0x2712b812fff3c2f3b38d4c532c684b5a1800dae9c4a8001c6f855bb520c7c5", + "value": "0xa3c3f06aa3ba43460b66a2b00a4" + }, + { + "key": "0x332df419aa058c3f4b36acbf5af4b7e8e3d4dd58918d5f0ab2841741e7b55c2", + "value": "0x64ab9e2c" + }, + { + "key": "0x1af2de636aeec34b8cb1fa5d6c60ab21d124fc59e46f4cc0b7e77f6a0269741", + "value": "0x22814292d99f" + }, + { + "key": "0x19dbc9b4eab95d05b7871c69cdeef24e69dc2a3536f0c6bf169000dc1fdd20e", + "value": "0x3af8a60962" + }, + { + "key": "0x19dbc9b4eab95d05b7871c69cdeef24e69dc2a3536f0c6bf169000dc1fdd20d", + "value": "0x37811550e05e2fa6625b04550750f7c2" + }, + { + "key": "0x7af134b7c4f8214516c071148fe043502a19625938f2a16f0538ff40518abc", + "value": "0x15a4a5f92cac109b03314b7e8700" + }, + { + "key": "0x1e6f3e4333da349f86a03f030be7f2c76d8266a97c625746ebb9d3220a39d87", + "value": "0x1a56f3db22dc725fec" + } + ] + }, + { + "address": "0x76503062d78f4481be03c9145022d6a4a71ec0719aa07756f79a2384dc7ef16", + "storage_entries": [ + { + "key": "0x62eb7b7384540213e9923d66a1fd63bd4369404d4ae7c3fcefa6819186f5a8f", + "value": "0x331278d5f68b6cf2f7c25382c3110008623c16286fc10ab702301b65395d85" + }, + { + "key": "0x5a5857dac357985b5658dcaaa6107956706671fb8db9f0c17ef75d9e93b7102", + "value": "0x4" + }, + { + "key": "0x148f9006e9bebf90790a94a778f354fef9367aaa9665ea38aa61bcbcfa5487c", + "value": "0x1" + }, + { + "key": "0x7b4faa9b681128fd023d09cdca17aa0449ce68b92ec3fd289e762ff8c301cee", + "value": "0x74fd4e76a0989354040e8edb642fa5a447e1356f29ab3ab69e060479b842be" + }, + { + "key": "0x75e1354a3483c77b11cab1627170f368c8bc83c2f6bc9931289fc055fd213e4", + "value": "0x1" + }, + { + "key": "0x57b832468cbbb5c90012a29ab01c53c14739eeda830348e2642499b4f5fb11b", + "value": "0x1" + }, + { + "key": "0x46c510b74f4e5cdfbbd56aa76d939768a48960a2dc56e549c4ee320028abdb", + "value": "0x4310084d2b16070d43c7c65e1b97cce003d6ef1c80bb5a15139b67d11eff3dc" + }, + { + "key": "0x2e870f606df99dc22954d5e37986aaab9af3605ad05a7dd1baceb5303bff1a1", + "value": "0x1" + }, + { + "key": "0x3676af8e535fc9189e7ee956afb0619ae4a82323334218bfd8f1da52d566062", + "value": "0x1" + }, + { + "key": "0x7562983360b711d14aeceefd02286e0a76ff4569f693ebb8d4b0df0b47d3f98", + "value": "0x4" + }, + { + "key": "0x2cc8a63412ff2f0a1a4aa2417b60aaf90adbdcba7c4352a3467bb90f6a22703", + "value": "0x3e1c44dc86729a56907c9ab02287f59b6c4a3b38360046419fcfe6d6f691f74" + }, + { + "key": "0x172b19ae3dbb2a06462fadcd8ce2a1ca38e376122f5219f4c60ebacec281742", + "value": "0x1" + } + ] + }, + { + "address": "0x70cda8400d7b1ee9e21f7194d320b9ad9c7a2b27e0d15a5a9967b9fefe10c76", + "storage_entries": [ + { + "key": "0x3351bce4793f90e4aa00447357c2d34ac08611756193d8249009e0396dd7b41", + "value": "0x64ab9e2c" + }, + { + "key": "0x2ec31623436b0fbcbbd71b2b3eed2887c8156077098a52a9256a9e0edb833f", + "value": "0xdedf7" + }, + { + "key": "0x3b3a699bb6ef37ff4b9c4e14319c7d8e9c9bdd10ff402d1ebde18c62ae58381", + "value": "0x71591bde00d35406" + }, + { + "key": "0x1e6f3e4333da349f86a03f030be7f2c76d8266a97c625746ebb9d3220a39d87", + "value": "0x64eb4cd9435ea27c" + } + ] + }, + { + "address": "0x390bb59a0d435f0d928b3677146c9bb25ec3986258876459ea3116ba08a2067", + "storage_entries": [ + { + "key": "0xf920571b9f85bdd92a867cfdc73319d0f8836f0e69e06e4c5566b6203f75cc", + "value": "0x33434ad846cdd5f23eb73ff09fe6fddd568284a0fb7d1be20ee482f044dabe2" + }, + { + "key": "0x1ccc09c8a19948e048de7add6929589945e25f22059c7345aaf7837188d8d05", + "value": "0x1ece8623d2050cfe0225f397ede33c674c3130d79b53697db2f49c893287d32" + } + ] + }, + { + "address": "0x76dbabc4293db346b0a56b29b6ea9fe18e93742c73f12348c8747ecfc1050aa", + "storage_entries": [ + { + "key": "0x73bc2d23d3e894bbd512ad38772573f7de247e7491f0ece42aabff721f768cf", + "value": "0x19518a49491592e45" + } + ] + }, + { + "address": "0x3b0550e59cc75308b550a5f46039a0f93b6c441f674d6cdbe5ac1eb5d49235d", + "storage_entries": [ + { + "key": "0xf920571b9f85bdd92a867cfdc73319d0f8836f0e69e06e4c5566b6203f75cc", + "value": "0x33434ad846cdd5f23eb73ff09fe6fddd568284a0fb7d1be20ee482f044dabe2" + }, + { + "key": "0x1ccc09c8a19948e048de7add6929589945e25f22059c7345aaf7837188d8d05", + "value": "0x563305ed5ec3e35d071b50e1bf86a390fc09ff905b9f0e038cc4d3c3f3818ad" + } + ] + }, + { + "address": "0x4d0390b777b424e43839cd1e744799f3de6c176c7e32c1812a41dbd9c19db6a", + "storage_entries": [ + { + "key": "0x1e6f3e4333da349f86a03f030be7f2c76d8266a97c625746ebb9d3220a39d87", + "value": "0x42d9269fe88c4b271e" + }, + { + "key": "0x57c60b189063035eed65879a14ad5f6e718027a212dafbe52f9bcd79e9f4fa", + "value": "0x2b5b9e39760394" + }, + { + "key": "0x3351bce4793f90e4aa00447357c2d34ac08611756193d8249009e0396dd7b41", + "value": "0x64ab9e2c" + }, + { + "key": "0x7f34f87c276ff04d68e01c777f56ef4f7d2ba23f4eb216b56396f65ec3fec93", + "value": "0x6ad02e6318" + }, + { + "key": "0x110e2f729c9c2b988559994a3daccd838cf52faf88e18101373e67dd061455a", + "value": "0x95a17e9f7b357c" + }, + { + "key": "0x292b01ad53973802851f4362e55aaa58f96f5e0c3b957ea06482a420f84f8be", + "value": "0x222d0dd63" + }, + { + "key": "0x3b3a699bb6ef37ff4b9c4e14319c7d8e9c9bdd10ff402d1ebde18c62ae58381", + "value": "0x21568da1aab" + } + ] + }, + { + "address": "0x3d39f7248fb2bfb960275746470f7fb470317350ad8656249ec66067559e892", + "storage_entries": [ + { + "key": "0x69010e0d78abb0652354b78994622e24a9e47a8d30d5c4c0c9fb2df3dbc04cf", + "value": "0xdeb71e185277f33" + }, + { + "key": "0x5a827682859faff64442160965f441fc4344f998e6818244814b04a830749ea", + "value": "0x64ab9e2c" + }, + { + "key": "0x41fb32daa5e26566d482776d5f8abff389da500038a86a288f5adb39276ad55", + "value": "0x104f038508c22d" + }, + { + "key": "0x747a639bb6dbae6d3a00a22e5e976eb21f6a8c0d87b25a9e77c50759d7066cb", + "value": "0x19278a89ee867" + }, + { + "key": "0x57e3ac4c831e9ce78de8142d212350256e7263262456048615d1800f91a021", + "value": "0xde2e76afd1ea692" + } + ] + }, + { + "address": "0x4c0a5193d58f74fbace4b74dcf65481e734ed1714121bdc571da345540efa05", + "storage_entries": [ + { + "key": "0x28411c1ea7926d0310c90b403e9f1b1b968b35b07eec770d801b19dc0163057", + "value": "0x85" + }, + { + "key": "0x4fda459181d1477b5fce4a1fd52d9dd19beff82d51c12f6be6012dd99979df3", + "value": "0x3b91f3d1e0afc9" + }, + { + "key": "0x22f540e41a9ac712a2b884cf26f56d5f4447414e6d7e54736d714a49676683e", + "value": "0x1" + }, + { + "key": "0x4d956b08ac47b9edeed29318b3351376d20e9ad94d9d1782d17d8f044c568cf", + "value": "0x4" + }, + { + "key": "0x4c5e39d6ff67b7c3b227f2ae137686d188ba66565a0f6d2ad4d1d9850b51a53", + "value": "0x1" + }, + { + "key": "0x3f4bb10a68f4e591ee94e94546ce408da0dc22eb52f265ffdf1fb192372303b", + "value": "0x33c859f53dd999be9" + }, + { + "key": "0x48debd70ae9d943ab4f84d69ab1e7980db8e11bd0ba9c6a17f10403db1c5136", + "value": "0x64ab9e2c" + }, + { + "key": "0x753af17ce38cffced270b91a9bcaf557ad3a8a233caa68e8243fa5c53842193", + "value": "0x1" + }, + { + "key": "0x6ea3e2073a555346ccbb9415813c30d40ed06d9a1141dba2023cbe2a5683643", + "value": "0x84" + }, + { + "key": "0x5b4d3765aaf867d1f89dda35a9c264ccada4c5c6e401834526a8563d8d1a220", + "value": "0x5" + }, + { + "key": "0x48debd70ae9d943ab4f84d69ab1e7980db8e11bd0ba9c6a17f10403db1c513a", + "value": "0x1e42e7e75a5e0ab30d1a42" + }, + { + "key": "0x3f4bb10a68f4e591ee94e94546ce408da0dc22eb52f265ffdf1fb1923723038", + "value": "0x33ccc1a3794909e885e166e" + }, + { + "key": "0x773f0c1e8c90e8d20e9764cc278f8426f54f4d3091a965688173e01ff7a307e", + "value": "0x22e15d3" + }, + { + "key": "0x8d8c188dba7ab41a39b3038fe67626c7069532f824f090457b7dab561e7222", + "value": "0x9" + }, + { + "key": "0x1c872221e7c3919f427e7039c18d634fa2ff516f539c5a72776d82418ffa10", + "value": "0x33d60eee67afb9fb755b058" + }, + { + "key": "0x1c872221e7c3919f427e7039c18d634fa2ff516f539c5a72776d82418ffa0e", + "value": "0x64ab9e2c" + }, + { + "key": "0x48debd70ae9d943ab4f84d69ab1e7980db8e11bd0ba9c6a17f10403db1c5139", + "value": "0x18e8bda539fc8f5f7facbe" + }, + { + "key": "0x48debd70ae9d943ab4f84d69ab1e7980db8e11bd0ba9c6a17f10403db1c5138", + "value": "0x33e98eda4cdb7adc5ea256a" + }, + { + "key": "0x1852a52a4f0ce756313eb7d41a5cb4eaafeb7cda711219cb42ac6b3e90f3512", + "value": "0x1d7139d" + }, + { + "key": "0x3f4bb10a68f4e591ee94e94546ce408da0dc22eb52f265ffdf1fb192372303a", + "value": "0x6fe3807476e5341cef185" + }, + { + "key": "0x6e09ad7b779eba7fc8b4596f811e1668be0d3473ba1033b9c9e6e1ee859707e", + "value": "0x1" + }, + { + "key": "0x1c872221e7c3919f427e7039c18d634fa2ff516f539c5a72776d82418ffa13", + "value": "0x2d84f773ee" + }, + { + "key": "0x1c872221e7c3919f427e7039c18d634fa2ff516f539c5a72776d82418ffa11", + "value": "0xbfc93aa6b0413331efd56" + }, + { + "key": "0x2ff5445d4f75a5ad190b7c7b0d3702d7749687a7a0de91bf6b0979f9aafa07", + "value": "0x5" + }, + { + "key": "0x3f4bb10a68f4e591ee94e94546ce408da0dc22eb52f265ffdf1fb1923723039", + "value": "0x7af80a5077550c4a7def" + }, + { + "key": "0x3f4bb10a68f4e591ee94e94546ce408da0dc22eb52f265ffdf1fb1923723037", + "value": "0x33b50c6180bb1b0aa4282f0" + }, + { + "key": "0x3f4bb10a68f4e591ee94e94546ce408da0dc22eb52f265ffdf1fb1923723036", + "value": "0x64ab9e2c" + }, + { + "key": "0x54e6e7ec34aff8bf9c5ff09fb38456fa1b994060e5ff2bc84b410e8260be136", + "value": "0x1" + }, + { + "key": "0x48debd70ae9d943ab4f84d69ab1e7980db8e11bd0ba9c6a17f10403db1c5137", + "value": "0x33cf25ff7c4465f173812fb" + }, + { + "key": "0x68125ce948d4916baf0b4fc5be3e527b075f4ba8a56a57a9c6bfa94474da52f", + "value": "0x1" + }, + { + "key": "0x48debd70ae9d943ab4f84d69ab1e7980db8e11bd0ba9c6a17f10403db1c513b", + "value": "0x172b19b566" + }, + { + "key": "0x705a4355d7b88548611d85f88a7689a4b00a42294adee223c1ea9c5af55c60a", + "value": "0x1ce4c4b" + }, + { + "key": "0x3448e89c98db291cc410e6daeaa1c29ac3d13dc34bd51f913658f526087ef9a", + "value": "0x104" + }, + { + "key": "0x3bb2b57008287c5246f4ef5cbb04cd17f75382a677f10702b16dedb479c577f", + "value": "0x3" + }, + { + "key": "0x78119da7703399cb73db09d548293c589602a7b6a0878c971959eac969e29e", + "value": "0x1" + }, + { + "key": "0x1c872221e7c3919f427e7039c18d634fa2ff516f539c5a72776d82418ffa12", + "value": "0x14fdff2907070296fca8c6" + }, + { + "key": "0x1c872221e7c3919f427e7039c18d634fa2ff516f539c5a72776d82418ffa0f", + "value": "0x33bf10337977da87f046c67" + } + ] + }, + { + "address": "0x7c662b10f409d7a0a69c8da79b397fd91187ca5f6230ed30effef2dceddc5b3", + "storage_entries": [ + { + "key": "0x110e2f729c9c2b988559994a3daccd838cf52faf88e18101373e67dd061455a", + "value": "0x53feb322ce81b43fc5" + }, + { + "key": "0x114bc5a40426f61cbbc2c320f67c502d64dca196761ed4f267a5abad0539459", + "value": "0x2160482f5c055e" + } + ] + }, + { + "address": "0x5dbdedc203e92749e2e746e2d40a768d966bd243df04a6b712e222bc040a9af", + "storage_entries": [ + { + "key": "0x47f6ca15bd08fa50ea598c64880c069a67e397ce6060c3cbd83f4e98fd60698", + "value": "0x48d19699d6798f6a6fd38ea1817ff0d3744ff5c06fdba841be8941a6040816a" + }, + { + "key": "0x35c2d0598abed5b70f882247d7d406ff0179475db0925075f51430963d39499", + "value": "0x2" + }, + { + "key": "0x3a6aa9ac4df5ec5db2089b38a1ddf5f56183693c50507611d4ca358711229c", + "value": "0x3a6e841872ac1ffe8ec9ea80a80cc9b1718809dedb82f2bb0ff5c7d338c5693" + }, + { + "key": "0x13b02218cc27ab3683a2a30ccacee518d44617e5313bf2890aabe91f239a807", + "value": "0x2" + }, + { + "key": "0x7a49d2968e87341c3dbde13ff87a4965ee0fd0b3d94f30fe5ac2fac3bf5d913", + "value": "0x46ad45c66207ba2bd86eb1fd67ed6005b97453ea9e16790881efd2536da9e69" + }, + { + "key": "0x28cedb162335fd34351f28533475268d38dda23a05bab9721500e668f1ec853", + "value": "0x51f6daaa8d0ad2bf68d2e4cc50b89c50a528a5d3680919e569c03a94a49bedb" + }, + { + "key": "0x5fdac89123424f6029b936327f63432ead73a1c6497f71aab871330bfca9736", + "value": "0x6012b5f247efaceabde853734fede82bf708ab77a08692010bf90b92aa6190" + }, + { + "key": "0x1636f5522161495f2d222b748d2fb9b9fdfec56136595bc446a0feb080ed04d", + "value": "0x66098af0be49db4b338c1d66d94e5a1da861705e4cea28ff46e3b5ba3138410" + }, + { + "key": "0x596bb0e36bf42f9aa688a92aa5448143ba72aaf533a35ad7bcb7df20643e0ef", + "value": "0xe9a25b9ecc4203c" + }, + { + "key": "0x58c3053a17ca1fcd5b312ff8cd4643ccc7e46423283501057fa655c535d6e79", + "value": "0x16bae98c3e1a6001" + }, + { + "key": "0x2095ca29ab739676c3986200f2535f2d32e521fcfa9d3cd49e34756a30c4bf1", + "value": "0x1" + }, + { + "key": "0x5b97a83855582696c34ab5604325d2ec925e5dccc9154af703c1608df3cdd30", + "value": "0x1" + }, + { + "key": "0x52d483c65f4b37ff4fe8af87a2322c33de6c2acc746bf9aed6ed55c03ad412d", + "value": "0x1" + }, + { + "key": "0x5f426a12550de1506b4f2ef3302f5c36b50d66112d5498b86dfd2dc26e89300", + "value": "0x3021045664aeef78db4169330698161b61d0442da5d56f8233311a06f26b06e" + }, + { + "key": "0x634c26ec5e6ff5c3bbea898beb47d6cad56ba0dbdde63eb74ee12622dcc6b43", + "value": "0x3" + } + ] + }, + { + "address": "0x2f8deaebb9da2cb53771b9e2c6d67265d11a4e745ebd74a726b8859c9337b9", + "storage_entries": [ + { + "key": "0x110e2f729c9c2b988559994a3daccd838cf52faf88e18101373e67dd061455a", + "value": "0x1920149e294ada54" + }, + { + "key": "0x339671696b926323c1526bc3f09d1076b9100b05eeb9f4b5f0c40b65ac59790", + "value": "0x1b74be51b6cba" + } + ] + }, + { + "address": "0x670dfdf744ce5a233f133b8835e62c3d8e0d338d34a857b09e9e47be4e4ab88", + "storage_entries": [ + { + "key": "0x1f23302c120008f28b62f70efc67ccd75cfe0b9631d77df231d78b0538dcd93", + "value": "0x1" + }, + { + "key": "0x1f23302c120008f28b62f70efc67ccd75cfe0b9631d77df231d78b0538dcd8f", + "value": "0x453ee912428f6230f610b46bd6bf4354c2feed2e111033f7b9bc888e8f0b298" + }, + { + "key": "0xb4243e5c50fe8b1ec72787e8bdc6875d9e0ac2cf01c216a38498dad9576672", + "value": "0x54600" + }, + { + "key": "0x387c153462d309d4b5a1fc5f90e85bc59eeb2094b2fcef46513ea5f1d1c9b85", + "value": "0x1" + }, + { + "key": "0xee2b6c840729051a0d06a623ff093dcc01e03f2e0c0e07114ac2440394b889", + "value": "0x670dfdf744ce5a233f133b8835e62c3d8e0d338d34a857b09e9e47be4e4ab88" + }, + { + "key": "0x3ad34fad732b51fe0d1a1350f149f21a0cf14a9382c9c6e7b262c4e0c8dbf18", + "value": "0x2c2b8f559e1221468140ad7b2352b1a5be32660d0bf1a3ae3a054a4ec5254e4" + }, + { + "key": "0x10064c6264bc3361adf2b26fd01272239473906cb7bbc183b1819e75188451", + "value": "0x3030302e3030302e303130" + } + ] + }, + { + "address": "0x2931d5aa99f5923efb582f788a4f8c9246691af96cda36782e857df8fadd68c", + "storage_entries": [ + { + "key": "0xf920571b9f85bdd92a867cfdc73319d0f8836f0e69e06e4c5566b6203f75cc", + "value": "0x33434ad846cdd5f23eb73ff09fe6fddd568284a0fb7d1be20ee482f044dabe2" + }, + { + "key": "0x1ccc09c8a19948e048de7add6929589945e25f22059c7345aaf7837188d8d05", + "value": "0x7553bd59161f5f0e08f5bf1bae46a06027997fb638fe8219371807919156e2c" + } + ] + }, + { + "address": "0x66098af0be49db4b338c1d66d94e5a1da861705e4cea28ff46e3b5ba3138410", + "storage_entries": [ + { + "key": "0xf920571b9f85bdd92a867cfdc73319d0f8836f0e69e06e4c5566b6203f75cc", + "value": "0x33434ad846cdd5f23eb73ff09fe6fddd568284a0fb7d1be20ee482f044dabe2" + }, + { + "key": "0x1ccc09c8a19948e048de7add6929589945e25f22059c7345aaf7837188d8d05", + "value": "0x59acb9d5524cd308e4036fd87a5aa1bc8602568ebb66e9a43d30eaf7069dac9" + } + ] + }, + { + "address": "0x45e7131d776dddc137e30bdd490b431c7144677e97bf9369f629ed8d3fb7dd6", + "storage_entries": [ + { + "key": "0x57c60b189063035eed65879a14ad5f6e718027a212dafbe52f9bcd79e9f4fa", + "value": "0x2a276355f988f7" + }, + { + "key": "0x3351bce4793f90e4aa00447357c2d34ac08611756193d8249009e0396dd7b41", + "value": "0x64ab9e2c" + }, + { + "key": "0x3b3a699bb6ef37ff4b9c4e14319c7d8e9c9bdd10ff402d1ebde18c62ae58381", + "value": "0x6ce8b1dfb7" + }, + { + "key": "0x1e6f3e4333da349f86a03f030be7f2c76d8266a97c625746ebb9d3220a39d87", + "value": "0xd9b868e6bcc540f7c" + } + ] + }, + { + "address": "0x260e98362e0949fefff8b4de85367c035e44f734c9f8069b6ce2075ae86b45c", + "storage_entries": [ + { + "key": "0x1e6f3e4333da349f86a03f030be7f2c76d8266a97c625746ebb9d3220a39d87", + "value": "0x15bf7a94" + }, + { + "key": "0x3351bce4793f90e4aa00447357c2d34ac08611756193d8249009e0396dd7b41", + "value": "0x64ab9e2c" + }, + { + "key": "0x2ec31623436b0fbcbbd71b2b3eed2887c8156077098a52a9256a9e0edb833f", + "value": "0xcb168e765084e235" + }, + { + "key": "0x3b3a699bb6ef37ff4b9c4e14319c7d8e9c9bdd10ff402d1ebde18c62ae58381", + "value": "0x33576c7d244374a9e" + } + ] + }, + { + "address": "0x7a419872c27e3805e9967bd9f0cd35b832aa9551b5f7b6a2761dd2326297316", + "storage_entries": [ + { + "key": "0x60ad93cc914d551b188af5d3223d294f68c410eb1f9b08e10b6d240de655d0", + "value": "0x406f3e58fe417" + } + ] + }, + { + "address": "0x53c91253bc9682c04929ca02ed00b3e423f6710d2ee7e0d5ebb06f3ecf368a8", + "storage_entries": [ + { + "key": "0x64735173819085521e44a2a8077c6cdfab75561de60a85e6fe942f14126acfd", + "value": "0x0" + }, + { + "key": "0x64ebcd9ad50d27ccaae8bf8dd3eba0399f7522435c57df8221c07fc4b6f6a32", + "value": "0x1d905c0" + }, + { + "key": "0x2564b5e83fa668ec411c89c0abc8a1a07f32d2741d19b8354d5ad4995316aa8", + "value": "0x1d905c0" + }, + { + "key": "0x1c98b819d72803c6a57d88fd01e68d815b3d96cf9e7d7c476bd7ce75d9adc4b", + "value": "0x1d905c0" + }, + { + "key": "0x37c9cfaa5ac3f390e2a32f6e84fbca615b3f4e4eb84531e1d156deb7de0848f", + "value": "0x0" + }, + { + "key": "0x5e09b6843616a896991b9a68cbf198eb792432f7c7ac0261aa15a3c263dd92f", + "value": "0x14509" + }, + { + "key": "0x376d412f5d6c98c6b4778e1d4ff88b0a8548d68cf2e6fb950d7c38339536ac2", + "value": "0x2c44279e3985" + }, + { + "key": "0x7f34f87c276ff04d68e01c777f56ef4f7d2ba23f4eb216b56396f65ec3fec93", + "value": "0x7968c" + }, + { + "key": "0x36e77c2c0f8831eed23eaa3fcfda5bb4523899d24dec739f46cd184befc0f17", + "value": "0xa09ee" + }, + { + "key": "0x292b01ad53973802851f4362e55aaa58f96f5e0c3b957ea06482a420f84f8be", + "value": "0x353" + }, + { + "key": "0x6ebcfff42af3b563ee9580a7b5ad37b997f3ad025691201fa49f0851ee3b964", + "value": "0x47a7140" + }, + { + "key": "0x54240225081f804f7672a54ab591312a6dfe11954aa4c0d25053619620c6bfe", + "value": "0x1d905c0" + }, + { + "key": "0x35f2c27f9eb8d33eea528d16b10d246cb16d92b5c328edb5409b1656076eb41", + "value": "0x1d905c0" + }, + { + "key": "0x617028afdf86a806918c766e5b43cf2ed96713d3e491e75e38db6c3950135de", + "value": "0x1d905c0" + }, + { + "key": "0x73978d8d53133975e34747cc541e34b3822a653906b3cdb413f14fb890fb24a", + "value": "0x1d905c0" + }, + { + "key": "0x399ca1bc7e1158cb8cfe243a9d4e91fcd681283066762649a2d5041fe544c02", + "value": "0x1d905c0" + }, + { + "key": "0x49a8ef79cab313360767015d427d0307368eff5c2c81b019aff018ec638eef2", + "value": "0xc9a9d522c1" + }, + { + "key": "0x7552b97f40bb280970ed100903dc366d5d1678e14c0b8343b54b256088d8ec5", + "value": "0x1d905c0" + }, + { + "key": "0x42b16f072a8b8d9c74760d8fd855a03e5db3a60501aeb83db9d2fdc458f4f32", + "value": "0x5a852" + }, + { + "key": "0x1b72395413c3b69d4a883e26323ddda81598c431eed0fc31c289c4a4e83eb4c", + "value": "0x5bbfa50" + }, + { + "key": "0x354882f85ac3ad7c3e7a5485034b8615e085ae125daaccfb57db64fdb92c771", + "value": "0x1d905c0" + }, + { + "key": "0x420f12803da8627f6b31a810efbb83ca75e44a8947693cb2b0adc5d4bb5c8cb", + "value": "0x1d905c0" + }, + { + "key": "0x3b86765c38bae68a0f1587fcfae027c4bca7971ada7f9f959e4dd4252e45f0b", + "value": "0xf58f8" + }, + { + "key": "0x3e936dd9bcc032b509cab8bdc9d2471f45126a2af67b869da0afb6ee38a87f4", + "value": "0x1d905c0" + }, + { + "key": "0x6a6a1821f45e7172dfb0f0e2f51750270df833fb66605dd5470810ccabdc75d", + "value": "0x1d905c0" + }, + { + "key": "0x168063cc6fba746ae9bce9e4c8dba1816b2d571d88f003b33c46d9f6e19d203", + "value": "0x6b6f" + }, + { + "key": "0xe3f75a129028dda5d7b07797b9ebf53bb514a700d86dcde1b0a5b3e4025c96", + "value": "0x1d905c0" + }, + { + "key": "0x5eb1f2ec3f811bd7cc7ff22633e0ab78738fab0426ed79288f39b2d56cd9a91", + "value": "0x1d905c0" + }, + { + "key": "0x6e7fc1138b0f5028a141da3c9dceb4104c0b3ef63bbf5bdf746fffe1cf3051b", + "value": "0x1d905c0" + }, + { + "key": "0x40ca7623b29445e9e83a339ac14ce3d1087d8fb801a961eabed1b31112f06f1", + "value": "0x26d1225" + }, + { + "key": "0x6ba9d68a4633225b4a234d4ae069c8c42e24cf351d33d373af922da7198dbc5", + "value": "0x0" + }, + { + "key": "0xbdb80b0392a1b20552bc44f8fee3ededb87e461c2f235a2f2935057f79b8ed", + "value": "0x17d1e95" + }, + { + "key": "0x1af2de636aeec34b8cb1fa5d6c60ab21d124fc59e46f4cc0b7e77f6a0269741", + "value": "0x0" + }, + { + "key": "0x4caa6a8c95104afb0a6cb8d8903683f3c7766256a2abae7725240743d470c2", + "value": "0x1d905c0" + }, + { + "key": "0x3b74261c5d853e43ca2f1092004bc60ebbd4ee9f36ef29941c71f75908420d7", + "value": "0x353" + }, + { + "key": "0x15b06bddd80708cebe742e7be8591e96af1b83357473d350b98b66d4aae3188", + "value": "0x3345630" + }, + { + "key": "0x71a19b4998859f7cba70edb1e9f67aea3bcf9ef7ea6f876a6e522efff900c04", + "value": "0x388b9a" + }, + { + "key": "0x2f103bcea784d1f6501dd953a5c9b5ed1bf282a6ed430ea704fc088086dd081", + "value": "0x15344ea" + }, + { + "key": "0x3713bab4467fdf657069badcb2d75f21c64f43f2e011c9d32255678d94b7eed", + "value": "0x224a217481" + }, + { + "key": "0x570849f0593f1d5a818c9d4490ed535975124ab519bbbe7ee5afa8b74ad7509", + "value": "0x0" + }, + { + "key": "0x2515386059f3c3f24e19865e36de617adf6ea537166683bb8ef27c563d44ec6", + "value": "0x1d905c0" + }, + { + "key": "0x4ad7888089ec3442dae2b5e16a34ce884a63d8dbfb3aa704388776e25fd27c2", + "value": "0x0" + }, + { + "key": "0x687398b8d1d2635075b00866477ca70d7f105e761b822f791b76fcd2706c262", + "value": "0x1e8edf0" + }, + { + "key": "0x4b861fc4376a46130748b1ec952573548c7c64824d409c9a4dafb243f5e935", + "value": "0x1d905c0" + }, + { + "key": "0x182e68f17456af400b358fce1c557d85739a19330a0e43cf3fce32a75dee695", + "value": "0xd5fe646" + }, + { + "key": "0x34847e759c85d3599217d8a7157faa5b94931f2afded22ecd799c6beb519756", + "value": "0x1d905c0" + }, + { + "key": "0x41ab16fd8e86aa7721e204c45791a31bda0d9b96fbc68393fe1879b1819a511", + "value": "0x13ed2b4c" + }, + { + "key": "0x5064687a07355975373a6cdc7e9b1faa0121433e073bda62a19d01df8499298", + "value": "0x1d905c0" + }, + { + "key": "0x36419a6817d78852ee9be387b38f931d01c72b9866cf3a41ff66cb18deddc31", + "value": "0xae41fc" + }, + { + "key": "0x68989d1331cea02d5dbeb831f6e91999903fb052af5c9ecfcc5688de48225", + "value": "0x54d7ae" + }, + { + "key": "0xbb571777046c93018e6c5125c26acf1ac8aec53439e6aba9ac1562271ad8e2", + "value": "0x1d905c0" + }, + { + "key": "0x1c0d06bd7060fec0ae69b82cb9dbed198512b21e28f74090aed0092ad8497f1", + "value": "0x21568da1aab" + }, + { + "key": "0x405c2689d6141ee1cc62e1a05978a05fd27e62b4dab3ca5e219a30d978e5332", + "value": "0x1d905c0" + }, + { + "key": "0x6dafefb86f1cee04ff8bc4270644a7bf2d080e584d2597b1ac125546f99b4ff", + "value": "0x1d905c0" + }, + { + "key": "0x1c2f642d85b9e42fea8c462a172760dada46ca50b90824c376a05a2fdbe7fac", + "value": "0x39ae515" + }, + { + "key": "0x2862348d285bb5ad7cdf093a4daa462b199da28fb0c8e29dcce17f1965989be", + "value": "0x1d905c0" + }, + { + "key": "0x2f6b16f0e89511a87c1ae4b87218bd43bf4da5e44e888c7063932afed368a30", + "value": "0x1d905c0" + }, + { + "key": "0x245872223ba5cb51628f50ed0e293726e16b08e5fab15bbc07776bbc1353720", + "value": "0x1d905c0" + }, + { + "key": "0x57dbb90d6e3e6e431c1c03742f9795d1a3aa56124a18374977c0fcc2a0c6b73", + "value": "0x0" + }, + { + "key": "0x720ced0254b8bebab7d8ced7e7b024789bb945e988c1cf5af9bc1688cd1f56c", + "value": "0x1d905c0" + }, + { + "key": "0x7aee6702763c0e2d71582bd696423f5b7fcc24e90a9be2422b2ff85bc56b55b", + "value": "0x389135" + }, + { + "key": "0x7b918d0179bec969200bcf3bfc97609f1ff75580c1f242e9a9dc94e733f26d3", + "value": "0x3887ba" + }, + { + "key": "0x7f2fac3e5dae50f74a3cfba59ffe6c53e6fd48fa2b86c5453a25f6cc8bf13d8", + "value": "0x33f192a" + }, + { + "key": "0x1ca5f22d0a5174f52984df8036530dd52c5fdb53767ae6570c547533d070b94", + "value": "0x23d3560d4" + }, + { + "key": "0x63bb0d3ddc18a04b45b87c074459886c47311c3a973179a09ba9986bd388a1b", + "value": "0x1d905c0" + }, + { + "key": "0x2d413640033f3b1c809d71f1bedc25d43580fa4f65ea3a7c6a72a1281d2ea74", + "value": "0x6b6f" + }, + { + "key": "0x4cb99b492a8bb6c0be9e8ab47bfb5469de50d1da7e1afa960217693cbb174e0", + "value": "0x8e43" + }, + { + "key": "0xacf63e4280da4778aad5e51aa6500d32f11cc3dd60f3b499a198b536f2ae7d", + "value": "0x1746e2" + }, + { + "key": "0x56cbab2e2eee4583a4191cea835945c10141454eb5940995469b73871a9364e", + "value": "0x0" + }, + { + "key": "0x2f50ed74306b0693c83ba763085e1fd9c173a6fae153afe3453e56fe07d9195", + "value": "0x6b516b" + }, + { + "key": "0xa03f1d5f148de131b30c016440297599b5cf904f1c9fbbd08851698310355f", + "value": "0x1d905c0" + }, + { + "key": "0x35af65165c578290e1708a549d33418e1f9b04e070b7e65665f0d64f90a0401", + "value": "0x1d905c0" + }, + { + "key": "0x54ee9bca9838eb5684276cc0f2a2dda239afede06798c068d769b55c347ed17", + "value": "0xe0e5fd" + }, + { + "key": "0x369f33538b0ca73f1ce5de8dfb37d5e0526383c8351d2a07665bd34c97fc4bd", + "value": "0x1d905c0" + }, + { + "key": "0x13cbe4973d24e8ba62792dda2cb997830162a44d8e57c4e88645bb3fea13e4c", + "value": "0x0" + }, + { + "key": "0x5190fbe54f648bef852967cb4368d3cb976fda68858e25dab7e9e8f9aa3bfb1", + "value": "0x1d905c0" + }, + { + "key": "0x6131a66f8fc938e5e72796b2481dd22f47dbb2ff5c05831f28e26359f9e477f", + "value": "0x46b1cf2" + }, + { + "key": "0x7d26a440f412674c48aa6ddfb16abf303962c768529b183e228a3c55b481f71", + "value": "0x0" + }, + { + "key": "0x4aa2885ee95e2eaf83fcdaa59539ef9301372e916bc2419274d92a453c2b422", + "value": "0xd25a955ee9" + }, + { + "key": "0x2578f4bca54980b38651faf1448cbd232eb79f41af23e5639725c8aa93132a1", + "value": "0x19d23c723c36" + } + ] + }, + { + "address": "0x3448896d4a0df143f98c9eeccc7e279bf3c2008bda2ad2759f5b20ed263585f", + "storage_entries": [ + { + "key": "0x7ba7f913ea95be6c2ca29c63efc34dc6d8e0672acd34226d36613be5159bcbb", + "value": "0x1" + }, + { + "key": "0x2f3a28710ce1fea7a267f8622758dab7a96f8056d55fc2b0f98aba3f97fa963", + "value": "0xab42fe5bf8ee2b49771bb0aeebe3c5ce6fd069aab6a758dee085245b351ff0" + } + ] + }, + { + "address": "0x31a01140eba43fddcd67ea8dea4e7672cfacb8bdd91f884703c6ff6a3b0d151", + "storage_entries": [ + { + "key": "0xf920571b9f85bdd92a867cfdc73319d0f8836f0e69e06e4c5566b6203f75cc", + "value": "0x33434ad846cdd5f23eb73ff09fe6fddd568284a0fb7d1be20ee482f044dabe2" + }, + { + "key": "0x1ccc09c8a19948e048de7add6929589945e25f22059c7345aaf7837188d8d05", + "value": "0x549198a6c08586b0324b358c5892d26f59f282d9e8584f4107e4aac596fa84a" + } + ] + }, + { + "address": "0x1b22f7a9d18754c994ae0ee9adb4628d414232e3ebd748c386ac286f86c3066", + "storage_entries": [ + { + "key": "0x773c6d237e622878286344ee1db728fba2e542fa1df349e7ff7e93994b497e7", + "value": "0x256da" + }, + { + "key": "0x36718f989ccbb1a2e00be4e9a73d4929a8885ca67a31dee2a963ebabd27c0ed", + "value": "0x13fe7c3a3d7cb5ee473c80f5b5531069001c4568af79604b250af2d84a822c4" + }, + { + "key": "0x476822308863b52c17d8444a0e80eba0f36a9ae1cb58982064881c536009d71", + "value": "0x2f42a22fd623f357ba9fa946988189551f4628199fc9e5a8daf5e6679a0917c" + }, + { + "key": "0x3fc573e98cf6d17d794209e6faa649a901fdcadf7d97404024112dd0ca891ef", + "value": "0x4a8ad33bda485e6dc49c696d0cf858f0289eacd9a253fe4e1a3d1dca60124fb" + }, + { + "key": "0x6103542849af66580df199f878979035e9edd4058e6065978354a187832dfcf", + "value": "0x5" + }, + { + "key": "0x554dfefe6d780222dcdeb482a65837957655a999311d720c406641993dcd091", + "value": "0x3bccb" + }, + { + "key": "0x54f12653e153e0f3bc5fc684800523ac06aa30ce2b581dde851c0827872cea5", + "value": "0x5" + }, + { + "key": "0x20d9779a5cab72cded95a9d3c3df5787f96b49bb31fc21d21e50dbd60b1c72f", + "value": "0x3" + }, + { + "key": "0x8f5cfb024ac9729f4529e2aa862e7a8f227f7de1ef0f62b85a25668c32f6d1", + "value": "0x1f18e" + }, + { + "key": "0x4f09c83041d15b2aec361c05ce29f7e58403ab853912710c39a8ea05400d81f", + "value": "0x6ee8d3ece57c7a79fb38787398544b64ac56b6f4758f97c323de80612483674" + }, + { + "key": "0x7c699cd44bdab7b4b31db94176288f1615aef1f63787229d5fd1c7bcc34fed4", + "value": "0x2c0d37179793900cb70fac0bdb157be373cfa6a0f886f473f6c72b53d67f738" + }, + { + "key": "0x576e2ec8e001b9b9dff0f5de42ae0785690c5b17429822102ad62a49d9e48f3", + "value": "0x44b5d" + }, + { + "key": "0x59bf48d044d278b332b82cf28a2a447e259cc0298ac91bdeee6e299819fbcce", + "value": "0x2ec88" + }, + { + "key": "0x1c77f64618cbba1c9844ea2a9111499d37d9a716939c80fd9aee8b53b7f9f82", + "value": "0x7" + }, + { + "key": "0x784d213217de78732d4911520ac52f9dc3aa5065c99a3b153c95fa21c0102b2", + "value": "0x24bc570a85a6b588f3444bda265576cc6241b633a331f7af5e8c4ec0d39dabf" + }, + { + "key": "0x367c48257f941de84d6dea1a6164278b52cf51e769d0ebf34cb685a66f2f21f", + "value": "0x363c824e4e00ea58d15db46e5deee14fe2b0eb540e25bfb1123d43bfd445265" + }, + { + "key": "0x50467447533c25b47f6efb1cd9ad9735ddd89297ea9171f9577b8b630576bb6", + "value": "0x5" + }, + { + "key": "0x3f755c6350fe301f66a3eb3cb95e3e39fa9267d3d8cbdc335019e64e08282d2", + "value": "0x7992fdd6fa18923613c7ab61314001c5e0a3b4b5eb8e90218a73ad78f48ff85" + }, + { + "key": "0x10471b57b6dcdfb948a763f2c43f13a75472ef2cc678471a8abd50cdaf380f5", + "value": "0x6" + }, + { + "key": "0x4413b663137ee0bc5508ae4cf2fac3f42490c4ffc71e7f55addf460e53d6560", + "value": "0x5" + }, + { + "key": "0xcd89ee7a6a7b2a07ee1fcf5fe14c698ec61e7b38c287e8c14d576df86ca761", + "value": "0x4cb22" + }, + { + "key": "0x13c542f1fbbe7cd3ae2f8b60da6090bc9225a8f2a2bf9b0bfbd477603c0f1b2", + "value": "0x3" + }, + { + "key": "0x3e856d144cdac9f29d0f2fc0eb02938ccb8121175ee79ef536ec67e7cc40506", + "value": "0x2c0d37179793900cb70fac0bdb157be373cfa6a0f886f473f6c72b53d67f738" + }, + { + "key": "0x505376437f81d68e4ca0d4ad37a987841836eba7e717321852ba6a1945ee403", + "value": "0x48f927a94288250881c3e0e6eb11f8e0ac7bdf9a9661d6471f7bd773c6076a2" + }, + { + "key": "0x7e33ec9ca478cc9a91a7d77329d2888242d538201c5be7f052a01745ac4f31a", + "value": "0x676ceae8ff1c7a0a367296d5f435e1611e3a855a6ee97422f051037948a63e5" + }, + { + "key": "0x27f55478ddb426daad651bda92472c0b6177c9006a67a7fc4383f84458b79f2", + "value": "0x5" + }, + { + "key": "0x5aeca42eb4eedee2db253e9145b4b59d6e4354cccc8df2a42919551db1e3c25", + "value": "0x2c0d37179793900cb70fac0bdb157be373cfa6a0f886f473f6c72b53d67f738" + }, + { + "key": "0x5ef8c9d95ec695e4ac216e338c8abc08fd037404532f03ee7db81cb27554853", + "value": "0x7992fdd6fa18923613c7ab61314001c5e0a3b4b5eb8e90218a73ad78f48ff85" + }, + { + "key": "0x7198986fe01065b67513ee7b8bf1fef952967e51e99cacb91c4bb0d1b5dcf44", + "value": "0x5" + }, + { + "key": "0x7abcd91c50bd8c79826f1f3d7291ee1154fabf3ac7643591f5af54532afae0b", + "value": "0x24884" + }, + { + "key": "0x76a4f83c404463bf26a7ca66135200f4a3fdcb0b6e3d443f870919282aa3934", + "value": "0x6" + }, + { + "key": "0x23ca1a612fc23595ed14893f4ee70d445d3bd8a97a1a5263a453f1a95d8d4ff", + "value": "0x6" + }, + { + "key": "0x459d9de0a304d47ba87c34dc21a8090cc7dd8bcbd0429c5a5d934f568f2b2c1", + "value": "0x1164fd0b636414884071e077e87ea93f0a61c106088ba6087cab4382509f25d" + }, + { + "key": "0x68a6b6dee346de6a1bbc424318e9b6ed9bb5c1039726c765f49825bf7d32582", + "value": "0x52f9b7d160a1660b0493d983ae9b144b0ca7e25ec941e2b538981924fd796d3" + }, + { + "key": "0x762db43f0c0fb5d8aef82a23ed12ea6bf5e9ba7625e7dfc15fae47756dfac97", + "value": "0xc89460b6e490ef756be3a9f6997943e53a527892b830830e12d468bbbf8085" + }, + { + "key": "0x6ae969b747fd8f3230d1a97464404301f1a2b3b49a518059ed90877f4597230", + "value": "0x4" + } + ] + }, + { + "address": "0x32ebb8e68553620b97b308684babf606d9556d5c0a652450c32e85f40d000d", + "storage_entries": [ + { + "key": "0x4e9417c05bcf183e111558ce4666b053bbfe9736b74fba16b017ab7ae075f1", + "value": "0x25de23099dad448055c" + }, + { + "key": "0x3cdef5d80c6ad04af135e445867114b5ce32ed8dc8de667995f3d27760e3520", + "value": "0x53cbb4ec750db2ed" + }, + { + "key": "0x3e65716c9b9f010d10085941d0c6e6dfb190695b7cf09a71f0aca74ab94cdf", + "value": "0x1f7c2c957fc3e302948b7b" + }, + { + "key": "0x24dc99466e4418b4fccd818c369e805aa4b2c2e28731ca51ec24311cfb85a69", + "value": "0xdf862eb2f333d015dd3e1ed2" + }, + { + "key": "0xf1ec356adea149fcc8824a2b8712d81d1df416b0f8f8ac32931c66d5f80501", + "value": "0x1c24e457152ff0" + }, + { + "key": "0x2e3f9cadd00a7b869d6b98db5d32847ff18a5561c3f3f7a944380864c8f247b", + "value": "0x64ab9e2c" + } + ] + }, + { + "address": "0x5abfa46fe9bf3323dfe801da51174729c2b3dd060b80575b29c015245899d74", + "storage_entries": [ + { + "key": "0x13a9d623f0c45c92edb2e5f189cce37a8562fb9be50d152562f5edeaea4eb1b", + "value": "0xfb390a1ff16342d" + }, + { + "key": "0x7375e9871855f0df20f1bfb507acf9395462ec22d52ebc45a6c71c2d54922d", + "value": "0x20afa0ad98908995" + }, + { + "key": "0x7375e9871855f0df20f1bfb507acf9395462ec22d52ebc45a6c71c2d549229", + "value": "0x2" + } + ] + }, + { + "address": "0x4a3621276a83251b557a8140e915599ae8e7b6207b067ea701635c0d509801e", + "storage_entries": [ + { + "key": "0x2d48e29f8a234f841d25c1c5dee24fad2f6d9664b1ce63c2d67dd9f52ad361", + "value": "0x779d0" + }, + { + "key": "0x7c107dabf6a8347146d419400e93e891893cf6bd68f9f450526e98f01b806f5", + "value": "0x779cf" + }, + { + "key": "0x262d01c4ea0ba5224219c45caec496441066662f6d51da63f7a7184ad4d7beb", + "value": "0x779d0" + }, + { + "key": "0x182852ba6afd049657f61a43fda49321aa2535028f229cf16aff958ea30057a", + "value": "0x147bc633b644d33bf8f92492c9baff4feaa5eb" + }, + { + "key": "0x182852ba6afd049657f61a43fda49321aa2535028f229cf16aff958ea300579", + "value": "0x697066733a2f2f54ca3d562bb1649df7fea3b87301daa85fca1573390eff41" + }, + { + "key": "0x2c5876339b4b9a9189eb3d06adaa7f58b0a7c0d9ad5b87ab9217e18ed157c4d", + "value": "0x1" + }, + { + "key": "0x6d82d24ce27ad6fc2f5f8deb6ae0866ac0c740063916aa335394d4876f43369", + "value": "0x779d0" + }, + { + "key": "0x60191400011adc11a040bb0f5c5a5140af572d49835091cf62c53cecebbb2ed", + "value": "0x40b23dacea9ad5b217840598a35dffd32ebdd98e0e782546a54614d985a24eb" + } + ] + }, + { + "address": "0x3fe2b97c1fd336e750087d68b9b867997fd64a2661ff3ca5a7c771641e8e7ac", + "storage_entries": [ + { + "key": "0x239a744782b9eddea86273b9ccf1978fd1c3c79f4c38e3702e597785704c12f", + "value": "0x15bf7a94" + }, + { + "key": "0x13d0c87635987c37a5fafb2f1252457cc5304affd8a6d7eff25275377aabd5b", + "value": "0x6e547e0" + }, + { + "key": "0x4e99e0df9e4e29049ae29f99f8796066150f5db442cfbabbdb6ada6fdcbc14a", + "value": "0x112f" + }, + { + "key": "0x2144299fb50e5a0518e0decff2c4a696db0bd8236d09e6dc1440e3ee18fef29", + "value": "0x17ea" + } + ] + }, + { + "address": "0x17e9e62c04b50800d7c59454754fe31a2193c9c3c6c92c093f2ab0faadf8c87", + "storage_entries": [ + { + "key": "0x19dbc9b4eab95d05b7871c69cdeef24e69dc2a3536f0c6bf169000dc1fdd20d", + "value": "0x291b3571a1a032abf77f380e939fbb5e" + }, + { + "key": "0x332df419aa058c3f4b36acbf5af4b7e8e3d4dd58918d5f0ab2841741e7b55c2", + "value": "0x64ab9e2c" + }, + { + "key": "0x3b3a699bb6ef37ff4b9c4e14319c7d8e9c9bdd10ff402d1ebde18c62ae58381", + "value": "0x274163614efb210db" + }, + { + "key": "0x1e6f3e4333da349f86a03f030be7f2c76d8266a97c625746ebb9d3220a39d87", + "value": "0x11aaec8068d24a4cd138" + }, + { + "key": "0x2712b812fff3c2f3b38d4c532c684b5a1800dae9c4a8001c6f855bb520c7c5", + "value": "0x3c328df054ccc332af03f62c0cd1f68e" + }, + { + "key": "0x19dbc9b4eab95d05b7871c69cdeef24e69dc2a3536f0c6bf169000dc1fdd20e", + "value": "0x8b476" + } + ] + }, + { + "address": "0x10884171baf1914edc28d7afb619b40a4051cfae78a094a55d230f19e944a28", + "storage_entries": [ + { + "key": "0x17cfc6551871a468902c6da51eb19b4a8cb858bc18ac0dd3ab8bc19ef7c4d08", + "value": "0x14e01af78a13e24e8e" + }, + { + "key": "0x2487f67598912d31ab84d8fa97c9e78332d00795ecdad092ea09f9c9c14a9a3", + "value": "0xae4dec2728" + }, + { + "key": "0x2487f67598912d31ab84d8fa97c9e78332d00795ecdad092ea09f9c9c14a9a0", + "value": "0x15d745542a52ead0e1" + }, + { + "key": "0xb61ad1b0cce680166d9ae08293663dd76ee32f60afcffb51a601414abe03e6", + "value": "0x272b9a16a444f2670" + }, + { + "key": "0xb61ad1b0cce680166d9ae08293663dd76ee32f60afcffb51a601414abe03e3", + "value": "0x11b2d9a1b0bcf65e14de" + }, + { + "key": "0x4ad5399a6c5b6103e5ad130e0430f02556c7cffc406625fbcbcea4e612b0ac7", + "value": "0x31f0b8e930" + }, + { + "key": "0x4ad5399a6c5b6103e5ad130e0430f02556c7cffc406625fbcbcea4e612b0ac4", + "value": "0x640fa372c6b3f285d" + }, + { + "key": "0x17cfc6551871a468902c6da51eb19b4a8cb858bc18ac0dd3ab8bc19ef7c4d0b", + "value": "0x17d6c12e62e8a7cfcc" + } + ] + }, + { + "address": "0x60582df2cd4ad2c988b11fdede5c43f56a432e895df255ccd1af129160044b8", + "storage_entries": [ + { + "key": "0x3407f29c2df82575e67cd93c49da2b608e1ad5618178ac4f6cd629ec80d058c", + "value": "0x68747470733a2f2f737461726b76657273652e6172742f6d642e6a736f6e" + }, + { + "key": "0x5b97a83855582696c34ab5604325d2ec925e5dccc9154af703c1608df3cdd30", + "value": "0x1" + }, + { + "key": "0x1924a01cbc8882d7752d6fd6c9f2a1bfdbb4e32a2ea83779e39c0f5c4d29e23", + "value": "0x48d19699d6798f6a6fd38ea1817ff0d3744ff5c06fdba841be8941a6040816a" + }, + { + "key": "0x19618e73125fd9717c6ca863ede0ec6d5f2ff6318a8468fe46cc7210cc7333b", + "value": "0x1c521" + } + ] + }, + { + "address": "0xda114221cb83fa859dbdb4c44beeaa0bb37c7537ad5ae66fe5e0efd20e6eb3", + "storage_entries": [ + { + "key": "0xa6e9272881f51fae2d08c268dd89d7a92f6bdabe3366e40fd18b68f09a7508", + "value": "0x25de23099dad448055c" + }, + { + "key": "0x5c7b0ac9b18dd7041910d7b12f1e89762abc7928c3887eb9e10c7fe60f090af", + "value": "0x19a74eb16b53df93" + }, + { + "key": "0x286f83d74dc327d2c19d9eef299f96bdfb7e3ede5cdc90c102ee8c195ef033f", + "value": "0x4ff80febc69dd" + }, + { + "key": "0x70540462823de664dc40daf4eede1dbde43aa1aa78a3a87d67e7b69ff0b4d13", + "value": "0x0" + }, + { + "key": "0x1d783eb85d14b6378c8b99edb689aa1a5515a65c1a94966ceb11ae6a1ddf521", + "value": "0x29a2241af62c0000" + }, + { + "key": "0x365fa7a02e092b628b28a9212c131a71c455243ff5105cafcc9894e2c67f2a7", + "value": "0xd6dc241ec9f0" + }, + { + "key": "0x37eedfdf19926e2bd6ebfd8e4ce0eb013c1aa47d114178ebae9a4168cd83cc", + "value": "0x11aaec8068d24a4cd138" + }, + { + "key": "0x11123cdba2170812b106357b5604afef0e1ff3787ae64505908505a81e48cd5", + "value": "0xd6dc241ec9f0" + }, + { + "key": "0x4cfa944bb8e0b0e9ed6e8d0b07d6b5e42f4b862d1b3579aeb4dd78b519890c6", + "value": "0x3212d390707d71a3" + }, + { + "key": "0x28424ab1e5a1b72ef45e34ef9d955931e0721623afc53bb09edaac96b5bb54d", + "value": "0x18fc84e31aaee4f41229" + }, + { + "key": "0x1727959ffc61af4f1ac7048675a680562826825924160a0fa211500787052a1", + "value": "0x272e2bee6bbe8027722b" + } + ] + }, + { + "address": "0x47ad51726d891f972e74e4ad858a261b43869f7126ce7436ee0b2529a98f486", + "storage_entries": [ + { + "key": "0x3ff84adadea93d47db8108c7bb4a6e75c7d5391e4c10103babc826f9667f597", + "value": "0x1ca67f" + }, + { + "key": "0x48be3692ab3e9e8bd4a134a7b958b4e69bcb00a71d4f58c22f9311921f12bcf", + "value": "0x2925217" + }, + { + "key": "0x162f3e4ed84e372c1c6b6b01b0e174cf55b270f264a8cb84b8345ee70942d16", + "value": "0x0" + }, + { + "key": "0x145f0d886d1d24e57a5e380d99414f6d58f6f9a17f2b6ce9388d4e3e20ecd6d", + "value": "0x0" + }, + { + "key": "0x1d430bf138ea7c30cc4ba41938ff8081ecede809c1d7bc56b785784aceaae08", + "value": "0x4fdb419f01" + }, + { + "key": "0x2ca7285a41424ff2357850bb389fd837f5c2b08e42039fce38ede9929af444a", + "value": "0x2708" + }, + { + "key": "0x6adf0527dc2faf56e493f66dbbdc77e51c5da59dd7b0ee9161cae89daf4f26", + "value": "0x0" + } + ] + }, + { + "address": "0x55c242db170dacd8b3dcf0f69090315835b0b7afedd37194260f6a11a3db39f", + "storage_entries": [ + { + "key": "0xf920571b9f85bdd92a867cfdc73319d0f8836f0e69e06e4c5566b6203f75cc", + "value": "0x33434ad846cdd5f23eb73ff09fe6fddd568284a0fb7d1be20ee482f044dabe2" + }, + { + "key": "0x1ccc09c8a19948e048de7add6929589945e25f22059c7345aaf7837188d8d05", + "value": "0x643ad01d4260906d8de4a378ee4600fb76411c1594378c93f4a43dd0c633a72" + } + ] + }, + { + "address": "0x42b8f0484674ca266ac5d08e4ac6a3fe65bd3129795def2dca5c34ecc5f96d2", + "storage_entries": [ + { + "key": "0x4ee264b021a53564c373e803f8d441871a2d68cf27e3716f5c6363744cdc3aa", + "value": "0x4917817e56bc66" + }, + { + "key": "0x2a471f904a2979048992789a0525053ed465775ab4981d4dc25e329b8b9893d", + "value": "0x9b11716f3805f6" + }, + { + "key": "0x49a8ef79cab313360767015d427d0307368eff5c2c81b019aff018ec638eef2", + "value": "0x14e01af78a13e24e8e" + }, + { + "key": "0x7f802c7292ed48fd9fddf95364eb9481a6e6d1222e666e5b1280058f1eef92d", + "value": "0x64eb4cd9435ea27c" + }, + { + "key": "0x21d1e885f8b1931b2e997e1ae571d9200591568485074dc6b02039aba0b3b9e", + "value": "0x271444a652ee21" + }, + { + "key": "0x142590b89b39abd61344c31b6fd7503fcf92badba8a884314307f153655c2c", + "value": "0x0" + }, + { + "key": "0x1671adef483709788a335cebe4ce51384f04a073b99c0b48a71517ff14b223d", + "value": "0x5dab2536f303" + }, + { + "key": "0x230742ddf18073c15e36c3def1db5a954e67e6a4b0c456badc62139dfd4ed9c", + "value": "0x9b1ab3d1269427" + }, + { + "key": "0xa3d5f4308cccd2f07178d69e780902409a3f18c36c01b15feb4c2865a5b95e", + "value": "0x0" + }, + { + "key": "0x13c9b3f002bb9bb77d749d79e5a3082e5d14cd678c9f022006f9752cdb0e0ba", + "value": "0x0" + }, + { + "key": "0x60e609445683d3fac756a4470b54363d31e8c17ccb206675554cacf7b612106", + "value": "0x0" + }, + { + "key": "0x16577a890481a2e6776312ed6f6760bd165b51123d80d2bbead3447d05b58e5", + "value": "0x697db4fdc296da" + }, + { + "key": "0x7c1826e2d125f774203fb2520de37e15a8e66a744269c5bfcf2a726ca115f0d", + "value": "0x0" + }, + { + "key": "0x39d1faa8c2150a09fb2e231aafcd53581dbe68535d1833a500d71f11d909e39", + "value": "0xd72f200d9787ef3" + } + ] + }, + { + "address": "0x68f5c6a61780768455de69077e07e89787839bf8166decfbf92b645209c0fb8", + "storage_entries": [ + { + "key": "0x35138eed309499d16e81ed5f4f85ca30c381992e22ce7f91134f7a405f9fdbb", + "value": "0x1c7b04" + }, + { + "key": "0x57b10c17850ec1320989e5c91d5392b33b75e14869e658417f8ee3d830e40f3", + "value": "0x23063f7" + }, + { + "key": "0x41ab16fd8e86aa7721e204c45791a31bda0d9b96fbc68393fe1879b1819a511", + "value": "0xc596019" + }, + { + "key": "0x1da8c44c38e9d3ddffa16f5428be6fb2a51374f0874077a7b59ed8cf67818ef", + "value": "0x5913057" + }, + { + "key": "0x74fb5b61b91770f8841a8101769e9f6f9085fe8536ad632469a100c25caeca8", + "value": "0x137a5b" + }, + { + "key": "0x76bd6a0639853b76bb254cf3cb42ef5484f0c55a809d296af1c9e5be0ac501c", + "value": "0x12a853" + }, + { + "key": "0x510c664db84ee917626c9a54fc14d86c3f1ac58176a20b04944d035a87fd0c7", + "value": "0x25c4113e71" + }, + { + "key": "0x5023bfc0a67e8e98d7ce1071493ffa61a08581659b532d70b15b489730580da", + "value": "0x1d905c0" + }, + { + "key": "0x5fad7613fd327fc13290b4c80dcb56b41035cff52310cc2f9e1d7de286fcff1", + "value": "0x6ce8b1dfb7" + }, + { + "key": "0x73e797020877be31fa33283c28cd483231eb173343e059783492bc1a4f8688c", + "value": "0xe11241" + }, + { + "key": "0x3713bab4467fdf657069badcb2d75f21c64f43f2e011c9d32255678d94b7eed", + "value": "0x4ffacbed5" + }, + { + "key": "0x49a8ef79cab313360767015d427d0307368eff5c2c81b019aff018ec638eef2", + "value": "0x440fca24d0" + }, + { + "key": "0x68989d1331cea02d5dbeb831f6e91999903fb052af5c9ecfcc5688de48225", + "value": "0xc6cbb4" + }, + { + "key": "0x354cd7a876888171d6e317d7225935c7622c5458c69e20a6e0667bfe6349b46", + "value": "0x69aa0a" + } + ] + }, + { + "address": "0x124aeb495b947201f5fac96fd1138e326ad86195b98df6dec9009158a533b49", + "storage_entries": [ + { + "key": "0x38cb87fc73b4407bba211245b5fccc970ea91c77e45942bb6fecdcc4f1730ed", + "value": "0x170caeee7b3f558145c2" + }, + { + "key": "0x20103607d7017eacc8b0d88b3f2eaa8c19a17aee819b623f805205a85b2c695", + "value": "0x1ae361fc1451c0000" + } + ] + }, + { + "address": "0x2a6e0ecda844736c4803a385fb1372eff458c365d2325c7d4e08032c7a908f3", + "storage_entries": [ + { + "key": "0x19dbc9b4eab95d05b7871c69cdeef24e69dc2a3536f0c6bf169000dc1fdd20d", + "value": "0xaddab38275ed239582dfefb40" + }, + { + "key": "0x332df419aa058c3f4b36acbf5af4b7e8e3d4dd58918d5f0ab2841741e7b55c2", + "value": "0x64ab9e2c" + }, + { + "key": "0x3b3a699bb6ef37ff4b9c4e14319c7d8e9c9bdd10ff402d1ebde18c62ae58381", + "value": "0x1041dcad90bc21498" + }, + { + "key": "0x1e6f3e4333da349f86a03f030be7f2c76d8266a97c625746ebb9d3220a39d87", + "value": "0x6e547e0" + }, + { + "key": "0x2712b812fff3c2f3b38d4c532c684b5a1800dae9c4a8001c6f855bb520c7c6", + "value": "0x33fd5587fc73" + }, + { + "key": "0x2712b812fff3c2f3b38d4c532c684b5a1800dae9c4a8001c6f855bb520c7c5", + "value": "0x9460b4987841e569bee188c5545e16f9" + } + ] + }, + { + "address": "0x7c351118b538157458aebedb92212624027f4813ab39cd7971df9f1720f7633", + "storage_entries": [ + { + "key": "0x262d01c4ea0ba5224219c45caec496441066662f6d51da63f7a7184ad4d7beb", + "value": "0x103cf" + }, + { + "key": "0xa16743921d2458f53dc505745e09a583348341d2328d8e2d0052fc3d30931b", + "value": "0x308daafece70cfea1e19b56405b368675c159caf3a1f539b21f6491e91a0b25" + }, + { + "key": "0x3d0e5c1fc1f830b8db556a01bf3e33802c07908a6277b2ceb81626b3bd655ae", + "value": "0x65" + }, + { + "key": "0x5e27223ebe14a240405d274546bd93ba55dee3d5cb7221aac3a6f87b06fe30e", + "value": "0x103ce" + }, + { + "key": "0xc753f22af8bc230bb5a89e32655e9be71fd5165e727743607b2395e7dd1319", + "value": "0x103cf" + }, + { + "key": "0x7d15d6434d6ba982e5d33b8dc319b49f39ad07dbe3ac0ae582c11abd45ef720", + "value": "0x1" + }, + { + "key": "0x71fea69130b0c6ab2c26acce45cf24f6ed022016eca1745f84a392be4710459", + "value": "0x103cf" + }, + { + "key": "0x7c115c5843940b647cee0ed0705a8d3f93948b4fd62545afadb32d51578e81", + "value": "0x103d0" + } + ] + }, + { + "address": "0x5900cfa2b50d53b097cb305d54e249e31f24f881885aae5639b0cd6af4ed298", + "storage_entries": [ + { + "key": "0x3b3a699bb6ef37ff4b9c4e14319c7d8e9c9bdd10ff402d1ebde18c62ae58381", + "value": "0x25c4113e71" + }, + { + "key": "0x1e6f3e4333da349f86a03f030be7f2c76d8266a97c625746ebb9d3220a39d87", + "value": "0x4b26ded9dfd24f430" + }, + { + "key": "0x2712b812fff3c2f3b38d4c532c684b5a1800dae9c4a8001c6f855bb520c7c5", + "value": "0x9a3d9ec0cb280090fa220d57b6d" + }, + { + "key": "0x19dbc9b4eab95d05b7871c69cdeef24e69dc2a3536f0c6bf169000dc1fdd20e", + "value": "0x3670136b90" + }, + { + "key": "0x19dbc9b4eab95d05b7871c69cdeef24e69dc2a3536f0c6bf169000dc1fdd20d", + "value": "0x5ccd971bc957c274b55d6deb526da72e" + }, + { + "key": "0x332df419aa058c3f4b36acbf5af4b7e8e3d4dd58918d5f0ab2841741e7b55c2", + "value": "0x64ab9e2c" + } + ] + }, + { + "address": "0x69d369e52fd3f8ce32ab6073a4296f4ce8c832b125284e8f0d653e02e93541d", + "storage_entries": [ + { + "key": "0x19dbc9b4eab95d05b7871c69cdeef24e69dc2a3536f0c6bf169000dc1fdd20e", + "value": "0x9a499e6b0" + }, + { + "key": "0x19dbc9b4eab95d05b7871c69cdeef24e69dc2a3536f0c6bf169000dc1fdd20d", + "value": "0x74558ad0601e860eab381ebf13ff9c0" + }, + { + "key": "0x332df419aa058c3f4b36acbf5af4b7e8e3d4dd58918d5f0ab2841741e7b55c2", + "value": "0x64ab9e2c" + }, + { + "key": "0x3b3a699bb6ef37ff4b9c4e14319c7d8e9c9bdd10ff402d1ebde18c62ae58381", + "value": "0x23d3560d4" + }, + { + "key": "0x1e6f3e4333da349f86a03f030be7f2c76d8266a97c625746ebb9d3220a39d87", + "value": "0x47c9a3141f7a0bef" + }, + { + "key": "0x2712b812fff3c2f3b38d4c532c684b5a1800dae9c4a8001c6f855bb520c7c5", + "value": "0x24897f6285bb3c5fd9ef99172bb" + } + ] + }, + { + "address": "0x22b05f9396d2c48183f6deaf138a57522bcc8b35b67dee919f76403d1783136", + "storage_entries": [ + { + "key": "0x110e2f729c9c2b988559994a3daccd838cf52faf88e18101373e67dd061455a", + "value": "0x2aee2d98ae4f1e" + }, + { + "key": "0xacf63e4280da4778aad5e51aa6500d32f11cc3dd60f3b499a198b536f2ae7d", + "value": "0x4d854d8ecf" + }, + { + "key": "0x1c2f642d85b9e42fea8c462a172760dada46ca50b90824c376a05a2fdbe7fac", + "value": "0x0" + }, + { + "key": "0x2d413640033f3b1c809d71f1bedc25d43580fa4f65ea3a7c6a72a1281d2ea74", + "value": "0x3295c0b440" + }, + { + "key": "0x36e77c2c0f8831eed23eaa3fcfda5bb4523899d24dec739f46cd184befc0f17", + "value": "0x4b6794931c" + } + ] + }, + { + "address": "0x2b3030c04e9c920bd66c6a8dc209717bbefa1ea5f8bc8ebabd639e5a4766502", + "storage_entries": [ + { + "key": "0x3b3a699bb6ef37ff4b9c4e14319c7d8e9c9bdd10ff402d1ebde18c62ae58381", + "value": "0x81394891b05289f5" + }, + { + "key": "0x1e6f3e4333da349f86a03f030be7f2c76d8266a97c625746ebb9d3220a39d87", + "value": "0x170caeee7b3f558145c2" + }, + { + "key": "0x57c60b189063035eed65879a14ad5f6e718027a212dafbe52f9bcd79e9f4fa", + "value": "0xa4f498918c1d0b83126" + }, + { + "key": "0x3351bce4793f90e4aa00447357c2d34ac08611756193d8249009e0396dd7b41", + "value": "0x64ab9e2c" + } + ] + } + ], + "deprecated_declared_classes": [], + "declared_classes": [], + "deployed_contracts": [ + { + "address": "0x31a01140eba43fddcd67ea8dea4e7672cfacb8bdd91f884703c6ff6a3b0d151", + "class_hash": "0x25ec026985a3bf9d0cc1fe17326b245dfdc3ff89b8fde106542a3ea56c5a918" + }, + { + "address": "0x2b690fae7153819735def799afa9b758e6dfaa658f1d56a3fb20400a1d0608a", + "class_hash": "0x3131fa018d520a037686ce3efddeab8f28895662f019ca3ca18a626650f7d1e" + }, + { + "address": "0x55c242db170dacd8b3dcf0f69090315835b0b7afedd37194260f6a11a3db39f", + "class_hash": "0x25ec026985a3bf9d0cc1fe17326b245dfdc3ff89b8fde106542a3ea56c5a918" + }, + { + "address": "0x670dfdf744ce5a233f133b8835e62c3d8e0d338d34a857b09e9e47be4e4ab88", + "class_hash": "0x3131fa018d520a037686ce3efddeab8f28895662f019ca3ca18a626650f7d1e" + }, + { + "address": "0x390bb59a0d435f0d928b3677146c9bb25ec3986258876459ea3116ba08a2067", + "class_hash": "0x25ec026985a3bf9d0cc1fe17326b245dfdc3ff89b8fde106542a3ea56c5a918" + }, + { + "address": "0x3b0550e59cc75308b550a5f46039a0f93b6c441f674d6cdbe5ac1eb5d49235d", + "class_hash": "0x25ec026985a3bf9d0cc1fe17326b245dfdc3ff89b8fde106542a3ea56c5a918" + }, + { + "address": "0x2931d5aa99f5923efb582f788a4f8c9246691af96cda36782e857df8fadd68c", + "class_hash": "0x25ec026985a3bf9d0cc1fe17326b245dfdc3ff89b8fde106542a3ea56c5a918" + }, + { + "address": "0x66098af0be49db4b338c1d66d94e5a1da861705e4cea28ff46e3b5ba3138410", + "class_hash": "0x25ec026985a3bf9d0cc1fe17326b245dfdc3ff89b8fde106542a3ea56c5a918" + } + ], + "replaced_classes": [], + "nonces": [ + { + "contract_address": "0x7ce9ec83fa810db7c905c4dc7a54b533ccf5a48a70e21a4af67161b993c0c89", + "nonce": "0x16" + }, + { + "contract_address": "0x62bc48f0ac5586ca8bfbdd8df9f148dd195276b6554bd8bba1f49fb6c4a9868", + "nonce": "0x17" + }, + { + "contract_address": "0x3593afda0177196bfc6e590244fda4d1620fb055219f62933c5abe6a25f6338", + "nonce": "0x16" + }, + { + "contract_address": "0x317a4a8c740d8bac46facaf49854acec9b21c9a1b92ec48d25429883a76ed0e", + "nonce": "0x16" + }, + { + "contract_address": "0x2cfde4723ed09fcb9d12bcdaddc661eb37a0df5939c05f6532950dd085f206", + "nonce": "0x31" + }, + { + "contract_address": "0x1164fd0b636414884071e077e87ea93f0a61c106088ba6087cab4382509f25d", + "nonce": "0x14" + }, + { + "contract_address": "0x13299e4daa660561b698676b55e979068568cf8f0988420eb0960b0fe3d6331", + "nonce": "0x4" + }, + { + "contract_address": "0x1191cb10112e13bc43f7ffefdb44dc78eb63efe866a2459ff4bc07a2af3f62d", + "nonce": "0x16" + }, + { + "contract_address": "0x3a6e841872ac1ffe8ec9ea80a80cc9b1718809dedb82f2bb0ff5c7d338c5693", + "nonce": "0x11" + }, + { + "contract_address": "0x66098af0be49db4b338c1d66d94e5a1da861705e4cea28ff46e3b5ba3138410", + "nonce": "0x2" + }, + { + "contract_address": "0x6f03a0affc57bc9f2185d57e1317b63b80250a457860c3315072ae84d3c5876", + "nonce": "0x16" + }, + { + "contract_address": "0x1795205b3a6e9bc546ad3129dab8c59807293cd9bb061cf0fe512ed90e344c", + "nonce": "0x16" + }, + { + "contract_address": "0x4a55cecfadc20bce3e37133ab82e094d98da93b90ffa6ec773252269c1f9272", + "nonce": "0x25" + }, + { + "contract_address": "0x238f343aad28887c37d1759cb648e167b4093e189076be760136f4176dea619", + "nonce": "0x2" + }, + { + "contract_address": "0x179af42907b17b716b71db694b8be3874be6d97429dfebebd5b2d04d6c3c64f", + "nonce": "0x17" + }, + { + "contract_address": "0xda21f559cc19023eb4345a00e23e099485fb057325b8ca3b5322fe4ba4db29", + "nonce": "0x8" + }, + { + "contract_address": "0x1ad6c4facd221db6f5ff29312ca87495972f1f491f0475a388bc46785eb021f", + "nonce": "0xa" + }, + { + "contract_address": "0x48d19699d6798f6a6fd38ea1817ff0d3744ff5c06fdba841be8941a6040816a", + "nonce": "0xa" + }, + { + "contract_address": "0x533f660abe21ee4d6685a8f0aa727b53c74eae1587f1b388c1d77f4b928c496", + "nonce": "0x3" + }, + { + "contract_address": "0x363c824e4e00ea58d15db46e5deee14fe2b0eb540e25bfb1123d43bfd445265", + "nonce": "0x14" + }, + { + "contract_address": "0x10f1cf5b833ffbe2fcfc0625781b21502d433a81ea007ed1324872546e7d8", + "nonce": "0x11" + }, + { + "contract_address": "0x4732db715a67bc581ee3f9ac5797a39fa780d75b832bbfeda1128d3055ded23", + "nonce": "0x1f" + }, + { + "contract_address": "0x15ee49e3211c7f9a4716522580c413a7756598c59cbfa3f01909d7e00d68c8a", + "nonce": "0x14" + }, + { + "contract_address": "0x6012b5f247efaceabde853734fede82bf708ab77a08692010bf90b92aa6190", + "nonce": "0x2" + }, + { + "contract_address": "0x451b2f546740709137bc7c0124c97efc6098026683e7895bad80786e6516432", + "nonce": "0x7" + }, + { + "contract_address": "0x6ee8d3ece57c7a79fb38787398544b64ac56b6f4758f97c323de80612483674", + "nonce": "0x13" + }, + { + "contract_address": "0x38d54bddcd9353f791d336594607beb1a89719a92ef06b5d70270d2e409caa7", + "nonce": "0x3" + }, + { + "contract_address": "0x13fe7c3a3d7cb5ee473c80f5b5531069001c4568af79604b250af2d84a822c4", + "nonce": "0x12" + }, + { + "contract_address": "0x49a6ef4c23f397f1c4630a28f2ac748618a5f7ee20581f0c6f27acda321850b", + "nonce": "0x24" + }, + { + "contract_address": "0x2d2eb495d9a99aa59f8d9365d1e26b0c67fe0b76e3db3365b386c640b6f1bf", + "nonce": "0x3a" + }, + { + "contract_address": "0x456acb774f8690a1514a1e25f3eff1047800602560887f11a37572426d11c4", + "nonce": "0x4" + }, + { + "contract_address": "0x5923f52a1ba6112808add15992c626bf0b674cf9b124862f3e52ed1209956df", + "nonce": "0x16" + }, + { + "contract_address": "0x39d94399b3e2ac051d2161ae7b32fe87652a5ca334bdfaeac827e272579f10a", + "nonce": "0x17" + }, + { + "contract_address": "0x62c8fca4bff5101fbddc4b0e0cbefa88900e85d98f829af3d11cd2e649a8a8e", + "nonce": "0xc" + }, + { + "contract_address": "0x7995c7b44b62ca2369e259e38b77b8d43cb2fe8a5e8dd1bd5dafa92909f3dd5", + "nonce": "0x11" + }, + { + "contract_address": "0xc89460b6e490ef756be3a9f6997943e53a527892b830830e12d468bbbf8085", + "nonce": "0x1d" + }, + { + "contract_address": "0x63e153d1c41e36a4f4f95ff0f886d0c78859d9c0df1a788b6fe9ab73b5220a3", + "nonce": "0x18" + }, + { + "contract_address": "0xe691549840c9092e6c93d8261317572c50654b483f438658d68328db3e8b8c", + "nonce": "0x11" + }, + { + "contract_address": "0x2b4d7c6632b8e190cd9c7e3f7fd9dca87adafc8df88b352ee25e77be5ad4e48", + "nonce": "0x16" + }, + { + "contract_address": "0x51166de8527c25bb6d311b073fdf9632d93674869d349d05c13788a11222a9c", + "nonce": "0x2" + }, + { + "contract_address": "0x7d6ba4a21033eb1037ac90b7a49c7a65c81de8385ec1f2330cbcaa517eedde4", + "nonce": "0x2e" + }, + { + "contract_address": "0x1c850293075eadbc2e33b74a066b8563855c59449c5065554f8133b1452f24f", + "nonce": "0x3e" + }, + { + "contract_address": "0x308daafece70cfea1e19b56405b368675c159caf3a1f539b21f6491e91a0b25", + "nonce": "0x4" + }, + { + "contract_address": "0x5317507e64d734261450a6ccb708f6d6f3aa9acc0eedbe8eac9b4e52f379c1b", + "nonce": "0x16" + }, + { + "contract_address": "0x1a98995e02147262e27849d9471a5bf654d78f333837e0d23ec2eae12fbdaf1", + "nonce": "0x16" + }, + { + "contract_address": "0x5871c3c0f262cb3d1705f102dad56c3157b31b2756a6b5eee2c0b4920a3fc7c", + "nonce": "0x16" + }, + { + "contract_address": "0x7a157f846caee453475ebb29a54da6869c4fa7cc8f2d11d36817678bb10bfa4", + "nonce": "0x16" + }, + { + "contract_address": "0x31a01140eba43fddcd67ea8dea4e7672cfacb8bdd91f884703c6ff6a3b0d151", + "nonce": "0x1" + }, + { + "contract_address": "0x3fc510a1aff3515baf2620f51428ba933ae313a502d5392af14ad97945b10eb", + "nonce": "0x19" + }, + { + "contract_address": "0x41c0496df9ded85bd28d8a407cbfc21478dad0484ef441bf087ad04dce47efa", + "nonce": "0x9" + }, + { + "contract_address": "0x5cbaa8395ba88e1822b728d0fe3b926266982f4051e30f3d5c7a6205f4d6d42", + "nonce": "0x39" + }, + { + "contract_address": "0x70e2482c8d52037c4de0141c70a30e350d72362e8543ba08dfc3895f579083d", + "nonce": "0x22" + }, + { + "contract_address": "0x7ac6c5da8dada3ad900e611650351403b6f3aba1d5a1ac22db6fef513a18576", + "nonce": "0x9" + }, + { + "contract_address": "0x331278d5f68b6cf2f7c25382c3110008623c16286fc10ab702301b65395d85", + "nonce": "0xc" + }, + { + "contract_address": "0x64a24243f2aabae8d2148fa878276e6e6e452e3941b417f3c33b1649ea83e11", + "nonce": "0x10664" + }, + { + "contract_address": "0x2b07c1f9a08a78a61485b847bb3af953925991731f8b89195abe48d9e5b8225", + "nonce": "0xd" + }, + { + "contract_address": "0x63e504daa3a3b8d194a6f930047844148b7f02600db988fce04013577f91736", + "nonce": "0x15" + }, + { + "contract_address": "0x69199f1d61dc65b4549d96ff3f7e9442fcfb9d35b5ca97179f296c94eb99709", + "nonce": "0x8" + }, + { + "contract_address": "0x20d1c9a13ae76f9b9bfdb393d3ba73ade3a2bae490b91394f34b6b140c36702", + "nonce": "0x16" + }, + { + "contract_address": "0x3b0550e59cc75308b550a5f46039a0f93b6c441f674d6cdbe5ac1eb5d49235d", + "nonce": "0x2" + }, + { + "contract_address": "0x45b3564f5dcd902eb93208bac211340e5de5add5599657d35520d9c0ec2d2a4", + "nonce": "0xa" + }, + { + "contract_address": "0xa52de8e9aa06e9bb9634410cc0fc2e9e9139e2b791492d3267dc745cfe4399", + "nonce": "0xc" + }, + { + "contract_address": "0x200a067dd47aab1cc47fdb9ec2daf3a6fb710d9df23b9ffa3683837a058d88d", + "nonce": "0xa" + }, + { + "contract_address": "0x4b8819b96d0a847e4b3f973c658f5e8bbc7d575299e31154a97970030f094cd", + "nonce": "0x17" + }, + { + "contract_address": "0x6ed5d93500915ed8a17e4c8b1d8488ce44e2d6b84ab1754c2f6815353c7898b", + "nonce": "0x16" + }, + { + "contract_address": "0x58084357ed887690478a37e849ed2daa3cc90b6fd4a31e5492576707ad374ef", + "nonce": "0xd" + }, + { + "contract_address": "0x52fd88a2ab2d7deb22972d7f6d5f535a56276aa6d2166ab24bbfe098a63027c", + "nonce": "0x4" + }, + { + "contract_address": "0x348abc654a38d299363205a77dff83e0e2d500663b1a5b0a7af6b2a1f54dc73", + "nonce": "0x3" + }, + { + "contract_address": "0x52601d22334048073c5b0d36d6ab600fcb0eed577f1451d0e1414099ec9617f", + "nonce": "0x21" + }, + { + "contract_address": "0x471a2eb9f458a25398176cd35ed59bee0062819ddf6389206552ae7883f2209", + "nonce": "0x16" + }, + { + "contract_address": "0x767b47ad106b69a515786664f1f03e697f07588c368e43197c6c950373215fe", + "nonce": "0xd" + }, + { + "contract_address": "0x15e2cf295b776dd9413c68d6c0cdd06917506146309e6b5385cf053aae13a97", + "nonce": "0x16" + }, + { + "contract_address": "0x2f3436dc2b1bdd4e66446e9eebd63236ecc90a0b9c11f0c2485ac39fcdeff49", + "nonce": "0x16" + }, + { + "contract_address": "0x40b23dacea9ad5b217840598a35dffd32ebdd98e0e782546a54614d985a24eb", + "nonce": "0x4" + }, + { + "contract_address": "0x6a3cde9f6a36c9093ac44337b61210e3cdcd3a8f9d39389de89c7caea0dc845", + "nonce": "0x22" + }, + { + "contract_address": "0x7af67dd11d196b044261c402b9281de7aa4fb9b87e36d0eda3042b1838e796a", + "nonce": "0x18" + }, + { + "contract_address": "0x26bf1b54efecba32c534b921d670470409feafe471917b83ce78c7ce302acea", + "nonce": "0x46" + }, + { + "contract_address": "0x4ef73de45a1d331268ee7a8ed4fa5d9a8dbf6ac1f00dc3cf6ba9f7a74ef3400", + "nonce": "0x2c" + }, + { + "contract_address": "0x520b53a60807603584a1116ee0460a66899c58a690b652466331622494a8687", + "nonce": "0x17" + }, + { + "contract_address": "0x7fb5b4be6a89550d9539d807bcd54dbd4e4bd1bf924e444058a1b4c15f368f5", + "nonce": "0x82" + }, + { + "contract_address": "0x2d726d19414825dd5a5fb0bd067ca40ce79d4f60bf37b42ec220a8c16ca50b2", + "nonce": "0x16" + }, + { + "contract_address": "0x5723ccaa0d1716f0d2283d81086259c76ba32da5024de05d37b2f27e504f9a2", + "nonce": "0x16" + }, + { + "contract_address": "0x24bc570a85a6b588f3444bda265576cc6241b633a331f7af5e8c4ec0d39dabf", + "nonce": "0x10" + }, + { + "contract_address": "0xb3f57bbf04fb8eb2125c1363daf1d9d36aa1e8d203a3d82a6d79b923279591", + "nonce": "0x10" + }, + { + "contract_address": "0x710347e582507d9bcaa148e888a3436759177fb01cf4290b6a0444ee8880ffc", + "nonce": "0x16" + }, + { + "contract_address": "0x2428826117ea52ff2cf491e20864ea299e7b74ffe2487b2a66de30dd81288ea", + "nonce": "0xb" + }, + { + "contract_address": "0x7742f4bbc716dd8e11d85d9af6a71f816e910b90da612db9900e0df69f32699", + "nonce": "0x41" + }, + { + "contract_address": "0x2cb3c68f9b980d28339a381d8e52d0d5ccafa8b51b633b2ef1b9eb55d60e882", + "nonce": "0x16" + }, + { + "contract_address": "0x783261410f85c4e7bc2f1b6542c8fe396106255496f60f058595d98cc391253", + "nonce": "0x19" + }, + { + "contract_address": "0x7a6b2b4e8af0af346fd2ca770cd719210bfbe08f11feb9f6c0c029be18c93b0", + "nonce": "0xa" + }, + { + "contract_address": "0x25362db70692cc80752f9e2952f30dad77b7a3c4d904489a421cfcaa4be7008", + "nonce": "0x16" + }, + { + "contract_address": "0x69fb921e3f1a7973453af4337576377ff8ee04f80c5a4abb6eda413aaa2684a", + "nonce": "0x3" + }, + { + "contract_address": "0x3d29c999b768ee2419ae1d644feb955bf69bf2d99ab519e221d318a41488c6c", + "nonce": "0x2d" + }, + { + "contract_address": "0x2a02775bf94065b12a938bb4ebf414b80f1e2d5a4000659101bf799e405ba38", + "nonce": "0x1f" + }, + { + "contract_address": "0x77e3074c6bf208aeae705f65703502c5dfc1b50c12957269e0cf20ece27c8bf", + "nonce": "0xe" + }, + { + "contract_address": "0x5226fe77edb7496e1cd8ecf97d3e9880016bb8b32f270758d9323d9cdce59e0", + "nonce": "0x13" + }, + { + "contract_address": "0x9740df0fc372d2e86dde71b9a4b24faef30890dbd3e18b25006cdf0caf4fb7", + "nonce": "0x17" + }, + { + "contract_address": "0x50c9845f7dfe1c1c5e8a37d82a824f0be31cb746c31fda2162b90d9926aec74", + "nonce": "0xa" + }, + { + "contract_address": "0x7a1df6cb66a4c21823940fa6220a24e469e759733e48f3fca7a9cc2333f7e0a", + "nonce": "0x3" + }, + { + "contract_address": "0x482b852aa325cc4c519e066777cda8e1f40e437ee4d21aa4e1addb022fda33d", + "nonce": "0x16" + }, + { + "contract_address": "0x390bb59a0d435f0d928b3677146c9bb25ec3986258876459ea3116ba08a2067", + "nonce": "0x2" + }, + { + "contract_address": "0x685e52018fb02554ce8d9af4d92411d623b676762ef28db73ec493f7776348", + "nonce": "0x17" + }, + { + "contract_address": "0x2931d5aa99f5923efb582f788a4f8c9246691af96cda36782e857df8fadd68c", + "nonce": "0x2" + }, + { + "contract_address": "0x3e16faa44e2ea8dd44158c1476f5fc2f09406c4c2b4fb594eec8bcb1d31ca32", + "nonce": "0x3d" + }, + { + "contract_address": "0x1a97a598d9d0ddaa515eb1704d7dfc1f933e6fa7009df3cfc661f7c6685e7b1", + "nonce": "0x16" + }, + { + "contract_address": "0x18cf63ee5f9af9d3777740dfc477c4948707030665069a8aae90db72eb590fa", + "nonce": "0x6" + }, + { + "contract_address": "0x75095d1dd8f9c92ee001231feb34eebf3faf037a9fd7bb1a7f5c999e909505d", + "nonce": "0x17" + }, + { + "contract_address": "0xa746933e82fcc92af43ab074a4e78542dd1336459dc000e11577145db3f4f1", + "nonce": "0xd" + }, + { + "contract_address": "0x51f6daaa8d0ad2bf68d2e4cc50b89c50a528a5d3680919e569c03a94a49bedb", + "nonce": "0x17" + }, + { + "contract_address": "0x582c000eaedb2415c4529f23479f990577a4c51466e2ef4120975bb56c9cf6f", + "nonce": "0x16" + }, + { + "contract_address": "0x16cf853915ccdacd6a31fa0b7a78dfdf4debd1d9898a001eefbeba9cd3e171", + "nonce": "0x2e" + }, + { + "contract_address": "0x60edf5ab6f4865e43042a3134ecc39cd38da0787f46ee902f7fb889fed8606", + "nonce": "0x6" + }, + { + "contract_address": "0x3021045664aeef78db4169330698161b61d0442da5d56f8233311a06f26b06e", + "nonce": "0x4" + }, + { + "contract_address": "0x7992fdd6fa18923613c7ab61314001c5e0a3b4b5eb8e90218a73ad78f48ff85", + "nonce": "0x1d" + }, + { + "contract_address": "0x676ceae8ff1c7a0a367296d5f435e1611e3a855a6ee97422f051037948a63e5", + "nonce": "0x15" + }, + { + "contract_address": "0x55c242db170dacd8b3dcf0f69090315835b0b7afedd37194260f6a11a3db39f", + "nonce": "0x2" + }, + { + "contract_address": "0x707fee11ea4e9e633e888a97d8529f99159835fc74410720f9bb9f7f62da8ed", + "nonce": "0xb" + }, + { + "contract_address": "0x542954ee6c770f76702800314e78333087f9576e440beba13e13a4d8f228125", + "nonce": "0x21" + }, + { + "contract_address": "0x7057b6f14c55cc93ec4d5ca8ac82fb559039fbe4d54784f58ae8ae6b1cb03c9", + "nonce": "0x16" + }, + { + "contract_address": "0x2aea70fafd1232b2db416d677c4f4822e0fca0a0dca528592ae423868a3a393", + "nonce": "0x17" + }, + { + "contract_address": "0x5bc1f158d2f597c869a2ce8d0134cbca3f2aef571444b6ba4eecc3505a08c48", + "nonce": "0x17" + }, + { + "contract_address": "0x2ed9cc6cf98efbb2fbb019cff98052b22bd074e3aa7c72b7cf7352c348c51ce", + "nonce": "0x1b" + }, + { + "contract_address": "0x33864f6397282bc89cff25700dc64c90b3cdb7ad10ba78b672ac5ea899acbc7", + "nonce": "0x13" + }, + { + "contract_address": "0x7675334c01aeccebdad38c7f4537e1ce4cd8a9e856a79e0673cc4c378c694e5", + "nonce": "0x15" + }, + { + "contract_address": "0x4a8ad33bda485e6dc49c696d0cf858f0289eacd9a253fe4e1a3d1dca60124fb", + "nonce": "0x13" + }, + { + "contract_address": "0x6e6efe32461de8e7d13e86014cf35295561274009029eb9962ceedd4703b942", + "nonce": "0x13" + }, + { + "contract_address": "0x2c0d37179793900cb70fac0bdb157be373cfa6a0f886f473f6c72b53d67f738", + "nonce": "0x32" + }, + { + "contract_address": "0x1c9a441d50cec0eb30d850eb0e0408475d6ea23e4be6b2d3b41a5e1f59ccba1", + "nonce": "0xc" + }, + { + "contract_address": "0x48f927a94288250881c3e0e6eb11f8e0ac7bdf9a9661d6471f7bd773c6076a2", + "nonce": "0x13" + }, + { + "contract_address": "0x7f5b9503174d5bb0a59adce8d2d3d3ce3f1ee21d3dc8ef82eda3f7b62f80f5d", + "nonce": "0x14" + }, + { + "contract_address": "0x790681bf57400577f97f1012624ff4efa98c39b9cd0238a938b33e2efa9243b", + "nonce": "0x14" + }, + { + "contract_address": "0x497c796a248caec8b8d9c5971322003eb055702738eb3776fc70f1afa5c1df7", + "nonce": "0xc" + }, + { + "contract_address": "0x8190bfb2e10bae697df597a616d0abd0828817c3479e3bcc9a0b5abe7dd6a3", + "nonce": "0x16" + }, + { + "contract_address": "0x3e1c44dc86729a56907c9ab02287f59b6c4a3b38360046419fcfe6d6f691f74", + "nonce": "0xc" + }, + { + "contract_address": "0x303d1ff1d2db045fa9da42853f7d95ca5b0811ab4fac7851c5ff65a5cea675b", + "nonce": "0x4" + }, + { + "contract_address": "0x27d3e9995311f0ecdbf1a629be3ae516fb5ce6da3bc5a8b941eb318bba5be3c", + "nonce": "0x16" + }, + { + "contract_address": "0x38d06a956d4ee0ede72fc6d635809075a536becdfcc1968fabccbbeb96868cd", + "nonce": "0x2f" + }, + { + "contract_address": "0xab42fe5bf8ee2b49771bb0aeebe3c5ce6fd069aab6a758dee085245b351ff0", + "nonce": "0x5" + }, + { + "contract_address": "0x670dfdf744ce5a233f133b8835e62c3d8e0d338d34a857b09e9e47be4e4ab88", + "nonce": "0x1" + }, + { + "contract_address": "0x52f9b7d160a1660b0493d983ae9b144b0ca7e25ec941e2b538981924fd796d3", + "nonce": "0x12" + }, + { + "contract_address": "0x4310084d2b16070d43c7c65e1b97cce003d6ef1c80bb5a15139b67d11eff3dc", + "nonce": "0xb" + }, + { + "contract_address": "0x74061c140541e48524046538485ee3dc8a7a2382ead62f8c26a51d94197aa30", + "nonce": "0x14" + }, + { + "contract_address": "0x1c35adb8b781e5d6b7c72b940e863e4e7fc9375509aa540a50a0a40e3b68687", + "nonce": "0xa" + }, + { + "contract_address": "0x2f42a22fd623f357ba9fa946988189551f4628199fc9e5a8daf5e6679a0917c", + "nonce": "0x41" + }, + { + "contract_address": "0x611caa51843d9063843b06c747a742bb9cf802df33d7190c63b4bab0cf4336f", + "nonce": "0x15" + }, + { + "contract_address": "0x2b690fae7153819735def799afa9b758e6dfaa658f1d56a3fb20400a1d0608a", + "nonce": "0x1" + }, + { + "contract_address": "0x2cb12823ceda26957cdd333a67afe1b8f760fb5558472ff3518635c91a7164", + "nonce": "0x18fa" + }, + { + "contract_address": "0x7f1654a23c70117b5d42e51138ff05fc9bfa31620e1f5d5d19827123e4c6e02", + "nonce": "0x15" + }, + { + "contract_address": "0x74fd4e76a0989354040e8edb642fa5a447e1356f29ab3ab69e060479b842be", + "nonce": "0xd" + } + ] + } +} \ No newline at end of file diff --git a/e2e-tests/artifacts/program_output_101038.txt b/e2e-tests/artifacts/program_output_101038.txt new file mode 100644 index 00000000..9dc75ff7 --- /dev/null +++ b/e2e-tests/artifacts/program_output_101038.txt @@ -0,0 +1,102 @@ +1822922502232419837250886949706477034225078151827907081290472545297754056762 +1575975341976033587828397293328945422807168398550414997080377553292877673504 +238996 +1338520627571051121654124025202042913813489381715816541993765995406348479957 +671483050609816861429812414688707376174032882875357307847551691140236175837 +7 +3256441166037631918262930812410838598500200462657642943867372734773841898370 +993696174272377493693496825928908586134624850969 +4 +0 +1051195669891659433555637051801932554623347152093 +307000000000000000 +0 +88 +993696174272377493693496825928908586134624850969 +3256441166037631918262930812410838598500200462657642943867372734773841898370 +1247820 +1285101517810983806491589552491143496277809242732141897358598292095611420389 +3 +2703378999549632419301897627932541816250740708707798580500072430987523754698 +11114229349496715 +0 +993696174272377493693496825928908586134624850969 +3256441166037631918262930812410838598500200462657642943867372734773841898370 +1247821 +1285101517810983806491589552491143496277809242732141897358598292095611420389 +3 +1143387524800542912827323660214641581984816946811867156195570217140464801355 +128500000000000000 +0 +993696174272377493693496825928908586134624850969 +3256441166037631918262930812410838598500200462657642943867372734773841898370 +1247822 +1285101517810983806491589552491143496277809242732141897358598292095611420389 +3 +3496794549129298843272925358385643343914338801679783374153674383329039463443 +41747368794231730 +0 +993696174272377493693496825928908586134624850969 +3256441166037631918262930812410838598500200462657642943867372734773841898370 +1247823 +1285101517810983806491589552491143496277809242732141897358598292095611420389 +3 +2275328500449361401852439083133519412445303435877185954682932199340280534232 +809800000000000000 +0 +993696174272377493693496825928908586134624850969 +3256441166037631918262930812410838598500200462657642943867372734773841898370 +1247824 +1285101517810983806491589552491143496277809242732141897358598292095611420389 +3 +2398504191038257754602083118044408419011945436568671774709183397196672882094 +800000000000000000 +0 +993696174272377493693496825928908586134624850969 +3256441166037631918262930812410838598500200462657642943867372734773841898370 +1247825 +1285101517810983806491589552491143496277809242732141897358598292095611420389 +3 +1597456322245318876737870449155828097073464928197293858582694865169026585761 +6910000000000000000 +0 +993696174272377493693496825928908586134624850969 +3256441166037631918262930812410838598500200462657642943867372734773841898370 +1247826 +1285101517810983806491589552491143496277809242732141897358598292095611420389 +3 +2156992103548378709439156869380283072682215287835224552808562473636240237268 +1299000000000000000 +0 +993696174272377493693496825928908586134624850969 +3256441166037631918262930812410838598500200462657642943867372734773841898370 +1247827 +1285101517810983806491589552491143496277809242732141897358598292095611420389 +3 +2384796211375691500906214678988290645567986753928375202953551583049477672140 +10454952155062996 +0 +993696174272377493693496825928908586134624850969 +3256441166037631918262930812410838598500200462657642943867372734773841898370 +1247828 +1285101517810983806491589552491143496277809242732141897358598292095611420389 +3 +2083028049574058891691341847693575636689286278981463916743720322874352362635 +129500000000000000 +0 +993696174272377493693496825928908586134624850969 +3256441166037631918262930812410838598500200462657642943867372734773841898370 +1247829 +1285101517810983806491589552491143496277809242732141897358598292095611420389 +3 +2724390671094763747228216104750955256481898495701067776080492422659412539271 +4719000000000000000 +0 +993696174272377493693496825928908586134624850969 +3256441166037631918262930812410838598500200462657642943867372734773841898370 +1247830 +1285101517810983806491589552491143496277809242732141897358598292095611420389 +3 +2732531119861745145492580393321309303646146194169251696076657349465120407109 +6570000000000000000 +0 \ No newline at end of file diff --git a/e2e-tests/src/ethereum.rs b/e2e-tests/src/ethereum.rs index dcdf8436..2f5fd5fd 100644 --- a/e2e-tests/src/ethereum.rs +++ b/e2e-tests/src/ethereum.rs @@ -24,9 +24,7 @@ impl EthereumClient { .try_spawn() .expect("Unable to fork eth mainnet and run anvil."); - // TODO : uncomment - // Self { anvil_endpoint: forked_anvil.endpoint(), anvil_instance: forked_anvil } - Self { anvil_endpoint: "https://dbd8-2405-201-4059-e00f-b442-3c8d-7769-1c1e.ngrok-free.app".parse().unwrap(), anvil_instance: forked_anvil } + Self { anvil_endpoint: forked_anvil.endpoint(), anvil_instance: forked_anvil } } /// To get the anvil endpoint diff --git a/e2e-tests/src/lib.rs b/e2e-tests/src/lib.rs index 2d2b5fb4..08354d2a 100644 --- a/e2e-tests/src/lib.rs +++ b/e2e-tests/src/lib.rs @@ -17,6 +17,7 @@ use std::io::Read; use std::net::TcpListener; use std::path::{Path, PathBuf}; +use crate::localstack::PIE_FILE_BLOCK_NUMBER; use crate::sharp::SharpClient; use crate::starknet_client::StarknetClient; pub use mongodb::MongoDbServer; @@ -27,7 +28,6 @@ use uuid::Uuid; const MIN_PORT: u16 = 49_152; const MAX_PORT: u16 = 65_535; -const TEST_BLOCK_NUMBER_L2: u64 = 238_996; fn get_free_port() -> u16 { for port in MIN_PORT..=MAX_PORT { @@ -81,7 +81,7 @@ fn read_state_update_from_file(file_path: &str) -> color_eyre::Result Date: Mon, 26 Aug 2024 13:07:29 +0530 Subject: [PATCH 6/6] is valid test --- .env.test | 2 +- Cargo.lock | 4 ++- .../gps-fact-checker/Cargo.toml | 18 +++++++----- .../gps-fact-checker/src/lib.rs | 29 +++++++++++++++++++ .../prover-services/sharp-service/src/lib.rs | 1 - 5 files changed, 43 insertions(+), 11 deletions(-) diff --git a/.env.test b/.env.test index 8144cf1c..724af68e 100644 --- a/.env.test +++ b/.env.test @@ -16,7 +16,7 @@ AWS_DEFAULT_REGION="localhost" MADARA_RPC_URL="http://localhost:3000" ETHEREUM_RPC_URL="http://localhost:3001" ETHEREUM_MAINNET_RPC_URL="https://mainnet.infura.io/v3/bf9e41563a6a45e28eb60382d85ef3c9" # for forking during tests -MEMORY_PAGES_CONTRACT_ADDRESS="0x000000000000000000000000000000000001dead" +MEMORY_PAGES_CONTRACT_ADDRESS="0x47312450B3Ac8b5b8e247a6bB6d523e7605bDb60" PRIVATE_KEY="0xdead" # Private key of Test wallet provided by Anvil ETHEREUM_PRIVATE_KEY="0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80" diff --git a/Cargo.lock b/Cargo.lock index 33cd2f9f..773703cb 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4730,10 +4730,12 @@ dependencies = [ "alloy 0.2.1", "async-trait", "cairo-vm 1.0.0-rc3", + "dotenvy", "itertools 0.13.0", - "log", + "rstest 0.18.2", "starknet", "thiserror", + "tokio", "url", "utils", ] diff --git a/crates/prover-services/gps-fact-checker/Cargo.toml b/crates/prover-services/gps-fact-checker/Cargo.toml index 87500636..9c82afef 100644 --- a/crates/prover-services/gps-fact-checker/Cargo.toml +++ b/crates/prover-services/gps-fact-checker/Cargo.toml @@ -5,13 +5,13 @@ edition.workspace = true [dependencies] alloy = { workspace = true, features = [ - "sol-types", - "json", - "contract", - "providers", - "rpc-client", - "transport-http", - "reqwest", + "sol-types", + "json", + "contract", + "providers", + "rpc-client", + "transport-http", + "reqwest", ] } async-trait.workspace = true cairo-vm.workspace = true @@ -20,4 +20,6 @@ starknet.workspace = true thiserror.workspace = true url.workspace = true utils.workspace = true -log = "0.4.21" +tokio.workspace = true +rstest.workspace = true +dotenvy.workspace = true \ No newline at end of file diff --git a/crates/prover-services/gps-fact-checker/src/lib.rs b/crates/prover-services/gps-fact-checker/src/lib.rs index 0694fe07..83869c51 100644 --- a/crates/prover-services/gps-fact-checker/src/lib.rs +++ b/crates/prover-services/gps-fact-checker/src/lib.rs @@ -38,3 +38,32 @@ impl FactChecker { Ok(_0) } } + +#[cfg(test)] +mod tests { + use crate::FactChecker; + use alloy::primitives::{Address, B256}; + use rstest::rstest; + use std::str::FromStr; + use url::Url; + use utils::env_utils::get_env_var_or_panic; + + #[rstest] + // Picked a valid fact registered on Eth. + // You can check on etherscan by calling `isValid` function on GpsStatementVerifier.sol + // Contract Link : https://etherscan.io/address/0x9fb7F48dCB26b7bFA4e580b2dEFf637B13751942#readContract#F9 + #[case::valid_fact("0xec8fa9cdfe069ed59b8f17aeecfd95c6abd616379269d2fa16a80955b6e0f068", true)] + // same fact with last letter changed + #[case::invalid_fact("0xec8fa9cdfe069ed59b8f17aeecfd95c6abd616379269d2fa16a80955b6e0f067", false)] + #[tokio::test] + pub async fn fact_registry_is_valid(#[case] fact: &str, #[case] is_valid: bool) { + dotenvy::from_filename("../.env.test").expect("Failed to load the .env file"); + + let fact_checker = FactChecker::new( + Url::from_str(get_env_var_or_panic("ETHEREUM_MAINNET_RPC_URL").as_str()).unwrap(), + Address::from_str(get_env_var_or_panic("MEMORY_PAGES_CONTRACT_ADDRESS").as_str()).unwrap(), + ); + let fact = B256::from_str(fact).unwrap(); + assert_eq!(fact_checker.is_valid(&fact).await.unwrap(), is_valid); + } +} diff --git a/crates/prover-services/sharp-service/src/lib.rs b/crates/prover-services/sharp-service/src/lib.rs index 4abe68de..83d0b9a8 100644 --- a/crates/prover-services/sharp-service/src/lib.rs +++ b/crates/prover-services/sharp-service/src/lib.rs @@ -7,7 +7,6 @@ use std::str::FromStr; use alloy::primitives::{B256, I256}; use async_trait::async_trait; -use gps_fact_checker::fact_info::get_fact_info; use gps_fact_checker::FactChecker; use prover_client_interface::{ProverClient, ProverClientError, Task, TaskId, TaskStatus}; use snos::sharp::CairoJobStatus;