From 83bc9b94fcf8447394b47a7bdd72fe75998996e0 Mon Sep 17 00:00:00 2001 From: Pia Date: Mon, 2 Sep 2024 12:19:27 +0900 Subject: [PATCH 01/11] feat: chain id --- hdp/src/primitives/chain_id.rs | 164 +++++++++++++++++++++++++++++++++ hdp/src/primitives/mod.rs | 1 + 2 files changed, 165 insertions(+) create mode 100644 hdp/src/primitives/chain_id.rs diff --git a/hdp/src/primitives/chain_id.rs b/hdp/src/primitives/chain_id.rs new file mode 100644 index 00000000..fd112e5b --- /dev/null +++ b/hdp/src/primitives/chain_id.rs @@ -0,0 +1,164 @@ +use core::{ + fmt::{Debug, Display}, + str::FromStr, +}; +use thiserror::Error; + +#[derive(PartialEq, Eq)] +pub enum ChainId { + EthereumMainnet, + EthereumSepolia, + StarknetMainnet, + StarknetSepolia, +} + +#[derive(Error, Debug, PartialEq)] +#[error("Failed to parse ChainId: {input}")] +pub struct ParseChainIdError { + input: String, +} + +impl FromStr for ChainId { + type Err = ParseChainIdError; + + fn from_str(s: &str) -> Result { + match s { + "ETH_MAINNET" => Ok(Self::EthereumMainnet), + "ETH_SEPOLIA" => Ok(Self::EthereumSepolia), + "SN_MAINNET" => Ok(Self::StarknetMainnet), + "SN_SEPOLIA" => Ok(Self::StarknetSepolia), + _ => Err(ParseChainIdError { + input: s.to_string(), + }), + } + } +} + +impl Display for ChainId { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + match self { + ChainId::EthereumMainnet => write!(f, "{}", "ETH_MAINNET"), + ChainId::EthereumSepolia => write!(f, "{}", "ETH_SEPOLIA"), + ChainId::StarknetMainnet => write!(f, "{}", "SN_MAINNET"), + ChainId::StarknetSepolia => write!(f, "{}", "SN_SEPOLIA"), + } + } +} + +impl Debug for ChainId { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + match self { + ChainId::EthereumMainnet => write!(f, "ETH_MAINNET"), + ChainId::EthereumSepolia => write!(f, "ETH_SEPOLIA"), + ChainId::StarknetMainnet => write!(f, "SN_MAINNET"), + ChainId::StarknetSepolia => write!(f, "SN_SEPOLIA"), + } + } +} + +impl ChainId { + /// Converts the typed ChainId enum into its numeric representation. + /// This numeric ID is used for encoding in Solidity and Cairo. + /// + /// # Returns + /// A u128 representing the numeric chain ID: + /// - 1 for Ethereum Mainnet + /// - 11155111 for Ethereum Sepolia + /// - 393402131332719809807700 for Starknet Mainnet + /// - 393402133025997798000961 for Starknet Sepolia + pub fn to_numeric_id(&self) -> u128 { + match self { + ChainId::EthereumMainnet => 1, + ChainId::EthereumSepolia => 11155111, + ChainId::StarknetMainnet => 393402131332719809807700, + ChainId::StarknetSepolia => 393402133025997798000961, + } + } + + /// Converts a numeric chain ID into its corresponding ChainId enum. + /// This method is the reverse of `to_numeric_id()`. + /// + /// # Arguments + /// * `id` - A u128 representing the numeric chain ID + /// + /// # Returns + /// A Result containing the corresponding ChainId enum if successful, + /// or a ParseChainIdError if the numeric ID is not recognized. + pub fn from_numberic_id(id: u128) -> Result { + match id { + 1 => Ok(Self::EthereumMainnet), + 11155111 => Ok(Self::EthereumSepolia), + 393402131332719809807700 => Ok(Self::StarknetMainnet), + 393402133025997798000961 => Ok(Self::StarknetSepolia), + i => Err(ParseChainIdError { + input: i.to_string(), + }), + } + } +} + +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn test_from_str() { + assert_eq!( + ChainId::from_str("ETH_MAINNET").unwrap(), + ChainId::EthereumMainnet + ); + assert_eq!( + ChainId::from_str("ETH_SEPOLIA").unwrap(), + ChainId::EthereumSepolia + ); + assert_eq!( + ChainId::from_str("SN_MAINNET").unwrap(), + ChainId::StarknetMainnet + ); + assert_eq!( + ChainId::from_str("SN_SEPOLIA").unwrap(), + ChainId::StarknetSepolia + ); + assert!(ChainId::from_str("INVALID").is_err()); + } + + #[test] + fn test_display() { + assert_eq!(ChainId::EthereumMainnet.to_string(), "ETH_MAINNET"); + assert_eq!(ChainId::EthereumSepolia.to_string(), "ETH_SEPOLIA"); + assert_eq!(ChainId::StarknetMainnet.to_string(), "SN_MAINNET"); + assert_eq!(ChainId::StarknetSepolia.to_string(), "SN_SEPOLIA"); + } + + #[test] + fn test_to_numeric_id() { + assert_eq!(ChainId::EthereumMainnet.to_numeric_id(), 1); + assert_eq!(ChainId::EthereumSepolia.to_numeric_id(), 11155111); + assert_eq!( + ChainId::StarknetMainnet.to_numeric_id(), + 393402131332719809807700 + ); + assert_eq!( + ChainId::StarknetSepolia.to_numeric_id(), + 393402133025997798000961 + ); + } + + #[test] + fn test_from_numeric_id() { + assert_eq!(ChainId::from_numberic_id(1), Ok(ChainId::EthereumMainnet)); + assert_eq!( + ChainId::from_numberic_id(11155111), + Ok(ChainId::EthereumSepolia) + ); + assert_eq!( + ChainId::from_numberic_id(393402131332719809807700), + Ok(ChainId::StarknetMainnet) + ); + assert_eq!( + ChainId::from_numberic_id(393402133025997798000961), + Ok(ChainId::StarknetSepolia) + ); + assert!(ChainId::from_numberic_id(999).is_err()); + } +} diff --git a/hdp/src/primitives/mod.rs b/hdp/src/primitives/mod.rs index bfb92a50..d7788781 100644 --- a/hdp/src/primitives/mod.rs +++ b/hdp/src/primitives/mod.rs @@ -1,5 +1,6 @@ pub mod aggregate_fn; pub mod block; +pub mod chain_id; pub mod merkle_tree; pub mod processed_types; pub mod request; From ade8104b77fc421c34b52d32438f0ed6a6e4f6f8 Mon Sep 17 00:00:00 2001 From: Pia Date: Mon, 2 Sep 2024 14:10:37 +0900 Subject: [PATCH 02/11] feat: chain id deserialize --- batch.json | 40 + cli/src/cli.rs | 5 +- cli/src/commands/run_datalake.rs | 3 +- cli/src/commands/run_module.rs | 5 +- cli/src/interactive.rs | 29 +- hdp/src/cairo_runner/dry_run.rs | 179 +++- hdp/src/hdp_run.rs | 8 +- hdp/src/preprocessor/compile/config.rs | 4 +- hdp/src/preprocessor/compile/datalake.rs | 11 +- hdp/src/primitives/chain_id.rs | 60 +- hdp/src/primitives/processed_types/mmr.rs | 12 +- hdp/src/primitives/request.rs | 17 +- .../datalake_compute/compute.rs | 9 +- .../datalake/block_sampled.rs | 6 +- .../datalake_compute/datalake/envelope.rs | 35 +- .../datalake/transactions_in_block.rs | 12 +- .../solidity_types/datalake_compute/mod.rs | 11 +- .../task/datalake/block_sampled/datalake.rs | 6 +- .../task/datalake/block_sampled/mod.rs | 12 +- hdp/src/primitives/task/datalake/envelope.rs | 2 +- .../task/datalake/transactions/datalake.rs | 6 +- .../task/datalake/transactions/mod.rs | 10 +- hdp/src/provider/config.rs | 8 +- hdp/src/provider/evm/from_keys.rs | 12 +- hdp/src/provider/indexer.rs | 34 +- hdp/src/provider/key.rs | 228 ++++- hdp/src/provider/traits.rs | 3 +- input.json | 776 ++++++++++++++++++ request.json | 4 +- 29 files changed, 1363 insertions(+), 184 deletions(-) create mode 100644 batch.json create mode 100644 input.json diff --git a/batch.json b/batch.json new file mode 100644 index 00000000..25bbae7b --- /dev/null +++ b/batch.json @@ -0,0 +1,40 @@ +{ + "raw_results": [ + "0x496e736964652054657374206e616d6500000000000000000000000000000020" + ], + "results_commitments": [ + "0xf747c57ef547b1791842881a557f8da2d3bfcd529baabe39feecfef3eb194bbe" + ], + "tasks_commitments": [ + "0x77e994d9e435e91fb7a98242ce6aa460dc094888e2745cdd93727b93fac841ac" + ], + "task_inclusion_proofs": [ + [] + ], + "results_inclusion_proofs": [ + [] + ], + "results_root": "0x34b46123c4ab406cec0586364d8ed193353f0e9fb1b32cac0988fc0970dc50a2", + "tasks_root": "0xd900a4d980172ad23fafb579aeac7cff91c73636d334bc247a1c3142d8bffa78", + "mmr_metas": [ + { + "id": 26, + "root": "0x5358fbe594d3e8fdb3f6f7bbbe979fc3a377851a21909ea7bc1821e15cc6c4e", + "size": 12899969, + "peaks": [ + "0x262c4c9b1cb2a036924aecf563dc9952e5f8b41004310adde86f22abb793eb1", + "0x63e06c6dd962e6232140b8f20fc4972ee69ca29d1c6ca4455d80afd4be0f3de", + "0x48c9781f73635713eb8ef52890c481f4438c576baf01b31bc7935d9d42c1244", + "0x068c923e9bcc3df411575563e88a81cdef49ef6c4307efad707a8538114b753", + "0x54a48cae0defc94286e03d5c3abc53a399db7eb6207140f8d6f8d7322c9d1fc", + "0x1f31aea9b689fdab066317c08c865ae3b134adef05a744965a5741119a6c094", + "0x41dc23c0b0c18e7cc1d3f7148feabbe30269080cbe9b6ead6b718a2d1176382", + "0x1d04bc7dd1b40becbbfdf6a6971ef0e1ffc873087ed75bb2163dd2615d366de", + "0x5f3202e8d32391896022ddb916b83f165d2d7486261304f3e029aad6258ba2c", + "0x3a98faad3cc3bdeee0f2a346469fe4e67d364c98f8f5adf03f472000194081c", + "0x48bb57587a1e690409d81b70f3fe2ee625f25f008ec0773e55a0e1293c9e025" + ], + "chain_id": 11155111 + } + ] +} \ No newline at end of file diff --git a/cli/src/cli.rs b/cli/src/cli.rs index c76a4e40..048fee4a 100644 --- a/cli/src/cli.rs +++ b/cli/src/cli.rs @@ -9,6 +9,7 @@ use crate::{ }; use anyhow::Result; use clap::Parser; +use hdp::primitives::chain_id::ChainId; use hdp::primitives::processed_types::cairo_format::query::ProcessorInput; use hdp::primitives::request::{SubmitBatchQuery, Task}; use hdp::processor::{self, Processor}; @@ -137,7 +138,7 @@ pub async fn datalake_entry_run(args: RunDatalakeArgs) -> Result<()> { sampled_property, increment, } => DatalakeEnvelope::BlockSampled(BlockSampledDatalake::new( - 11155111, + ChainId::EthereumSepolia, block_range_start, block_range_end, increment, @@ -151,7 +152,7 @@ pub async fn datalake_entry_run(args: RunDatalakeArgs) -> Result<()> { increment, included_types, } => DatalakeEnvelope::TransactionsInBlock(TransactionsInBlockDatalake::new( - 11155111, + ChainId::EthereumSepolia, target_block, sampled_property, start_index, diff --git a/cli/src/commands/run_datalake.rs b/cli/src/commands/run_datalake.rs index 3fd30509..d4e1e10c 100644 --- a/cli/src/commands/run_datalake.rs +++ b/cli/src/commands/run_datalake.rs @@ -1,9 +1,10 @@ use std::path::PathBuf; -use alloy::primitives::{BlockNumber, ChainId, TxIndex}; +use alloy::primitives::{BlockNumber, TxIndex}; use clap::{arg, command, Parser, Subcommand}; use hdp::primitives::{ aggregate_fn::{AggregationFunction, FunctionContext}, + chain_id::ChainId, task::datalake::{ block_sampled::BlockSampledCollection, transactions::{IncludedTypes, TransactionsCollection}, diff --git a/cli/src/commands/run_module.rs b/cli/src/commands/run_module.rs index 890f7ad3..e4d365e4 100644 --- a/cli/src/commands/run_module.rs +++ b/cli/src/commands/run_module.rs @@ -1,8 +1,7 @@ -use std::path::PathBuf; - -use alloy::primitives::ChainId; use clap::{arg, Parser}; +use hdp::primitives::chain_id::ChainId; use starknet::providers::Url; +use std::path::PathBuf; #[derive(Parser, Debug)] pub struct RunModuleArgs { diff --git a/cli/src/interactive.rs b/cli/src/interactive.rs index e1614f85..0ab53d3f 100644 --- a/cli/src/interactive.rs +++ b/cli/src/interactive.rs @@ -2,6 +2,7 @@ use alloy::{primitives::U256, transports::http::reqwest::Url}; use anyhow::bail; use hdp::hdp_run; use hdp::preprocessor::module_registry::ModuleRegistry; +use hdp::primitives::chain_id::ChainId; use hdp::primitives::{ aggregate_fn::{integer::Operator, FunctionContext}, task::{ @@ -30,11 +31,11 @@ pub async fn run_interactive() -> anyhow::Result<()> { println!("Welcome to Herodotus Data Processor interactive CLI! 🛰️"); println!( r" - _ _ ____ ____ - | | | | | _ \ | _ \ + _ _ ____ ____ + | | | | | _ \ | _ \ | |_| | | | | | | |_) | - | _ | | |_| | | __/ - |_| |_| |____/ |_| + | _ | | |_| | | __/ + |_| |_| |____/ |_| " ); @@ -60,11 +61,10 @@ pub async fn run_interactive() -> anyhow::Result<()> { DatalakeType::BlockSampled => { // ================== Block Sampled Datalake Fields ================== // 0. Chain ID - let chain_id: u64 = inquire::Text::new("Chain ID") + let chain_id: String = inquire::Text::new("Chain ID") .with_help_message("What is the chain ID? (Enter to set default)") - .with_default("11155111") - .prompt()? - .parse()?; + .with_default("ETH_SEPOLIA") + .prompt()?; // 1. Block range start let block_range_start: u64 = inquire::Text::new("Block range start") .with_help_message( @@ -138,7 +138,7 @@ pub async fn run_interactive() -> anyhow::Result<()> { } }; let block_sampled_datalake = BlockSampledDatalake::new( - chain_id, + ChainId::from_str(&chain_id)?, block_range_start, block_range_end, increment, @@ -148,11 +148,10 @@ pub async fn run_interactive() -> anyhow::Result<()> { } DatalakeType::TransactionsInBlock => { // 0. Chain ID - let chain_id: u64 = inquire::Text::new("Chain ID") + let chain_id: String = inquire::Text::new("Chain ID") .with_help_message("What is the chain ID? (Enter to set default)") - .with_default("11155111") - .prompt()? - .parse()?; + .with_default("ETH_SEPOLIA") + .prompt()?; let target_block: u64 = inquire::Text::new("Enter target block number") .with_help_message( "What block you target to get transactions? (Enter to set default)", @@ -225,7 +224,7 @@ pub async fn run_interactive() -> anyhow::Result<()> { } }; let transactions_datalake = TransactionsInBlockDatalake::new( - chain_id, + ChainId::from_str(&chain_id)?, target_block, TransactionsCollection::from_str(&sampled_property)?, start_index, @@ -327,7 +326,7 @@ pub async fn run_interactive() -> anyhow::Result<()> { }, Err(_) => None, }; - let chain_id: Option = match inquire::Text::new("Enter Chain ID: ") + let chain_id: Option = match inquire::Text::new("Enter Chain ID: ") .with_help_message("Skip if you have it in your .env file") .prompt() { diff --git a/hdp/src/cairo_runner/dry_run.rs b/hdp/src/cairo_runner/dry_run.rs index 0234ae76..d2c3d32a 100644 --- a/hdp/src/cairo_runner/dry_run.rs +++ b/hdp/src/cairo_runner/dry_run.rs @@ -1,6 +1,9 @@ use crate::constant::DRY_CAIRO_RUN_OUTPUT_FILE; use crate::primitives::processed_types::uint256::Uint256; -use crate::provider::key::FetchKeyEnvelope; +use crate::provider::key::{ + AccountMemorizerKey, FetchKeyEnvelope, HeaderMemorizerKey, StorageMemorizerKey, TxMemorizerKey, + TxReceiptMemorizerKey, +}; use serde::{Deserialize, Serialize}; use serde_with::serde_as; use starknet::core::serde::unsigned_field_element::UfeHex; @@ -18,12 +21,67 @@ pub type DryRunResult = Vec; #[serde_as] #[derive(Serialize, Deserialize, Debug)] pub struct DryRunnedModule { + #[serde(deserialize_with = "deserialize_fetch_keys")] pub fetch_keys: Vec, pub result: Uint256, #[serde_as(as = "UfeHex")] pub program_hash: FieldElement, } +fn deserialize_fetch_keys<'de, D>(deserializer: D) -> Result, D::Error> +where + D: serde::Deserializer<'de>, +{ + #[derive(Deserialize)] + struct Helper { + #[serde(rename = "type")] + key_type: String, + key: serde_json::Value, + } + + let helpers: Vec = Vec::deserialize(deserializer)?; + + helpers + .into_iter() + .map(|helper| { + let envelope = match helper.key_type.as_str() { + "HeaderMemorizerKey" => { + let key: HeaderMemorizerKey = + serde_json::from_value(helper.key).map_err(serde::de::Error::custom)?; + FetchKeyEnvelope::Header(key) + } + "AccountMemorizerKey" => { + let key: AccountMemorizerKey = + serde_json::from_value(helper.key).map_err(serde::de::Error::custom)?; + FetchKeyEnvelope::Account(key) + } + "StorageMemorizerKey" => { + let key: StorageMemorizerKey = + serde_json::from_value(helper.key).map_err(serde::de::Error::custom)?; + FetchKeyEnvelope::Storage(key) + } + "TxMemorizerKey" => { + let key: TxMemorizerKey = + serde_json::from_value(helper.key).map_err(serde::de::Error::custom)?; + FetchKeyEnvelope::Tx(key) + } + "TxReceiptMemorizerKey" => { + let key: TxReceiptMemorizerKey = + serde_json::from_value(helper.key).map_err(serde::de::Error::custom)?; + FetchKeyEnvelope::TxReceipt(key) + } + _ => { + return Err(serde::de::Error::custom(format!( + "Unknown key type: {}", + helper.key_type + ))) + } + }; + Ok(envelope) + }) + .collect() +} + pub struct DryRunner { program_path: PathBuf, output_file_path: Option, @@ -90,8 +148,13 @@ impl DryRunner { #[cfg(test)] mod tests { + use core::str::FromStr; + + use alloy::primitives::{Address, StorageKey}; use starknet::macros::felt; + use crate::primitives::chain_id::ChainId; + use super::*; fn init_dry_runner() -> DryRunner { @@ -117,47 +180,103 @@ mod tests { #[test] fn test_parse_run() { let output = r#" - [ - { - "fetch_keys": [ + [ { - "key": { - "chain_id": 11155111, - "block_number": 5186021 + "fetch_keys": [ + { + "type": "HeaderMemorizerKey", + "key": { + "chain_id": 11155111, + "block_number": 5186021 + } }, - "type": "HeaderMemorizerKey" - }, - { - "key": { - "chain_id": 11155111, - "block_number": 5186023, - "address": "0x13CB6AE34A13a0977F4d7101eBc24B87Bb23F0d5" + { + "type": "AccountMemorizerKey", + "key": { + "chain_id": 11155111, + "block_number": 5186023, + "address": "0x13CB6AE34A13a0977F4d7101eBc24B87Bb23F0d5" + } }, - "type": "AccountMemorizerKey" - }, - { - "key": { - "chain_id": 11155111, - "block_number": 5186022, - "address": "0x13CB6AE34A13a0977F4d7101eBc24B87Bb23F0d5", - "key": "0x487ea7bf96eb1280f1075498855b55ec61ba7d354b5260e2504ef51140e0df63" - }, - "type": "StorageMemorizerKey" - } - ], - "result": { "low": "0x0", "high": "0x0" }, - "program_hash": "0xc8580f74b6e6e04d8073602ad0c0d55538b56bf8307fefebb6b65b1bbf2a27" + { + "type": "StorageMemorizerKey", + "key": { + "chain_id": 11155111, + "block_number": 5186022, + "address": "0x13CB6AE34A13a0977F4d7101eBc24B87Bb23F0d5", + "storage_key": "0x487ea7bf96eb1280f1075498855b55ec61ba7d354b5260e2504ef51140e0df63" + } + } + ], + "result": { "low": "0x0", "high": "0x0" }, + "program_hash": "0xc8580f74b6e6e04d8073602ad0c0d55538b56bf8307fefebb6b65b1bbf2a27" } ] "#; - let fetch_keys: Vec = serde_json::from_str(output).unwrap(); + + println!("Attempting to parse the following JSON:"); + println!("{}", output); + + let fetch_keys: Vec = match serde_json::from_str(output) { + Ok(result) => result, + Err(e) => { + println!("Error parsing JSON: {:?}", e); + panic!("JSON parsing failed"); + } + }; + assert_eq!(fetch_keys.len(), 1); let module = &fetch_keys[0]; assert_eq!(module.fetch_keys.len(), 3); + + for (i, key) in module.fetch_keys.iter().enumerate() { + println!("Fetch key {}: {:?}", i, key); + } + assert_eq!(module.result, Uint256::from_strs("0x0", "0x0").unwrap()); assert_eq!( module.program_hash, felt!("0xc8580f74b6e6e04d8073602ad0c0d55538b56bf8307fefebb6b65b1bbf2a27") - ) + ); + + // Additional assertions for each key type + match &module.fetch_keys[0] { + FetchKeyEnvelope::Header(key) => { + assert_eq!(key.chain_id, ChainId::from_numeric_id(11155111).unwrap()); + assert_eq!(key.block_number, 5186021); + } + _ => panic!("Expected HeaderMemorizerKey"), + } + + match &module.fetch_keys[1] { + FetchKeyEnvelope::Account(key) => { + assert_eq!(key.chain_id, ChainId::from_numeric_id(11155111).unwrap()); + assert_eq!(key.block_number, 5186023); + assert_eq!( + key.address, + Address::from_str("0x13CB6AE34A13a0977F4d7101eBc24B87Bb23F0d5").unwrap() + ); + } + _ => panic!("Expected AccountMemorizerKey"), + } + + match &module.fetch_keys[2] { + FetchKeyEnvelope::Storage(key) => { + assert_eq!(key.chain_id, ChainId::from_numeric_id(11155111).unwrap()); + assert_eq!(key.block_number, 5186022); + assert_eq!( + key.address, + Address::from_str("0x13CB6AE34A13a0977F4d7101eBc24B87Bb23F0d5").unwrap() + ); + assert_eq!( + key.storage_key, + StorageKey::from_str( + "0x487ea7bf96eb1280f1075498855b55ec61ba7d354b5260e2504ef51140e0df63" + ) + .unwrap() + ); + } + _ => panic!("Expected StorageMemorizerKey"), + } } } diff --git a/hdp/src/hdp_run.rs b/hdp/src/hdp_run.rs index 56f5e0ab..9e9357b9 100644 --- a/hdp/src/hdp_run.rs +++ b/hdp/src/hdp_run.rs @@ -1,11 +1,13 @@ use crate::{ constant::{DEFAULT_DRY_CAIRO_RUN_CAIRO_FILE, DEFAULT_SOUND_CAIRO_RUN_CAIRO_FILE}, preprocessor::{compile::config::CompilerConfig, PreProcessor}, - primitives::{processed_types::cairo_format::AsCairoFormat, task::TaskEnvelope}, + primitives::{ + chain_id::ChainId, processed_types::cairo_format::AsCairoFormat, task::TaskEnvelope, + }, processor::Processor, provider::config::ProviderConfig, }; -use alloy::primitives::ChainId; + use anyhow::Result; use reqwest::Url; use std::{collections::HashMap, env, fs, path::PathBuf}; @@ -15,7 +17,7 @@ use tracing::{debug, info}; #[derive(Debug)] pub struct HdpRunConfig { // chain_id => provider config - pub provider_config: HashMap, + pub provider_config: HashMap, pub dry_run_program_path: PathBuf, pub sound_run_program_path: PathBuf, pub program_input_file: PathBuf, diff --git a/hdp/src/preprocessor/compile/config.rs b/hdp/src/preprocessor/compile/config.rs index 2974ec75..f51e67bf 100644 --- a/hdp/src/preprocessor/compile/config.rs +++ b/hdp/src/preprocessor/compile/config.rs @@ -2,14 +2,14 @@ use std::{collections::HashMap, path::PathBuf}; #[cfg(feature = "test_utils")] use crate::constant::DEFAULT_DRY_CAIRO_RUN_CAIRO_FILE; -use crate::provider::config::ProviderConfig; +use crate::{primitives::chain_id::ChainId, provider::config::ProviderConfig}; pub struct CompilerConfig { // dry-run program path pub dry_run_program_path: PathBuf, pub save_fetch_keys_file: Option, // chain_id => provider config - pub provider_config: HashMap, + pub provider_config: HashMap, } impl CompilerConfig { diff --git a/hdp/src/preprocessor/compile/datalake.rs b/hdp/src/preprocessor/compile/datalake.rs index 8d902d9c..971ee9b5 100644 --- a/hdp/src/preprocessor/compile/datalake.rs +++ b/hdp/src/preprocessor/compile/datalake.rs @@ -63,6 +63,7 @@ mod tests { use crate::primitives::{ aggregate_fn::AggregationFunction, + chain_id::ChainId, task::datalake::{ block_sampled::{ AccountField, BlockSampledCollection, BlockSampledDatalake, HeaderField, @@ -87,7 +88,7 @@ mod tests { DatalakeCompute { compute: Computation::new(AggregationFunction::MIN, None), datalake: DatalakeEnvelope::BlockSampled(BlockSampledDatalake { - chain_id: 11155111, + chain_id: ChainId::EthereumSepolia, block_range_start: 10001, block_range_end: 10005, increment: 1, @@ -97,7 +98,7 @@ mod tests { DatalakeCompute { compute: Computation::new(AggregationFunction::AVG, None), datalake: DatalakeEnvelope::BlockSampled(BlockSampledDatalake { - chain_id: 11155111, + chain_id: ChainId::EthereumSepolia, block_range_start: 6127485, block_range_end: 6127495, increment: 1, @@ -110,7 +111,7 @@ mod tests { DatalakeCompute { compute: Computation::new(AggregationFunction::AVG, None), datalake: DatalakeEnvelope::BlockSampled(BlockSampledDatalake { - chain_id: 11155111, + chain_id: ChainId::EthereumSepolia, block_range_start: 6127485, block_range_end: 6127490, increment: 1, @@ -147,7 +148,7 @@ mod tests { DatalakeCompute { compute: Computation::new(AggregationFunction::MIN, None), datalake: DatalakeEnvelope::TransactionsInBlock(TransactionsInBlockDatalake { - chain_id: 11155111, + chain_id: ChainId::EthereumSepolia, target_block: 6127486, start_index: 0, end_index: 10, @@ -161,7 +162,7 @@ mod tests { DatalakeCompute { compute: Computation::new(AggregationFunction::MIN, None), datalake: DatalakeEnvelope::TransactionsInBlock(TransactionsInBlockDatalake { - chain_id: 11155111, + chain_id: ChainId::EthereumSepolia, target_block: 6127485, start_index: 0, end_index: 11, diff --git a/hdp/src/primitives/chain_id.rs b/hdp/src/primitives/chain_id.rs index fd112e5b..f9a9716e 100644 --- a/hdp/src/primitives/chain_id.rs +++ b/hdp/src/primitives/chain_id.rs @@ -2,9 +2,10 @@ use core::{ fmt::{Debug, Display}, str::FromStr, }; +use serde::{Deserialize, Deserializer, Serialize, Serializer}; use thiserror::Error; -#[derive(PartialEq, Eq)] +#[derive(PartialEq, Eq, Clone, Copy, Hash)] pub enum ChainId { EthereumMainnet, EthereumSepolia, @@ -18,6 +19,39 @@ pub struct ParseChainIdError { input: String, } +impl TryFrom for ChainId { + type Error = ParseChainIdError; + + fn try_from(value: u128) -> Result { + Self::from_numeric_id(value) + } +} + +impl From for u128 { + fn from(chain_id: ChainId) -> Self { + chain_id.to_numeric_id() + } +} + +impl<'de> Deserialize<'de> for ChainId { + fn deserialize(deserializer: D) -> Result + where + D: Deserializer<'de>, + { + let s = String::deserialize(deserializer)?; + ChainId::from_str(&s).map_err(serde::de::Error::custom) + } +} + +impl Serialize for ChainId { + fn serialize(&self, serializer: S) -> Result + where + S: Serializer, + { + serializer.serialize_str(&self.to_string()) + } +} + impl FromStr for ChainId { type Err = ParseChainIdError; @@ -37,10 +71,10 @@ impl FromStr for ChainId { impl Display for ChainId { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { match self { - ChainId::EthereumMainnet => write!(f, "{}", "ETH_MAINNET"), - ChainId::EthereumSepolia => write!(f, "{}", "ETH_SEPOLIA"), - ChainId::StarknetMainnet => write!(f, "{}", "SN_MAINNET"), - ChainId::StarknetSepolia => write!(f, "{}", "SN_SEPOLIA"), + ChainId::EthereumMainnet => write!(f, "ETH_MAINNET"), + ChainId::EthereumSepolia => write!(f, "ETH_SEPOLIA"), + ChainId::StarknetMainnet => write!(f, "SN_MAINNET"), + ChainId::StarknetSepolia => write!(f, "SN_SEPOLIA"), } } } @@ -84,7 +118,7 @@ impl ChainId { /// # Returns /// A Result containing the corresponding ChainId enum if successful, /// or a ParseChainIdError if the numeric ID is not recognized. - pub fn from_numberic_id(id: u128) -> Result { + pub fn from_numeric_id(id: u128) -> Result { match id { 1 => Ok(Self::EthereumMainnet), 11155111 => Ok(Self::EthereumSepolia), @@ -95,6 +129,10 @@ impl ChainId { }), } } + + pub fn to_be_bytes(&self) -> [u8; 16] { + self.to_numeric_id().to_be_bytes() + } } #[cfg(test)] @@ -146,19 +184,19 @@ mod tests { #[test] fn test_from_numeric_id() { - assert_eq!(ChainId::from_numberic_id(1), Ok(ChainId::EthereumMainnet)); + assert_eq!(ChainId::from_numeric_id(1), Ok(ChainId::EthereumMainnet)); assert_eq!( - ChainId::from_numberic_id(11155111), + ChainId::from_numeric_id(11155111), Ok(ChainId::EthereumSepolia) ); assert_eq!( - ChainId::from_numberic_id(393402131332719809807700), + ChainId::from_numeric_id(393402131332719809807700), Ok(ChainId::StarknetMainnet) ); assert_eq!( - ChainId::from_numberic_id(393402133025997798000961), + ChainId::from_numeric_id(393402133025997798000961), Ok(ChainId::StarknetSepolia) ); - assert!(ChainId::from_numberic_id(999).is_err()); + assert!(ChainId::from_numeric_id(999).is_err()); } } diff --git a/hdp/src/primitives/processed_types/mmr.rs b/hdp/src/primitives/processed_types/mmr.rs index 8ca838fd..09e48daa 100644 --- a/hdp/src/primitives/processed_types/mmr.rs +++ b/hdp/src/primitives/processed_types/mmr.rs @@ -1,7 +1,7 @@ use serde::{Deserialize, Serialize}; -use crate::{ - primitives::block::header::MMRMetaFromNewIndexer, primitives::utils::hex_string_to_uint, +use crate::primitives::{ + block::header::MMRMetaFromNewIndexer, chain_id::ChainId, utils::hex_string_to_uint, }; #[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Eq, Hash)] @@ -11,11 +11,11 @@ pub struct MMRMeta { pub size: u64, // hex encoded pub peaks: Vec, - pub chain_id: u64, + pub chain_id: u128, } impl MMRMeta { - pub fn new(id: u64, root: String, size: u64, peaks: Vec, chain_id: u64) -> Self { + pub fn new(id: u64, root: String, size: u64, peaks: Vec, chain_id: u128) -> Self { MMRMeta { id, root, @@ -27,13 +27,13 @@ impl MMRMeta { } impl MMRMeta { - pub fn from_indexer(val: MMRMetaFromNewIndexer, chain_id: u64) -> Self { + pub fn from_indexer(val: MMRMetaFromNewIndexer, chain_id: ChainId) -> Self { MMRMeta { id: hex_string_to_uint(&val.mmr_id), root: val.mmr_root, size: val.mmr_size, peaks: val.mmr_peaks, - chain_id, + chain_id: chain_id.to_numeric_id(), } } } diff --git a/hdp/src/primitives/request.rs b/hdp/src/primitives/request.rs index add447cd..c9b4e796 100644 --- a/hdp/src/primitives/request.rs +++ b/hdp/src/primitives/request.rs @@ -1,6 +1,8 @@ use crate::primitives::task::{datalake::DatalakeCompute, module::Module}; use serde::{Deserialize, Serialize}; +use super::chain_id::ChainId; + #[derive(Debug, Serialize, Deserialize)] #[serde(tag = "type")] pub enum Task { @@ -11,7 +13,7 @@ pub enum Task { #[derive(Debug, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct SubmitBatchQuery { - pub destination_chain_id: u64, + pub destination_chain_id: ChainId, pub tasks: Vec, } @@ -19,13 +21,13 @@ pub struct SubmitBatchQuery { fn test_serialize_submit_batch_query_datalake() { let json_data = r#" { - "destinationChainId": 11155111, + "destinationChainId": "ETH_SEPOLIA", "tasks": [ { "type": "DatalakeCompute", "datalake": { "type": "BlockSampled", - "chainId": 11155111, + "chainId": "ETH_SEPOLIA", "blockRangeStart": 5515020, "blockRangeEnd": 5515039, "increment": 10, @@ -39,8 +41,7 @@ fn test_serialize_submit_batch_query_datalake() { "type": "DatalakeCompute", "datalake": { "type": "TransactionsInBlock", - - "chainId": 11155111, + "chainId": "ETH_SEPOLIA", "targetBlock": 5409986, "startIndex": 10, "endIndex": 40, @@ -62,7 +63,7 @@ fn test_serialize_submit_batch_query_datalake() { } } ] - } + } "#; let parsed: SubmitBatchQuery = serde_json::from_str(json_data).unwrap(); @@ -73,7 +74,7 @@ fn test_serialize_submit_batch_query_datalake() { fn test_serialize_submit_batch_query_module() { let json_data = r#" { - "destinationChainId": 11155111, + "destinationChainId": "ETH_SEPOLIA", "tasks": [ { "type": "Module", @@ -91,7 +92,7 @@ fn test_serialize_submit_batch_query_module() { } ] } - + "#; let parsed: SubmitBatchQuery = serde_json::from_str(json_data).unwrap(); diff --git a/hdp/src/primitives/solidity_types/datalake_compute/compute.rs b/hdp/src/primitives/solidity_types/datalake_compute/compute.rs index 754a46ef..fef08db2 100644 --- a/hdp/src/primitives/solidity_types/datalake_compute/compute.rs +++ b/hdp/src/primitives/solidity_types/datalake_compute/compute.rs @@ -110,9 +110,10 @@ impl Codecs for Computation { #[cfg(test)] mod tests { - use crate::{ - primitives::solidity_types::traits::DatalakeComputeCodecs, - primitives::task::datalake::{ + use crate::primitives::{ + chain_id::ChainId, + solidity_types::traits::DatalakeComputeCodecs, + task::datalake::{ block_sampled::BlockSampledDatalake, envelope::DatalakeEnvelope, DatalakeCompute, }, }; @@ -227,7 +228,7 @@ mod tests { )), ); let datalake = DatalakeEnvelope::BlockSampled(BlockSampledDatalake::new( - 11155111, + ChainId::EthereumSepolia, 0, 100, 1, diff --git a/hdp/src/primitives/solidity_types/datalake_compute/datalake/block_sampled.rs b/hdp/src/primitives/solidity_types/datalake_compute/datalake/block_sampled.rs index 04105d16..0d6c490c 100644 --- a/hdp/src/primitives/solidity_types/datalake_compute/datalake/block_sampled.rs +++ b/hdp/src/primitives/solidity_types/datalake_compute/datalake/block_sampled.rs @@ -1,3 +1,4 @@ +use crate::primitives::chain_id::ChainId; use crate::primitives::solidity_types::traits::DatalakeCodecs; use crate::primitives::task::datalake::block_sampled::{ BlockSampledCollection, BlockSampledDatalake, @@ -21,7 +22,7 @@ impl DatalakeCodecs for BlockSampledDatalake { /// Encode the block sampled datalake fn encode(&self) -> Result> { let datalake_code: DynSolValue = self.get_datalake_type().to_u8().into(); - let chain_id: DynSolValue = self.chain_id.into(); + let chain_id: DynSolValue = self.chain_id.to_numeric_id().into(); let block_range_start: DynSolValue = self.block_range_start.into(); let block_range_end: DynSolValue = self.block_range_end.into(); let sampled_property: DynSolValue = self.sampled_property.serialize()?.into(); @@ -58,7 +59,8 @@ impl DatalakeCodecs for BlockSampledDatalake { bail!("Encoded datalake is not a block sample datalake"); } - let chain_id = value[1].as_uint().unwrap().0.to_string().parse::()?; + let chain_id = + ChainId::from_numeric_id(value[1].as_uint().unwrap().0.to_string().parse::()?)?; let block_range_start = value[2].as_uint().unwrap().0.to_string().parse::()?; let block_range_end = value[3].as_uint().unwrap().0.to_string().parse::()?; let increment = value[4].as_uint().unwrap().0.to_string().parse::()?; diff --git a/hdp/src/primitives/solidity_types/datalake_compute/datalake/envelope.rs b/hdp/src/primitives/solidity_types/datalake_compute/datalake/envelope.rs index 2c169ec5..d4a74071 100644 --- a/hdp/src/primitives/solidity_types/datalake_compute/datalake/envelope.rs +++ b/hdp/src/primitives/solidity_types/datalake_compute/datalake/envelope.rs @@ -91,12 +91,15 @@ impl DatalakeCodecs for DatalakeEnvelope { #[cfg(test)] mod tests { - use crate::primitives::task::datalake::{ - block_sampled::{AccountField, BlockSampledCollection, BlockSampledDatalake}, - envelope::BatchedDatalakes, - transactions::{ - IncludedTypes, TransactionField, TransactionReceiptField, TransactionsCollection, - TransactionsInBlockDatalake, + use crate::primitives::{ + chain_id::ChainId, + task::datalake::{ + block_sampled::{AccountField, BlockSampledCollection, BlockSampledDatalake}, + envelope::BatchedDatalakes, + transactions::{ + IncludedTypes, TransactionField, TransactionReceiptField, TransactionsCollection, + TransactionsInBlockDatalake, + }, }, }; use alloy::{hex, primitives::Address}; @@ -108,7 +111,7 @@ mod tests { fn test_block_datalake_decoder_for_account() { let batched_block_datalake = hex::decode("0x000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000aa36a700000000000000000000000000000000000000000000000000000000004b902400000000000000000000000000000000000000000000000000000000004b9027000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000016020a4de450feb156a2a51ed159b2fb99da26e5f3a30000000000000000000000").unwrap(); let block_datalake = BlockSampledDatalake::new( - 11155111, + ChainId::EthereumSepolia, 4952100, 4952103, 1, @@ -148,7 +151,7 @@ mod tests { fn test_block_massive_datalake_decoder() { let batched_block_datalake = hex::decode("0x00000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000001a000000000000000000000000000000000000000000000000000000000000002c000000000000000000000000000000000000000000000000000000000000003e0000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000aa36a700000000000000000000000000000000000000000000000000000000009ead1800000000000000000000000000000000000000000000000000000000009eb100000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000002010f000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000aa36a700000000000000000000000000000000000000000000000000000000009ead1800000000000000000000000000000000000000000000000000000000009eb100000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000002010f000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000aa36a700000000000000000000000000000000000000000000000000000000009ead1800000000000000000000000000000000000000000000000000000000009eb100000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000002010f000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000aa36a700000000000000000000000000000000000000000000000000000000009ead1800000000000000000000000000000000000000000000000000000000009eb100000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000002010f000000000000000000000000000000000000000000000000000000000000").unwrap(); let datalake_massive_block = DatalakeEnvelope::BlockSampled(BlockSampledDatalake::new( - 11155111, + ChainId::EthereumSepolia, 10399000, 10400000, 1, @@ -171,7 +174,7 @@ mod tests { #[test] fn test_transaction_datalakes_encoder() { let transaction_datalake1 = TransactionsInBlockDatalake::new( - 11155111, + ChainId::EthereumSepolia, 100000, TransactionsCollection::Transactions(TransactionField::Nonce), 1, @@ -181,7 +184,7 @@ mod tests { ); let transaction_datalake2 = TransactionsInBlockDatalake::new( - 11155111, + ChainId::EthereumSepolia, 100000, TransactionsCollection::Transactions(TransactionField::AccessList), 1, @@ -206,7 +209,7 @@ mod tests { assert_eq!(decoded_datalake.len(), 2); let transaction_datalake1 = TransactionsInBlockDatalake::new( - 11155111, + ChainId::EthereumSepolia, 100000, TransactionsCollection::Transactions(TransactionField::Nonce), 1, @@ -216,7 +219,7 @@ mod tests { ); let transaction_datalake2 = TransactionsInBlockDatalake::new( - 11155111, + ChainId::EthereumSepolia, 100000, TransactionsCollection::Transactions(TransactionField::AccessList), 1, @@ -238,7 +241,7 @@ mod tests { #[test] fn test_transaction_datalakes_encoder_receipt() { let transaction_datalake1 = TransactionsInBlockDatalake::new( - 11155111, + ChainId::EthereumSepolia, 100000, TransactionsCollection::TranasactionReceipts(TransactionReceiptField::Success), 1, @@ -248,7 +251,7 @@ mod tests { ); let transaction_datalake2 = TransactionsInBlockDatalake::new( - 11155111, + ChainId::EthereumSepolia, 100000, TransactionsCollection::TranasactionReceipts(TransactionReceiptField::Bloom), 1, @@ -273,7 +276,7 @@ mod tests { assert_eq!(decoded_datalake.len(), 2); let transaction_datalake1 = TransactionsInBlockDatalake::new( - 11155111, + ChainId::EthereumSepolia, 100000, TransactionsCollection::TranasactionReceipts(TransactionReceiptField::Success), 1, @@ -283,7 +286,7 @@ mod tests { ); let transaction_datalake2 = TransactionsInBlockDatalake::new( - 11155111, + ChainId::EthereumSepolia, 100000, TransactionsCollection::TranasactionReceipts(TransactionReceiptField::Bloom), 1, diff --git a/hdp/src/primitives/solidity_types/datalake_compute/datalake/transactions_in_block.rs b/hdp/src/primitives/solidity_types/datalake_compute/datalake/transactions_in_block.rs index 2b87e609..246c65b8 100644 --- a/hdp/src/primitives/solidity_types/datalake_compute/datalake/transactions_in_block.rs +++ b/hdp/src/primitives/solidity_types/datalake_compute/datalake/transactions_in_block.rs @@ -1,6 +1,7 @@ -use crate::{ - primitives::solidity_types::traits::DatalakeCodecs, - primitives::task::datalake::{ +use crate::primitives::{ + chain_id::ChainId, + solidity_types::traits::DatalakeCodecs, + task::datalake::{ datalake_type::DatalakeType, transactions::{IncludedTypes, TransactionsCollection, TransactionsInBlockDatalake}, DatalakeCollection, @@ -22,7 +23,7 @@ impl DatalakeCodecs for TransactionsInBlockDatalake { /// Encode the [`TransactionsInBlockDatalake`] into a hex string fn encode(&self) -> Result> { let datalake_code: DynSolValue = self.get_datalake_type().to_u8().into(); - let chain_id: DynSolValue = self.chain_id.into(); + let chain_id: DynSolValue = self.chain_id.to_numeric_id().into(); let target_block: DynSolValue = self.target_block.into(); let sampled_property: DynSolValue = self.sampled_property.serialize()?.into(); let start_index: DynSolValue = self.start_index.into(); @@ -66,7 +67,8 @@ impl DatalakeCodecs for TransactionsInBlockDatalake { bail!("Encoded datalake is not a transactions datalake"); } - let chain_id = value[1].as_uint().unwrap().0.to_string().parse::()?; + let chain_id = + ChainId::from_numeric_id(value[1].as_uint().unwrap().0.to_string().parse::()?)?; let target_block = value[2].as_uint().unwrap().0.to_string().parse::()?; let start_index = value[3].as_uint().unwrap().0.to_string().parse::()?; let end_index = value[4].as_uint().unwrap().0.to_string().parse::()?; diff --git a/hdp/src/primitives/solidity_types/datalake_compute/mod.rs b/hdp/src/primitives/solidity_types/datalake_compute/mod.rs index 16b78bd2..174b6f90 100644 --- a/hdp/src/primitives/solidity_types/datalake_compute/mod.rs +++ b/hdp/src/primitives/solidity_types/datalake_compute/mod.rs @@ -106,9 +106,10 @@ impl BatchedDatalakeComputeCodecs for BatchedDatalakeCompute { mod tests { use std::str::FromStr; - use crate::{ - primitives::aggregate_fn::FunctionContext, - primitives::task::datalake::{ + use crate::primitives::{ + aggregate_fn::FunctionContext, + chain_id::ChainId, + task::datalake::{ block_sampled::{BlockSampledCollection, BlockSampledDatalake}, transactions::{IncludedTypes, TransactionsCollection, TransactionsInBlockDatalake}, }, @@ -120,7 +121,7 @@ mod tests { fn test_block_sampled_commit() { let datalake_compute = DatalakeCompute { datalake: DatalakeEnvelope::BlockSampled(BlockSampledDatalake { - chain_id: 11155111, + chain_id: ChainId::EthereumSepolia, block_range_start: 5858987, block_range_end: 5858997, increment: 2, @@ -148,7 +149,7 @@ mod tests { fn test_transactions_commit() { let datalake_compute = DatalakeCompute { datalake: DatalakeEnvelope::TransactionsInBlock(TransactionsInBlockDatalake { - chain_id: 11155111, + chain_id: ChainId::EthereumSepolia, target_block: 5605816, start_index: 12, end_index: 53, diff --git a/hdp/src/primitives/task/datalake/block_sampled/datalake.rs b/hdp/src/primitives/task/datalake/block_sampled/datalake.rs index 97d14ed7..80c55dd5 100644 --- a/hdp/src/primitives/task/datalake/block_sampled/datalake.rs +++ b/hdp/src/primitives/task/datalake/block_sampled/datalake.rs @@ -1,6 +1,6 @@ use serde::{Deserialize, Serialize}; -use crate::primitives::task::datalake::envelope::default_increment; +use crate::primitives::{chain_id::ChainId, task::datalake::envelope::default_increment}; use super::collection::BlockSampledCollection; @@ -11,7 +11,7 @@ use super::collection::BlockSampledCollection; #[derive(Debug, Clone, PartialEq, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct BlockSampledDatalake { - pub chain_id: u64, + pub chain_id: ChainId, /// The start of the block range pub block_range_start: u64, /// The end of the block range @@ -25,7 +25,7 @@ pub struct BlockSampledDatalake { impl BlockSampledDatalake { pub fn new( - chain_id: u64, + chain_id: ChainId, block_range_start: u64, block_range_end: u64, increment: u64, diff --git a/hdp/src/primitives/task/datalake/block_sampled/mod.rs b/hdp/src/primitives/task/datalake/block_sampled/mod.rs index a280fe6b..39ec2a8c 100644 --- a/hdp/src/primitives/task/datalake/block_sampled/mod.rs +++ b/hdp/src/primitives/task/datalake/block_sampled/mod.rs @@ -9,9 +9,9 @@ pub use rlp_fields::*; #[cfg(test)] mod tests { - use crate::{ - primitives::solidity_types::traits::DatalakeCodecs, - primitives::task::datalake::DatalakeCollection, + use crate::primitives::{ + chain_id::ChainId, solidity_types::traits::DatalakeCodecs, + task::datalake::DatalakeCollection, }; use super::*; @@ -27,7 +27,7 @@ mod tests { let decoded_datalake = BlockSampledDatalake::decode(&encoded_block_sample_datalake).unwrap(); let block_datalake = BlockSampledDatalake::new( - 11155111, + ChainId::EthereumSepolia, 10399990, 10400000, 1, @@ -61,7 +61,7 @@ mod tests { let decoded_datalake = BlockSampledDatalake::decode(&encoded_block_sample_datalake).unwrap(); let block_datalake = BlockSampledDatalake::new( - 11155111, + ChainId::EthereumSepolia, 10399990, 10400000, 1, @@ -96,7 +96,7 @@ mod tests { let decoded_datalake = BlockSampledDatalake::decode(&encoded_block_sample_datalake).unwrap(); let block_datalake = BlockSampledDatalake::new( - 11155111, + ChainId::EthereumSepolia, 10399990, 10400000, 1, diff --git a/hdp/src/primitives/task/datalake/envelope.rs b/hdp/src/primitives/task/datalake/envelope.rs index 2e5aa8a5..22c15317 100644 --- a/hdp/src/primitives/task/datalake/envelope.rs +++ b/hdp/src/primitives/task/datalake/envelope.rs @@ -25,7 +25,7 @@ impl DatalakeEnvelope { } } - pub fn get_chain_id(&self) -> u64 { + pub fn get_chain_id(&self) -> crate::primitives::chain_id::ChainId { match self { DatalakeEnvelope::BlockSampled(datalake) => datalake.chain_id, DatalakeEnvelope::TransactionsInBlock(datalake) => datalake.chain_id, diff --git a/hdp/src/primitives/task/datalake/transactions/datalake.rs b/hdp/src/primitives/task/datalake/transactions/datalake.rs index c1032e6a..423773f8 100644 --- a/hdp/src/primitives/task/datalake/transactions/datalake.rs +++ b/hdp/src/primitives/task/datalake/transactions/datalake.rs @@ -13,14 +13,14 @@ use alloy::primitives::U256; use anyhow::Result; use serde::{Deserialize, Serialize}; -use crate::primitives::task::datalake::envelope::default_increment; +use crate::primitives::{chain_id::ChainId, task::datalake::envelope::default_increment}; use super::TransactionsCollection; #[derive(Debug, Clone, PartialEq, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct TransactionsInBlockDatalake { - pub chain_id: u64, + pub chain_id: ChainId, // target block number pub target_block: u64, // start index of transactions range ( default 0 ) @@ -38,7 +38,7 @@ pub struct TransactionsInBlockDatalake { impl TransactionsInBlockDatalake { pub fn new( - chain_id: u64, + chain_id: ChainId, target_block: u64, sampled_property: TransactionsCollection, start_index: u64, diff --git a/hdp/src/primitives/task/datalake/transactions/mod.rs b/hdp/src/primitives/task/datalake/transactions/mod.rs index b8b2a3da..e974066b 100644 --- a/hdp/src/primitives/task/datalake/transactions/mod.rs +++ b/hdp/src/primitives/task/datalake/transactions/mod.rs @@ -12,9 +12,9 @@ mod tests { use std::str::FromStr; - use crate::{ - primitives::solidity_types::traits::DatalakeCodecs, - primitives::task::datalake::DatalakeCollection, + use crate::primitives::{ + chain_id::ChainId, solidity_types::traits::DatalakeCodecs, + task::datalake::DatalakeCollection, }; use alloy::{ hex, @@ -28,7 +28,7 @@ mod tests { let encoded_datalake= "0x00000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000aa36a700000000000000000000000000000000000000000000000000000000000f42400000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000001010101000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000020100000000000000000000000000000000000000000000000000000000000000"; let sampled_property = TransactionsCollection::Transactions(TransactionField::Nonce); let transaction_datalake = TransactionsInBlockDatalake::new( - 11155111, + ChainId::EthereumSepolia, 1000000, sampled_property, 1, @@ -67,7 +67,7 @@ mod tests { let sampled_property = TransactionsCollection::TranasactionReceipts(TransactionReceiptField::Success); let transaction_datalake = TransactionsInBlockDatalake::new( - 11155111, + ChainId::EthereumSepolia, 1000000, sampled_property, 1, diff --git a/hdp/src/provider/config.rs b/hdp/src/provider/config.rs index 4bc0a21a..f8a3490b 100644 --- a/hdp/src/provider/config.rs +++ b/hdp/src/provider/config.rs @@ -1,12 +1,14 @@ use reqwest::Url; +use crate::primitives::chain_id::ChainId; + /// EVM provider configuration #[derive(Clone, Debug)] pub struct ProviderConfig { /// RPC url pub rpc_url: Url, /// Chain id - pub chain_id: u64, + pub chain_id: ChainId, /// Max number of requests to send in parallel /// /// For default, it is set to 100 @@ -19,8 +21,6 @@ pub struct ProviderConfig { #[cfg(feature = "test_utils")] pub const TEST_MAX_REQUESTS: u64 = 100; #[cfg(feature = "test_utils")] -const TEST_CHAIN_ID: u64 = 11155111; -#[cfg(feature = "test_utils")] const TEST_RPC_URL: &str = "https://eth-sepolia.g.alchemy.com/v2/xar76cftwEtqTBWdF4ZFy9n8FLHAETDv"; #[cfg(feature = "test_utils")] @@ -28,7 +28,7 @@ impl Default for ProviderConfig { fn default() -> Self { Self { rpc_url: TEST_RPC_URL.parse().unwrap(), - chain_id: TEST_CHAIN_ID, + chain_id: ChainId::EthereumSepolia, max_requests: TEST_MAX_REQUESTS, } } diff --git a/hdp/src/provider/evm/from_keys.rs b/hdp/src/provider/evm/from_keys.rs index 3cba5d56..57232c21 100644 --- a/hdp/src/provider/evm/from_keys.rs +++ b/hdp/src/provider/evm/from_keys.rs @@ -22,7 +22,7 @@ use std::time::Instant; use tracing::info; impl EvmProvider { - /// This is the public entry point of provider. + /// This is the public entry point of provider. pub async fn fetch_proofs_from_keys( &self, fetch_keys: CategorizedFetchKeys, @@ -187,7 +187,7 @@ impl EvmProvider { let mut address_slot_to_block_range: HashMap<(Address, B256), Vec> = HashMap::new(); for key in keys { let block_range = address_slot_to_block_range - .entry((key.address, key.key)) + .entry((key.address, key.storage_key)) .or_default(); block_range.push(key.block_number); } @@ -357,7 +357,7 @@ mod tests { #[tokio::test] #[cfg(feature = "test_utils")] async fn test_get_proofs_from_header_keys() { - let target_chain_id = 11155111; + let target_chain_id = crate::primitives::chain_id::ChainId::EthereumSepolia; let provider = EvmProvider::default(); let keys = vec![ FetchKeyEnvelope::Header(HeaderMemorizerKey::new(target_chain_id, 1)), @@ -373,7 +373,7 @@ mod tests { #[tokio::test] #[cfg(feature = "test_utils")] async fn test_get_proofs_from_accounts_keys() { - let target_chain_id = 11155111; + let target_chain_id = crate::primitives::chain_id::ChainId::EthereumSepolia; let provider = EvmProvider::default(); let target_address = address!("7f2c6f930306d3aa736b3a6c6a98f512f74036d4"); let keys = vec![ @@ -400,7 +400,7 @@ mod tests { #[cfg(feature = "test_utils")] async fn test_proofs_from_storage_keys() { let start_fetch = Instant::now(); - let target_chain_id = 11155111; + let target_chain_id = crate::primitives::chain_id::ChainId::EthereumSepolia; let provider = EvmProvider::default(); let target_address = address!("7f2c6f930306d3aa736b3a6c6a98f512f74036d4"); let target_slot = B256::ZERO; @@ -455,7 +455,7 @@ mod tests { #[tokio::test] #[cfg(feature = "test_utils")] async fn test_get_proofs_from_tx_keys() { - let target_chain_id = 11155111; + let target_chain_id = crate::primitives::chain_id::ChainId::EthereumSepolia; let provider = EvmProvider::default(); let keys = vec![ FetchKeyEnvelope::Tx(TxMemorizerKey::new(target_chain_id, 1000, 0)), diff --git a/hdp/src/provider/indexer.rs b/hdp/src/provider/indexer.rs index fa567aa8..0683f441 100644 --- a/hdp/src/provider/indexer.rs +++ b/hdp/src/provider/indexer.rs @@ -1,10 +1,13 @@ use crate::{ constant::HERODOTUS_RS_INDEXER_URL, - primitives::block::header::{ - MMRDataFromNewIndexer, MMRFromNewIndexer, MMRMetaFromNewIndexer, MMRProofFromNewIndexer, + primitives::{ + block::header::{ + MMRDataFromNewIndexer, MMRFromNewIndexer, MMRMetaFromNewIndexer, MMRProofFromNewIndexer, + }, + chain_id::ChainId, }, }; -use alloy::primitives::{BlockNumber, ChainId}; +use alloy::primitives::BlockNumber; use reqwest::Client; use serde_json::{from_value, Value}; use std::collections::HashMap; @@ -35,6 +38,19 @@ pub enum IndexerError { GetHeadersProofError(String), } +impl ChainId { + /// This method is only needed to interact with the indexer, + /// as the indexer uses these specific chain ID representations. + fn get_indexer_chain_id(&self) -> &str { + match self { + ChainId::EthereumMainnet => "1", + ChainId::EthereumSepolia => "11155111", + ChainId::StarknetMainnet => "STARKNET", + ChainId::StarknetSepolia => "SN_SEPOLIA", + } + } +} + /// Indexer client for fetching MMR and headers proof from Herodotus Indexer /// /// For more information, see: https://rs-indexer.api.herodotus.cloud/swagger @@ -53,7 +69,7 @@ pub enum IndexerError { #[derive(Clone)] pub struct Indexer { client: Client, - pub chain_id: u64, + pub chain_id: ChainId, } #[derive(Debug)] @@ -103,7 +119,7 @@ impl Indexer { let response = self .client .get(HERODOTUS_RS_INDEXER_URL) - .query(&self._query(from_block, to_block, self.chain_id)) + .query(&self._query(from_block, to_block, self.chain_id.get_indexer_chain_id())) .send() .await .map_err(IndexerError::ReqwestError)?; @@ -147,7 +163,7 @@ impl Indexer { &self, from_block: BlockNumber, to_block: BlockNumber, - chain_id: ChainId, + chain_id: &str, ) -> Vec<(String, String)> { let query = vec![ ("deployed_on_chain".to_string(), chain_id.to_string()), @@ -178,7 +194,7 @@ mod tests { #[tokio::test] async fn test_get_headers_proof() -> Result<(), IndexerError> { - let indexer = Indexer::new(11155111); + let indexer = Indexer::new(ChainId::EthereumSepolia); let response = indexer.get_headers_proof(1, 1).await?; // check header length is 1 assert!(response.headers.len() == 1); @@ -187,7 +203,7 @@ mod tests { #[tokio::test] async fn test_get_headers_proof_multiple_blocks() -> Result<(), IndexerError> { - let indexer = Indexer::new(11155111); + let indexer = Indexer::new(ChainId::EthereumSepolia); let response = indexer.get_headers_proof(0, 10).await?; // check header length is 11 assert!(response.headers.len() == 11); @@ -196,7 +212,7 @@ mod tests { #[tokio::test] async fn test_invalid_query() { - let indexer = Indexer::new(11155111); + let indexer = Indexer::new(ChainId::EthereumSepolia); let response = indexer.get_headers_proof(10, 1).await; assert!(matches!(response, Err(IndexerError::InvalidBlockRange))); } diff --git a/hdp/src/provider/key.rs b/hdp/src/provider/key.rs index 7338f65b..7433a71f 100644 --- a/hdp/src/provider/key.rs +++ b/hdp/src/provider/key.rs @@ -9,10 +9,13 @@ use std::{ str::FromStr, }; -use crate::primitives::task::datalake::{ - block_sampled::BlockSampledCollectionType, transactions::TransactionsCollectionType, +use crate::primitives::{ + chain_id::ChainId, + task::datalake::{ + block_sampled::BlockSampledCollectionType, transactions::TransactionsCollectionType, + }, }; -use alloy::primitives::{Address, BlockNumber, ChainId, Keccak256, StorageKey, B256}; +use alloy::primitives::{Address, BlockNumber, Keccak256, StorageKey, B256}; use serde::{Deserialize, Serialize}; /// This is keys that are categorized into different subsets of keys. @@ -48,7 +51,7 @@ impl CategorizedFetchKeys { pub fn categorize_fetch_keys( fetch_keys: Vec, ) -> Vec<(ChainId, CategorizedFetchKeys)> { - let mut chain_id_map: HashMap = std::collections::HashMap::new(); + let mut chain_id_map: HashMap = std::collections::HashMap::new(); for key in fetch_keys { let chain_id = key.get_chain_id(); @@ -102,12 +105,32 @@ pub fn categorize_fetch_keys( } /// Key for fetching block header from provider. -#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq, Hash)] +#[derive(Debug, Clone, Serialize, PartialEq, Eq, Hash)] pub struct HeaderMemorizerKey { pub chain_id: ChainId, pub block_number: BlockNumber, } +impl<'de> Deserialize<'de> for HeaderMemorizerKey { + fn deserialize(deserializer: D) -> Result + where + D: serde::Deserializer<'de>, + { + #[derive(Deserialize)] + struct Helper { + chain_id: u128, + block_number: BlockNumber, + } + + let helper = Helper::deserialize(deserializer)?; + + Ok(HeaderMemorizerKey { + chain_id: ChainId::from_numeric_id(helper.chain_id).expect("invalid deserialize"), + block_number: helper.block_number, + }) + } +} + impl HeaderMemorizerKey { pub fn new(chain_id: ChainId, block_number: BlockNumber) -> Self { Self { @@ -126,13 +149,35 @@ impl HeaderMemorizerKey { } /// Key for fetching account from provider. -#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq, Hash)] +#[derive(Debug, Clone, Serialize, PartialEq, Eq, Hash)] pub struct AccountMemorizerKey { pub chain_id: ChainId, pub block_number: BlockNumber, pub address: Address, } +impl<'de> Deserialize<'de> for AccountMemorizerKey { + fn deserialize(deserializer: D) -> Result + where + D: serde::Deserializer<'de>, + { + #[derive(Deserialize)] + struct Helper { + chain_id: u128, + block_number: BlockNumber, + address: Address, + } + + let helper = Helper::deserialize(deserializer)?; + + Ok(AccountMemorizerKey { + chain_id: ChainId::from_numeric_id(helper.chain_id).expect("invalid deserialize"), + block_number: helper.block_number, + address: helper.address, + }) + } +} + impl AccountMemorizerKey { pub fn new(chain_id: ChainId, block_number: BlockNumber, address: Address) -> Self { Self { @@ -153,12 +198,36 @@ impl AccountMemorizerKey { } /// Key for fetching storage value from provider. -#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq, Hash)] +#[derive(Debug, Clone, Serialize, PartialEq, Eq, Hash)] pub struct StorageMemorizerKey { pub chain_id: ChainId, pub block_number: BlockNumber, pub address: Address, - pub key: StorageKey, + pub storage_key: StorageKey, +} + +impl<'de> Deserialize<'de> for StorageMemorizerKey { + fn deserialize(deserializer: D) -> Result + where + D: serde::Deserializer<'de>, + { + #[derive(Deserialize)] + struct Helper { + chain_id: u128, + block_number: BlockNumber, + address: Address, + storage_key: StorageKey, + } + + let helper = Helper::deserialize(deserializer)?; + + Ok(StorageMemorizerKey { + chain_id: ChainId::from_numeric_id(helper.chain_id).expect("invalid deserialize"), + block_number: helper.block_number, + address: helper.address, + storage_key: helper.storage_key, + }) + } } impl StorageMemorizerKey { @@ -166,13 +235,13 @@ impl StorageMemorizerKey { chain_id: ChainId, block_number: BlockNumber, address: Address, - key: StorageKey, + storage_key: StorageKey, ) -> Self { Self { chain_id, block_number, address, - key, + storage_key, } } @@ -182,19 +251,41 @@ impl StorageMemorizerKey { keccak.update(self.chain_id.to_be_bytes()); keccak.update(self.block_number.to_be_bytes()); keccak.update(self.address); - keccak.update(self.key); + keccak.update(self.storage_key); keccak.finalize() } } /// Key for fetching transaction from provider. -#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq, Hash)] +#[derive(Debug, Clone, Serialize, PartialEq, Eq, Hash)] pub struct TxMemorizerKey { pub chain_id: ChainId, pub block_number: BlockNumber, pub tx_index: u64, } +impl<'de> Deserialize<'de> for TxMemorizerKey { + fn deserialize(deserializer: D) -> Result + where + D: serde::Deserializer<'de>, + { + #[derive(Deserialize)] + struct Helper { + chain_id: u128, + block_number: BlockNumber, + tx_index: u64, + } + + let helper = Helper::deserialize(deserializer)?; + + Ok(TxMemorizerKey { + chain_id: ChainId::from_numeric_id(helper.chain_id).expect("invalid deserialize"), + block_number: helper.block_number, + tx_index: helper.tx_index, + }) + } +} + impl TxMemorizerKey { pub fn new(chain_id: ChainId, block_number: BlockNumber, tx_index: u64) -> Self { Self { @@ -215,13 +306,35 @@ impl TxMemorizerKey { } /// Key for fetching transaction receipt from provider. -#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq, Hash)] +#[derive(Debug, Clone, Serialize, PartialEq, Eq, Hash)] pub struct TxReceiptMemorizerKey { pub chain_id: ChainId, pub block_number: BlockNumber, pub tx_index: u64, } +impl<'de> Deserialize<'de> for TxReceiptMemorizerKey { + fn deserialize(deserializer: D) -> Result + where + D: serde::Deserializer<'de>, + { + #[derive(Deserialize)] + struct Helper { + chain_id: u128, + block_number: BlockNumber, + tx_index: u64, + } + + let helper = Helper::deserialize(deserializer)?; + + Ok(TxReceiptMemorizerKey { + chain_id: ChainId::from_numeric_id(helper.chain_id).expect("invalid deserialize"), + block_number: helper.block_number, + tx_index: helper.tx_index, + }) + } +} + impl TxReceiptMemorizerKey { pub fn new(chain_id: ChainId, block_number: BlockNumber, tx_index: u64) -> Self { Self { @@ -283,12 +396,12 @@ impl FromStr for FetchKeyEnvelope { } 4 => { let address = parts[2].parse()?; - let key = parts[3].parse()?; + let storage_key = parts[3].parse()?; Ok(FetchKeyEnvelope::Storage(StorageMemorizerKey { chain_id, block_number, address, - key, + storage_key, })) } _ => anyhow::bail!("Invalid fetch key envelope: {}", s), @@ -311,60 +424,123 @@ impl FetchKeyEnvelope { #[cfg(test)] mod tests { + use alloy::primitives::b256; use super::*; #[test] fn test_hash_header_key() { - let header_key = HeaderMemorizerKey::new(1, 100); + let header_key = HeaderMemorizerKey::new(ChainId::EthereumMainnet, 100); let header_key_hash = header_key.hash_key(); assert_eq!( header_key_hash, - b256!("205342692a0b320915750abf5ad47709ea4c6c10e18802d5981070e47bd6f0c1") + b256!("6bc10761f4d566044340a77d51c936b8d1ee7d4ebfb3e62873d7d37eb8964505") ) } #[test] fn test_hash_account_key() { - let account_key = AccountMemorizerKey::new(1, 100, Address::ZERO); + let account_key = AccountMemorizerKey::new(ChainId::EthereumMainnet, 100, Address::ZERO); let account_key_hash = account_key.hash_key(); assert_eq!( account_key_hash, - b256!("4298fef03738f1a6d9f77e3d1ad8cf7906a60f4f9ecd63b34cb2a1ac61353e7a") + b256!("044229e95af51ab44d057270d10f948d7e6f0b98075abb702d535e237b573794") ) } #[test] fn test_hash_storage_key() { - let storage_key = StorageMemorizerKey::new(1, 100, Address::ZERO, B256::ZERO); + let storage_key = + StorageMemorizerKey::new(ChainId::EthereumMainnet, 100, Address::ZERO, B256::ZERO); let storage_key_hash = storage_key.hash_key(); assert_eq!( storage_key_hash, - b256!("22133ae0a8c6964d0e4fc28659442e311c4a9f6a82f16ea9f103e36a1085c11f") + b256!("c0aca94acc508394ff0ce22ebf1bbe1db21c35e6e4fa70d72bd6cac0742381b3") ) } #[test] fn test_hash_tx_key() { - let tx_key = TxMemorizerKey::new(1, 100, 1); + let tx_key = TxMemorizerKey::new(ChainId::EthereumMainnet, 100, 1); let tx_key_hash = tx_key.hash_key(); assert_eq!( tx_key_hash, - b256!("487ea7bf96eb1280f1075498855b55ec61ba7d354b5260e2504ef51140e0df63") + b256!("103cc4b0d6d6e45d7189c99425aa02b7ebd9b861e9bb4331a02364980e02481f") ) } #[test] fn test_hash_tx_receipt_key() { - let tx_receipt = TxReceiptMemorizerKey::new(1, 100, 1); + let tx_receipt = TxReceiptMemorizerKey::new(ChainId::EthereumMainnet, 100, 1); let tx_receipt_hash = tx_receipt.hash_key(); assert_eq!( tx_receipt_hash, - b256!("beac44bc7092d6c5c2c9ce2d6957c9b962ad4654a65c9b9a9b19a9c278ee5a83") + b256!("9b6f454da0ab2264a9a6897abd039c322de33972442eac072635c66ca5c7db86") ) } #[test] - fn test_fetch_key_envelop() {} + fn test_parse_json_header_key() { + let json = + r#"{"type": "HeaderMemorizerKey", "key": {"chain_id": 11155111, "block_number": 100}}"#; + let parsed: FetchKeyEnvelope = serde_json::from_str(json).unwrap(); + assert_eq!( + parsed, + FetchKeyEnvelope::Header(HeaderMemorizerKey::new(ChainId::EthereumSepolia, 100)) + ); + } + + #[test] + fn test_parse_json_account_key() { + let json = r#"{"type": "AccountMemorizerKey", "key": {"chain_id": 1, "block_number": 100, "address": "0x0000000000000000000000000000000000000000"}}"#; + let parsed: FetchKeyEnvelope = serde_json::from_str(json).unwrap(); + assert_eq!( + parsed, + FetchKeyEnvelope::Account(AccountMemorizerKey::new( + ChainId::EthereumMainnet, + 100, + Address::ZERO + )) + ); + } + + #[test] + fn test_parse_json_storage_key() { + let json = r#"{"type": "StorageMemorizerKey", "key": {"chain_id": 1, "block_number": 100, "address": "0x0000000000000000000000000000000000000000", "storage_key": "0x0000000000000000000000000000000000000000000000000000000000000000"}}"#; + let parsed: FetchKeyEnvelope = serde_json::from_str(json).unwrap(); + assert_eq!( + parsed, + FetchKeyEnvelope::Storage(StorageMemorizerKey::new( + ChainId::EthereumMainnet, + 100, + Address::ZERO, + B256::ZERO + )) + ); + } + + #[test] + fn test_parse_json_tx_key() { + let json = r#"{"type": "TxMemorizerKey", "key": {"chain_id": 1, "block_number": 100, "tx_index": 1}}"#; + let parsed: FetchKeyEnvelope = serde_json::from_str(json).unwrap(); + assert_eq!( + parsed, + FetchKeyEnvelope::Tx(TxMemorizerKey::new(ChainId::EthereumMainnet, 100, 1)) + ); + } + + #[test] + fn test_parse_json_tx_receipt_key() { + let json = r#"{"type": "TxReceiptMemorizerKey", "key": {"chain_id": 1, "block_number": 100, "tx_index": 1}}"#; + let parsed: FetchKeyEnvelope = serde_json::from_str(json).unwrap(); + assert_eq!( + parsed, + FetchKeyEnvelope::TxReceipt(TxReceiptMemorizerKey::new( + ChainId::EthereumMainnet, + 100, + 1 + )) + ); + } } diff --git a/hdp/src/provider/traits.rs b/hdp/src/provider/traits.rs index 837ec0ba..3d8511f4 100644 --- a/hdp/src/provider/traits.rs +++ b/hdp/src/provider/traits.rs @@ -1,3 +1,4 @@ +use crate::primitives::chain_id::ChainId; use crate::primitives::processed_types::block_proofs::ProcessedBlockProofs; use std::future::Future; use std::pin::Pin; @@ -34,7 +35,7 @@ pub trait ProofProvider: Send + Sync { /// returns generic provider that implemented [`ProofProvider`] trait pub fn new_provider_from_config(config: &ProviderConfig) -> Box { match config.chain_id { - 1 | 11155111 => Box::new(EvmProvider::new(config)), + ChainId::EthereumMainnet | ChainId::EthereumSepolia => Box::new(EvmProvider::new(config)), // TODO: change chain_id to string _ => panic!("not supported chain id"), } diff --git a/input.json b/input.json new file mode 100644 index 00000000..5fd18be0 --- /dev/null +++ b/input.json @@ -0,0 +1,776 @@ +{ + "cairo_run_output_path": "cairo_run_output.json", + "task_root": "0xd900a4d980172ad23fafb579aeac7cff91c73636d334bc247a1c3142d8bffa78", + "result_root": "0x34b46123c4ab406cec0586364d8ed193353f0e9fb1b32cac0988fc0970dc50a2", + "proofs": { + "mmr_metas": [ + { + "id": 26, + "root": "0x5358fbe594d3e8fdb3f6f7bbbe979fc3a377851a21909ea7bc1821e15cc6c4e", + "size": 12899969, + "peaks": [ + "0x262c4c9b1cb2a036924aecf563dc9952e5f8b41004310adde86f22abb793eb1", + "0x63e06c6dd962e6232140b8f20fc4972ee69ca29d1c6ca4455d80afd4be0f3de", + "0x48c9781f73635713eb8ef52890c481f4438c576baf01b31bc7935d9d42c1244", + "0x068c923e9bcc3df411575563e88a81cdef49ef6c4307efad707a8538114b753", + "0x54a48cae0defc94286e03d5c3abc53a399db7eb6207140f8d6f8d7322c9d1fc", + "0x1f31aea9b689fdab066317c08c865ae3b134adef05a744965a5741119a6c094", + "0x41dc23c0b0c18e7cc1d3f7148feabbe30269080cbe9b6ead6b718a2d1176382", + "0x1d04bc7dd1b40becbbfdf6a6971ef0e1ffc873087ed75bb2163dd2615d366de", + "0x5f3202e8d32391896022ddb916b83f165d2d7486261304f3e029aad6258ba2c", + "0x3a98faad3cc3bdeee0f2a346469fe4e67d364c98f8f5adf03f472000194081c", + "0x48bb57587a1e690409d81b70f3fe2ee625f25f008ec0773e55a0e1293c9e025" + ], + "chain_id": 11155111 + } + ], + "headers": [ + { + "rlp": [ + "0x216f1eb0a05c02f9", + "0x4de0372b4bed3c60", + "0x8e23a0628d6c899f", + "0x65105b263ee0b4f5", + "0x4dcc1da057420e26", + "0xb585ab7a5dc7dee8", + "0x4512d31ad4ccb667", + "0x42a1f013748a941b", + "0xe2c6944793d440fd", + "0x6dca7ce2bf919945", + "0xe4a123da352f7286", + "0x9b608182bda097cb", + "0x29e3b5d6b2eb735d", + "0x453e78855ad3ad56", + "0x385cd72fd2f23ff9", + "0x6a7132d6a0e509c3", + "0x44cd18a4510c63cf", + "0x77919e8f9a1667c4", + "0x414bad92d40a9154", + "0x446e34a0813f946c", + "0xbe9450981b4e25eb", + "0x3dac7c23f5bb80be", + "0xf687f40adf699e82", + "0x1b9f087b04080", + "0xc8c910cce7c486d2", + "0xe59016a45e2698a1", + "0x82b4c33d7c5f5332", + "0xd446f24a5ed5b7cc", + "0xdf996f696b144e29", + "0xe24f0c6659dc1e54", + "0x4fa0a9d3141e3c9a", + "0xd9ecef0a2c5e6c94", + "0x2ac5a6ea467f7470", + "0x829130f6af92b658", + "0xe261af81856c3116", + "0x7b00b19847d30f60", + "0xdbc971aad011c5e7", + "0xd64f4cb7209bd6d0", + "0x70442fd0a28ca850", + "0x5c2cd3d036bc0140", + "0x9e437f250c8ac88f", + "0x9e28395a49ac6876", + "0xf6a43f3f0328bc0d", + "0xd9b4ecd529b403f8", + "0x59d6efe506742a33", + "0x7664561421b64d04", + "0x1c8f18660a1d4837", + "0x1c8ad7be7da7180c", + "0x47df73de1f95de05", + "0xd167b65b1edfe383", + "0x6b45c814dfc3b9d8", + "0x20e161a0d09691ac", + "0xb290d5b6ab793ef1", + "0x9a850b64eaf115a5", + "0x6274b7e9d0975fc9", + "0x94ee5d102c0a774b", + "0xc90184c546618380", + "0x8459b853018480c3", + "0x74657291bcaca266", + "0x332e302e31762f68", + "0x6ca078756e696c2f", + "0xd3a5a7ee7bde8cac", + "0x60f7893db4ae18f6", + "0x58536e554021926d", + "0x8887bc7cf3c65be6", + "0x0", + "0xe560a08f6e329484", + "0x1a6b0adc0ebec001", + "0x82c517e276bbf0d1", + "0x28ffa87f26c06564", + "0x283435c3242e723", + "0xaca0000098830000", + "0x73d11f799a08a6eb", + "0x1579c174a76155bc", + "0x9e37c7cb80c29381", + "0xacba28e2aceec8" + ], + "rlp_bytes_len": 607, + "proof": { + "leaf_idx": 12739496, + "mmr_path": [ + "0x291adc0ff3f5eb31376d2dc882c4a0b612ee00b536b484d9d68533db47b1a55", + "0x577884cce23db95312ef380a904afccab7fbd9cf34e84777adf2813bc92a413", + "0x71426cc21537949a45197dd3a57b397d86d3302dc894173068585b7631ebb25", + "0x6ebf678bb0eb572f157cf9ca66d1c27754c20986de0335382c12afd8fcd26fb", + "0x20dfc647656b4c039bf946a56d2695fd631a2226fd815a83b69e18b543b9dd5", + "0x1ea310f504c5c7c6d43642ba2c09fa8f66edd91a6d3e965dec30db6ec9aa030", + "0x18ca5daed2c274cf2215dd11b3c5875b740df446360af179c95a0ec53c58f13", + "0x59417edcf79f38992d51563fb1e2af608dff9f2371fef973b0cdac2febc526f", + "0x45a9615d78011e7752d3e3f3f6e11f0de5b8fe531a0959d0f6e5041e1b5ba6f", + "0x1e94c6fa131239300669cb31c1ced02d1ad800fac561e092ab8b843cb0e6111", + "0x767920b8e4e378c8a1e55f812ea4579e6deb7584eab1325bcf5bad57b442cf7", + "0x2bfb39d36fcf83d18b05565fb4ae8de38453d439db185160c0cb541df2255f7", + "0x3a5f673a2f7d7cacff677177483259b7b9161dde49603a3523909a74dcf58eb", + "0x63cb7951cbce300498bb8868a619f6ae7179d5ed1a5d832859e870de3e5c011", + "0x5dfc985941ef9d1bae4a5bcddb23a338c70248a43107555df4cc20f81423721", + "0x07a25a1fdea49b07bbf8231ad4e7c00dc020b85c183f91022abd7c7baf1f42d", + "0x3d088c444fcc7a0083f3cb9d95d56975d22a8ac1171fcf5c0d8fa325fcff4db" + ] + } + } + ], + "accounts": [ + { + "address": [ + "0x5d89d5862ca7e8af", + "0x36b7d426ab6d61d6", + "0x2f4722cf" + ], + "account_key": "0x7fd6daf0de598ff611452d8eb4ec5f7e99e8ef74d175073be14cdc936830b5d3", + "proofs": [ + { + "block_number": 6375109, + "proof_bytes_len": [ + 532, + 532, + 532, + 532, + 532, + 404, + 83, + 104 + ], + "proof": [ + [ + "0x444e529da01102f9", + "0xf37544b888708d51", + "0x4c73181251ca8773", + "0xca042799a2381be", + "0x8f891aa08f7a0b4b", + "0x1a73b84327366212", + "0xe20ac0516697c8bd", + "0x6fc64891e36ca714", + "0xd808a02db30e1217", + "0x607e5eea121e89d4", + "0x17b487cd624bab57", + "0x3f5938c05a0ffbd6", + "0x7a081e913a93e5b", + "0x4cacd321d5a138bd", + "0xeea00b2128a12212", + "0x5320f46d51ce5b74", + "0xa0fcde49c74a4e21", + "0xf4f5e9953107eadd", + "0x9b742e5b58a0b03a", + "0xf840bf140ca4f854", + "0xbbcf9e589f3860ab", + "0xb2347ff3a6618ba0", + "0xd30ef52d45438b70", + "0x5d2ff37033210e6c", + "0xe8d2cdc675a9a230", + "0x7b6e8ca5b604a080", + "0xfdaff0383e2cf2f2", + "0x43b00d14850f7873", + "0x32259e9638884225", + "0xdb2a38f356a0d615", + "0xdd66b426e3ee70dc", + "0xcb2a87f92ce4f59a", + "0x3558c02b067b0f76", + "0xd441ac8aa0542ab1", + "0x33a7053e7510a439", + "0x7bfc53cb480af51", + "0x917e6bc2d32e31a0", + "0x7e22ca0a3172bee", + "0x171aa595ef249e65", + "0x208430e2b9b2840", + "0x374f95bcc70a084f", + "0xb982a06bc37beb57", + "0xa307195ab46d773d", + "0x7d158a83f588227c", + "0x9bdf8627dbf1a4b6", + "0x68a069b7ad9561fd", + "0x711bc0fd99a56731", + "0xe16f9014a1da14da", + "0x1998ccb79dd40fee", + "0xa084c2deda7009ad", + "0xfec128291c32139c", + "0xf45b263525bbc1bc", + "0xea18c1d000803bd8", + "0xbc6e26a2759645b1", + "0xe5b26ed4928d5a0", + "0xd261b3306613ca46", + "0x118fcfd107367472", + "0x5750921a2a88ba9f", + "0xa0383126830ca0d9", + "0xfe03bb87ac16126e", + "0xd1b081e732ece6fe", + "0x14dba318c57c7fe1", + "0x6c9c7b30cca06837", + "0xa523ed9e811d73ec", + "0x9b98ace58bd45b0c", + "0xd81bb282de7c44ee", + "0x8048f498" + ], + [ + "0x1be4de43a01102f9", + "0x5b34e092388e9421", + "0xbbd32e19fe740815", + "0x57057ce6e1f2644c", + "0x1d9df4a0a4e1c960", + "0x798f1be9df913cae", + "0xb30f19e7d6597147", + "0x11c742452bd94bf5", + "0x68e8a054ddb0b4ee", + "0xebfbe7754b250c66", + "0xae0ee2ae31a2188b", + "0x2810698530f06730", + "0x89a074edd683c4eb", + "0x5f97b1a37b93f4c8", + "0x71766d0f37c01dac", + "0xceb278e3002bf14a", + "0xa05fc915f988d02d", + "0x44096c084c7724ec", + "0x55ca8edd889c1770", + "0xc74bcb8a87a3b3c5", + "0x3deab16eedc763a3", + "0x958ebb0ed20204a0", + "0xe0d7842550e1f7fa", + "0x50378dcc62cf1f85", + "0x1f8580288af2906e", + "0x101b530e575ba0de", + "0x72c2c377c188c834", + "0x547c9b315322f81a", + "0xcae4953a6575c1e9", + "0x41b8d3a8a7a04482", + "0x6c10c919bc7e59fb", + "0x832c3b8673380b0e", + "0x6022da748383ca14", + "0x5668c9ca0dc3dd8", + "0x7c7f8ff768d7a1a3", + "0x2f2acbd07b06820d", + "0xb3b9895140569141", + "0x3b6e69a00740897b", + "0x26a2b25238b65af3", + "0xa386028d7baff6dc", + "0x11ad051616033e5d", + "0x96eea067010faa37", + "0xed9d9c9bcedf5af0", + "0x37fb98d62dbd1dd6", + "0x1f414dbe76c464fd", + "0xdaa08bc0cb33fc60", + "0xb08cb9c2085cfc71", + "0xe189139d5391d4e6", + "0x81d62c2a3dd95aec", + "0xa0dda1a58913281d", + "0xe1e15f468c7be8f4", + "0x65e2cfcdbc79758a", + "0x25ede651e43dd045", + "0x1a230ebf6ee33052", + "0x19d7bd1e8c7550a0", + "0x94ac7048d3482b8d", + "0x4712f434347bd5f3", + "0x880f325e69627cba", + "0x4771673871e9a0b2", + "0x76e996ee04ef431", + "0x2032636c635156d2", + "0x6fd0c2a5bab4d2", + "0xf91fee1389a05181", + "0xb27b11ed5629c41a", + "0xed1c9dcc37b3085d", + "0xd493606d4ca0d3d3", + "0x801bdb72" + ], + [ + "0x71b960fa01102f9", + "0xbe1fe01634ea6e64", + "0xf41a59ac121ab0c7", + "0x11e95a4610790b44", + "0xb55cb6a0d1fb205a", + "0xadc9623e6edbc11c", + "0xfddc0a1821ba0cf0", + "0xd53be648834ef0f0", + "0xdbb3a033efba1484", + "0x56bdb101631c76f", + "0xd7d4f6591a171443", + "0xae600196088ef39", + "0x5aa07ece61ce4d49", + "0xfde31c1a7f893138", + "0xcb4c4365813b31ac", + "0x44e9682ec2fb5add", + "0xa064828756abd703", + "0x658940a7e900dedf", + "0x9ca2692bc72e0dd9", + "0x98f612838e0975f6", + "0xc0df161b8509e12d", + "0x48cd9012fce98a0", + "0xe861b22ec42d85f7", + "0x3cdd46ba75e86818", + "0xaf04e750b297489e", + "0xc43beb370e43a015", + "0xdd1b4d4edbb176aa", + "0xa5c2422d0bf6e6c4", + "0xc55773d8da6facaa", + "0x24ff6b6229a083da", + "0xa99e9a8bcd8eda00", + "0x3c3feb7198579ee1", + "0x1f60a3b2c54965a3", + "0xa97bcaa2a0872921", + "0xacc08b0b6f7d237d", + "0x6800e1bcd674c94d", + "0xa8c833699d7d8aeb", + "0xb245eca05d102c80", + "0x6fb43714b5bad4d7", + "0x94f615ad1da741fb", + "0x6d2e560d0e41ff56", + "0xa4f6a0208423a3cf", + "0x5b2e046e7d074f35", + "0xa098289f7f01d0bd", + "0x2265a4a7bfebcecc", + "0x7ca007262c28d797", + "0x6af5f9ed4ff17ff1", + "0x8b88a3ee112ee6a3", + "0xca661abf2cb29191", + "0xa066abc586c64a8a", + "0x813b3cd8cb48fcd8", + "0x72494ff3567ed250", + "0xb1d3cd4907b614c2", + "0xf1256dd9567b6a94", + "0xddeea9f55da583a0", + "0xe51a6c75910e4d4a", + "0xaa1ef569451c7ad3", + "0x15c29d58e7b28540", + "0xc98d543b0a3ba0e1", + "0x4ac2a8d446a1bab8", + "0xb1924632c4a3a8d7", + "0x1fb62fac04c4a758", + "0x82068bfc8fa002cb", + "0xa49507b0d33f4ae8", + "0xeaa341d28d10ad45", + "0xe8b0b5a713f7300e", + "0x8062325a" + ], + [ + "0xf1af50daa01102f9", + "0xc45148a86edcfbfe", + "0x7ff915197b189f26", + "0x7f92e3cf79221546", + "0x2650c9a0433b2cba", + "0x18c1ca0bbe0b9385", + "0xe4ca0208b3d7628d", + "0x184082fb648501bc", + "0x64f7a05428e26594", + "0x25ada2a637e5f953", + "0x8a3a6b896604586e", + "0xad9c09b75d0b3eae", + "0x7aa01f3891ebd29c", + "0x4124ff872109dbdd", + "0x576bba0fccf024df", + "0xfb686bbc7bf54546", + "0xa06ac78578ce9466", + "0x253055df1f76d334", + "0x32cd652eb86671d2", + "0x6f106a856b73968c", + "0x7c49da01208a387f", + "0x2c13a33c7ca8aaa0", + "0x17a3b5e952302372", + "0xddc268c59cc4adc2", + "0x61aa3d293992472b", + "0xf32780d28c36a098", + "0x7c451b5fd225caf6", + "0xe95f518a00b6b4fa", + "0xd7db61a9257c1e15", + "0x73454d87fda0ab26", + "0x339ba009944d4d6b", + "0x9ed08a8230482a69", + "0xd1390999b8312afb", + "0xb82fcc9ba067c7d8", + "0x52664c6dab495e", + "0x3615ae6770edd2df", + "0xca1d2b4eebb71e91", + "0x9ab8daa0a6974282", + "0xd86e2ff1acc6b40d", + "0xfc68716c52d3d232", + "0xa45ba0d42fa38799", + "0xca41a04157354876", + "0x6c5deaef8c318a58", + "0x84f555dd0a2f68c0", + "0x62f259ab51b8f292", + "0xc0a05a6da52a93c0", + "0x4cf6c19ee0c127b4", + "0xb489a44989226930", + "0x15b88d62aa535053", + "0xa01815e279cd3a5c", + "0x47a1c105c66321b7", + "0xe8f13ba36264077f", + "0x7044f9a89efa4755", + "0xff6a9dc4269cd9d6", + "0xf152d0d450e75fa0", + "0x9da8e15a468f5584", + "0x3b614f00a6312bdd", + "0x853af8603c6914a6", + "0x5722714ca459a07c", + "0x534f2f14c7b9cd", + "0xe0a40b78e069c271", + "0xed02a93532cfdd30", + "0x477474322da07ec5", + "0xcfb69eba40e8e83c", + "0x95c19429516b7e83", + "0xe72ddd0ce13f244", + "0x80a9427c" + ], + [ + "0x5e19c1aea01102f9", + "0x82653e9435c27456", + "0x6c85883c66d32d77", + "0x997434564679b8ed", + "0x2aef61a0f9dfcf06", + "0x1f4f35bac04c70c", + "0xa3aced786d2fc676", + "0x4cd55bd8c5ccb479", + "0xaadaa0a1c0b578e6", + "0xa12cde6061675c15", + "0x45238e8841693826", + "0xe8dbefccec975c1", + "0x56a0a6b6b1dd4f2c", + "0xb944f12d50702aa1", + "0x1962bfe45b3d41f7", + "0x18fbb405a9b11839", + "0xa0222a38518e0a92", + "0x7869cb59ae1871d6", + "0x96be8e6e205d11cd", + "0xaec0280b20553a28", + "0xfe34dfc43cf3707f", + "0x72a18de82ee33a0", + "0x941258afc42170f7", + "0x1dd489e0f8a60d0c", + "0x59158dad07c465e3", + "0xe309286a4e6aa0f2", + "0x635af7f158cfca48", + "0x7b2f709560ce8fe8", + "0x39568e381a5f6fac", + "0x55878a22dda0df02", + "0xe2fc664542c3871e", + "0xbce6bb844165bc3c", + "0x14531b77f59c916a", + "0xd184add5a0b662d9", + "0x6bb294447da0e26", + "0xc6e0912f0991e654", + "0x558e6ccc5c7c7392", + "0xd61712a0fc21c1dd", + "0x43a26c7177ccaaa", + "0x6ffc3b67472915e5", + "0x45049c641967f271", + "0x1dd8a0d6b5ebcb0c", + "0xc71045de4a959bf7", + "0x8676de566a1f1eb7", + "0xd297084c4019e127", + "0xbea0193d2b42415d", + "0x1e7d7514391790f0", + "0x1c60f3c5d6570922", + "0xffd71c6b9f149a42", + "0xa052b5f86b064bad", + "0xb22ccc5257cf30a8", + "0x42c32663548bedb5", + "0xdf128dce6daec770", + "0x703f370ed71eed6a", + "0x37144c12faac56a0", + "0x64dbc0bc53b88eda", + "0xd2b9768bdc6b752e", + "0x28b8f6798920547b", + "0xede378a44b10a0dc", + "0x5636f5174e54387d", + "0x324818ff66de2edf", + "0xf08cc6d4ecf1c385", + "0xadf4aa0d16a06a6c", + "0xeed518f3bdb6dfaa", + "0xd6c7bd0495a7a0f7", + "0x2a6d07385d918513", + "0x80da117b" + ], + [ + "0xd376880ca09101f9", + "0xc97a529699654659", + "0xe8ac8108a83209a4", + "0x4e90f78c7707d12d", + "0xe292da0e39f3515", + "0x6d8331ad2c6ba1f", + "0xc01c99e896c384d1", + "0x6adae583c2208211", + "0x1365a0287453f65b", + "0x5477cb087a0a097c", + "0xb62cab2d3021e6b", + "0xa505941c03ea474e", + "0x50a040f37a8034f6", + "0x6f086c0e8faa1381", + "0xc3bb7f31e0ab3cef", + "0x8b769bdb4289370e", + "0x80d08a156e708dab", + "0xd1acab94c25b04a0", + "0x2972012216221b7b", + "0xade04d0214fe47b8", + "0x839ac2f611f43d80", + "0xc6a86e9be4a8a05b", + "0xfd20f82104943ff3", + "0xddf3cf80aeb0c53c", + "0x76834fab7712248b", + "0x47106ea9a0800b84", + "0x20541efe5f40c0e2", + "0xc7452c160a02b5c4", + "0xc2e5cbff68c6f3d1", + "0xafdaffa0ee2e6571", + "0x9c6bb900257b102", + "0xb2d792bc50f15215", + "0x51be63015351d2fc", + "0x3ac6a0702f7569f8", + "0xfdcffc05cdff59b1", + "0x468880e764c84d44", + "0xd912199f06de7a7f", + "0x5ca0a7db843632ee", + "0xc0d628da52ba5c67", + "0xb12a761721d9d3a1", + "0xce173c16111f4289", + "0x8040db137a7bc4c1", + "0xfb5cf5c514ee43a0", + "0xffe55b93cd035f3e", + "0x5336d6af7ff71d8b", + "0xe4858f9a1352908e", + "0xc7ca89cbeea080c8", + "0xbe4d58304e68d653", + "0x2a798b994bb2daeb", + "0x70d1151e834cf123", + "0x803df2ce" + ], + [ + "0xa0808080808051f8", + "0x89aec71f036ca173", + "0xc99d552fcd9c02ee", + "0x64638627851c62cc", + "0x450cef2e7d51ed32", + "0x8080808080808080", + "0x56fda7cbf4e7a080", + "0x500f0ee84c586361", + "0xdeccd5de16f9e35d", + "0xa84323f9c25b7078", + "0x80c9ce" + ], + [ + "0xf68f59de309d66f8", + "0x7e5fecb48e2d4511", + "0x3b0775d174efe899", + "0xd3b5306893dc4ce1", + "0xaa0800144f846b8", + "0x73ca4134ac04ce06", + "0x8a77b72d70eb37a9", + "0xacd0554ca3b91104", + "0xa0f25962fc91ed4f", + "0x876b309aa39be0b3", + "0x591938a3cd5995be", + "0x4ba3f3e5d6246d61", + "0xa181627de4401423" + ] + ] + } + ] + } + ], + "storages": [ + { + "address": [ + "0x5d89d5862ca7e8af", + "0x36b7d426ab6d61d6", + "0x2f4722cf" + ], + "slot": [ + "0x0", + "0x0", + "0x0", + "0x1000000000000000" + ], + "storage_key": "0x1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae672", + "proofs": [ + { + "block_number": 6375109, + "proof_bytes_len": [ + 532, + 83, + 69 + ], + "proof": [ + [ + "0xdaaaa563a01102f9", + "0x53733b89af92fdbc", + "0x227bd6cee31ca3e9", + "0x336db59681c1265b", + "0x7d7780a0509e595e", + "0x7310f9ca15df6350", + "0x2cabd610c8b53725", + "0xadbb21b0304fb72e", + "0xebda0d73dfe99f7", + "0x9ca6efeaf56b9b49", + "0xbc955048ac3d5fe2", + "0xcc33f505be97fb68", + "0xf2a0bc4d1ca2189d", + "0xd6fec3fed9cc776e", + "0x2cdfad8829638de5", + "0xb45659b7b4880241", + "0xa0b2c0c42a8b68fa", + "0x124ea6c73242e630", + "0x980e5879cc375472", + "0xcee0f874c5686418", + "0x969bcca76c6785d0", + "0x2df84ea10d9388a0", + "0xb82c15fe0e46f64a", + "0x984ecc65972203c3", + "0xcc4050165d2c602e", + "0xa7e41fa0d715a056", + "0x4b56009614424972", + "0xfdc53ee84e7e95fd", + "0x2dea4431fe1070d1", + "0xc864595a66a0e3f4", + "0xd17f80d096431b16", + "0xb51f6788c53e6caa", + "0x60ed6c03838c7510", + "0x39067cd5a0ce9ea9", + "0xb62a0e234fd40583", + "0x72e16ce793841c85", + "0x35322107af4919fa", + "0xf9272da039bdc793", + "0xd7d2f60de50aa21d", + "0x961d1a598e8c03b6", + "0x67df3a6bb55d1a9b", + "0xf8e1a0e89a0e6d62", + "0x3ede8e86c0e4dfdd", + "0xd8befa2a92c3ff26", + "0x3e13839c33dfae35", + "0x8ba06ee1a9e3ab0a", + "0x7c9ef401225bf5f3", + "0x4b8ac462c655ceff", + "0x1feec82f659f9b5b", + "0xa041d35933716a17", + "0xabad1dc62c18c692", + "0x936b6b57f845b3f7", + "0xfbd1e711de6e6536", + "0xa6014cee1d92b9f0", + "0x8bd8fb8e3eabfa0", + "0xba8bf46a6a1b7a92", + "0xa2a4e0cb613e9f70", + "0xf77aa9d38589e6a7", + "0x4062ee9d1fe3a033", + "0xba2bc68979de97bf", + "0xbdaf7bfec356fb9a", + "0x18c3a4aa9f3c07ef", + "0x1dcbed5fbba0aa9d", + "0x81f5631f4cb93054", + "0x406b742b1184064e", + "0x9e1d337f94beb2e8", + "0x80456c83" + ], + [ + "0x80808080808051f8", + "0xb8b52a1f7ea08080", + "0x7e61781d2a5e06f2", + "0xc001b39cbb1985d0", + "0x66be391c1b432d93", + "0x3beca0808097599d", + "0x54112b4e9235e5e3", + "0xa1558e7687ac1dab", + "0x818b16e5a58051e1", + "0x80809b39735f0bf6", + "0x808080" + ], + [ + "0x74dc476820a043f8", + "0x4588278dd00c1b1a", + "0x5947737bd819d8f9", + "0x2ab85cdee25fb5af", + "0x736e49a0a172e69a", + "0x7473655420656469", + "0x656d616e20", + "0x0", + "0x2000000000" + ] + ] + } + ] + } + ], + "transactions": [], + "transaction_receipts": [] + }, + "tasks": [ + { + "type": "datalake_compute", + "context": { + "task_bytes_len": 128, + "encoded_task": [ + "0xb7d65362098af8fc", + "0xbb9ce9daf3acf4f", + "0x7764468b86369c36", + "0xfefccffceae47099", + "0x0", + "0x0", + "0x0", + "0x0", + "0x0", + "0x0", + "0x0", + "0x0", + "0x0", + "0x0", + "0x0", + "0x0" + ], + "datalake_bytes_len": 288, + "encoded_datalake": [ + "0x0", + "0x0", + "0x0", + "0x0", + "0x0", + "0x0", + "0x0", + "0xa736aa0000000000", + "0x0", + "0x0", + "0x0", + "0xc546610000000000", + "0x0", + "0x0", + "0x0", + "0xc546610000000000", + "0x0", + "0x0", + "0x0", + "0x100000000000000", + "0x0", + "0x0", + "0x0", + "0xc000000000000000", + "0x0", + "0x0", + "0x0", + "0x3500000000000000", + "0x89d5862ca7e8af03", + "0xb7d426ab6d61d65d", + "0x2f4722cf36", + "0x0", + "0x0", + "0x0", + "0x1000000000", + "0x0" + ], + "datalake_type": 0, + "property_type": 3 + } + } + ] +} \ No newline at end of file diff --git a/request.json b/request.json index e80c4bc7..6a74cdaa 100644 --- a/request.json +++ b/request.json @@ -1,11 +1,11 @@ { - "destinationChainId": 11155111, + "destinationChainId": "ETH_SEPOLIA", "tasks": [ { "type": "DatalakeCompute", "datalake": { "type": "BlockSampled", - "chainId": 11155111, + "chainId": "ETH_SEPOLIA", "blockRangeStart": 6375109, "blockRangeEnd": 6375109, "increment": 1, From 59c6aac67ac8cd05c8957c03483a2f4bfab597d0 Mon Sep 17 00:00:00 2001 From: Pia Date: Mon, 2 Sep 2024 14:44:57 +0900 Subject: [PATCH 03/11] update env example --- .env.example | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.env.example b/.env.example index ec54976b..ffb9ddd9 100644 --- a/.env.example +++ b/.env.example @@ -1,7 +1,7 @@ # Note that CHAIN_ID and RPC_URL are both required for fetch data -CHAIN_ID=11155111 +CHAIN_ID=ETH_SEPOLIA RPC_URL=https://goerli.infura.io/v3/your-infura-api-key # Optional RPC_CHUNK_SIZE=2000 DRY_RUN_CAIRO_PATH= # path for dry run cairo -SOUND_RUN_CAIRO_PATH= # path for sound run cairo \ No newline at end of file +SOUND_RUN_CAIRO_PATH= # path for sound run cairo From eb71ae5e1edfc9e1a64c8a18f86b574e24ad722d Mon Sep 17 00:00:00 2001 From: Pia Date: Mon, 2 Sep 2024 16:26:08 +0900 Subject: [PATCH 04/11] chore: bound --- cli/src/cli.rs | 2 +- cli/src/commands/run_datalake.rs | 2 +- cli/src/commands/run_module.rs | 2 +- cli/src/interactive.rs | 2 +- hdp/src/cairo_runner/dry_run.rs | 2 +- hdp/src/hdp_run.rs | 4 +- hdp/src/preprocessor/compile/config.rs | 2 +- hdp/src/preprocessor/compile/datalake.rs | 2 +- hdp/src/primitives/mod.rs | 2 + hdp/src/primitives/processed_types/mmr.rs | 4 +- hdp/src/primitives/request.rs | 2 +- .../datalake_compute/compute.rs | 2 +- .../datalake/block_sampled.rs | 2 +- .../datalake_compute/datalake/envelope.rs | 2 +- .../datalake/transactions_in_block.rs | 2 +- .../solidity_types/datalake_compute/mod.rs | 2 +- .../task/datalake/block_sampled/datalake.rs | 2 +- .../task/datalake/block_sampled/mod.rs | 3 +- hdp/src/primitives/task/datalake/envelope.rs | 2 +- .../task/datalake/transactions/datalake.rs | 2 +- .../task/datalake/transactions/mod.rs | 3 +- hdp/src/provider/config.rs | 2 +- hdp/src/provider/evm/from_keys.rs | 8 +- hdp/src/provider/indexer.rs | 2 +- hdp/src/provider/key.rs | 2 +- hdp/src/provider/traits.rs | 2 +- input.json | 1241 +++++++---------- output.json | 39 + 28 files changed, 566 insertions(+), 778 deletions(-) create mode 100644 output.json diff --git a/cli/src/cli.rs b/cli/src/cli.rs index 048fee4a..dc79f0f9 100644 --- a/cli/src/cli.rs +++ b/cli/src/cli.rs @@ -9,9 +9,9 @@ use crate::{ }; use anyhow::Result; use clap::Parser; -use hdp::primitives::chain_id::ChainId; use hdp::primitives::processed_types::cairo_format::query::ProcessorInput; use hdp::primitives::request::{SubmitBatchQuery, Task}; +use hdp::primitives::ChainId; use hdp::processor::{self, Processor}; use hdp::{ hdp_run, diff --git a/cli/src/commands/run_datalake.rs b/cli/src/commands/run_datalake.rs index d4e1e10c..be21fcba 100644 --- a/cli/src/commands/run_datalake.rs +++ b/cli/src/commands/run_datalake.rs @@ -4,11 +4,11 @@ use alloy::primitives::{BlockNumber, TxIndex}; use clap::{arg, command, Parser, Subcommand}; use hdp::primitives::{ aggregate_fn::{AggregationFunction, FunctionContext}, - chain_id::ChainId, task::datalake::{ block_sampled::BlockSampledCollection, transactions::{IncludedTypes, TransactionsCollection}, }, + ChainId, }; use starknet::providers::Url; diff --git a/cli/src/commands/run_module.rs b/cli/src/commands/run_module.rs index e4d365e4..b36395e9 100644 --- a/cli/src/commands/run_module.rs +++ b/cli/src/commands/run_module.rs @@ -1,5 +1,5 @@ use clap::{arg, Parser}; -use hdp::primitives::chain_id::ChainId; +use hdp::primitives::ChainId; use starknet::providers::Url; use std::path::PathBuf; diff --git a/cli/src/interactive.rs b/cli/src/interactive.rs index 0ab53d3f..0dbdbbe7 100644 --- a/cli/src/interactive.rs +++ b/cli/src/interactive.rs @@ -2,7 +2,7 @@ use alloy::{primitives::U256, transports::http::reqwest::Url}; use anyhow::bail; use hdp::hdp_run; use hdp::preprocessor::module_registry::ModuleRegistry; -use hdp::primitives::chain_id::ChainId; +use hdp::primitives::ChainId; use hdp::primitives::{ aggregate_fn::{integer::Operator, FunctionContext}, task::{ diff --git a/hdp/src/cairo_runner/dry_run.rs b/hdp/src/cairo_runner/dry_run.rs index d2c3d32a..6b4d8ffa 100644 --- a/hdp/src/cairo_runner/dry_run.rs +++ b/hdp/src/cairo_runner/dry_run.rs @@ -153,7 +153,7 @@ mod tests { use alloy::primitives::{Address, StorageKey}; use starknet::macros::felt; - use crate::primitives::chain_id::ChainId; + use crate::primitives::ChainId; use super::*; diff --git a/hdp/src/hdp_run.rs b/hdp/src/hdp_run.rs index 9e9357b9..74bd195f 100644 --- a/hdp/src/hdp_run.rs +++ b/hdp/src/hdp_run.rs @@ -1,9 +1,7 @@ use crate::{ constant::{DEFAULT_DRY_CAIRO_RUN_CAIRO_FILE, DEFAULT_SOUND_CAIRO_RUN_CAIRO_FILE}, preprocessor::{compile::config::CompilerConfig, PreProcessor}, - primitives::{ - chain_id::ChainId, processed_types::cairo_format::AsCairoFormat, task::TaskEnvelope, - }, + primitives::{processed_types::cairo_format::AsCairoFormat, task::TaskEnvelope, ChainId}, processor::Processor, provider::config::ProviderConfig, }; diff --git a/hdp/src/preprocessor/compile/config.rs b/hdp/src/preprocessor/compile/config.rs index f51e67bf..8308a7e6 100644 --- a/hdp/src/preprocessor/compile/config.rs +++ b/hdp/src/preprocessor/compile/config.rs @@ -2,7 +2,7 @@ use std::{collections::HashMap, path::PathBuf}; #[cfg(feature = "test_utils")] use crate::constant::DEFAULT_DRY_CAIRO_RUN_CAIRO_FILE; -use crate::{primitives::chain_id::ChainId, provider::config::ProviderConfig}; +use crate::{primitives::ChainId, provider::config::ProviderConfig}; pub struct CompilerConfig { // dry-run program path diff --git a/hdp/src/preprocessor/compile/datalake.rs b/hdp/src/preprocessor/compile/datalake.rs index 971ee9b5..87210156 100644 --- a/hdp/src/preprocessor/compile/datalake.rs +++ b/hdp/src/preprocessor/compile/datalake.rs @@ -63,7 +63,6 @@ mod tests { use crate::primitives::{ aggregate_fn::AggregationFunction, - chain_id::ChainId, task::datalake::{ block_sampled::{ AccountField, BlockSampledCollection, BlockSampledDatalake, HeaderField, @@ -75,6 +74,7 @@ mod tests { TransactionsInBlockDatalake, }, }, + ChainId, }; use alloy::primitives::{address, B256, U256}; diff --git a/hdp/src/primitives/mod.rs b/hdp/src/primitives/mod.rs index d7788781..1236e552 100644 --- a/hdp/src/primitives/mod.rs +++ b/hdp/src/primitives/mod.rs @@ -8,3 +8,5 @@ pub mod serde; pub mod solidity_types; pub mod task; pub mod utils; + +pub use chain_id::ChainId; diff --git a/hdp/src/primitives/processed_types/mmr.rs b/hdp/src/primitives/processed_types/mmr.rs index 09e48daa..8bd1a4d3 100644 --- a/hdp/src/primitives/processed_types/mmr.rs +++ b/hdp/src/primitives/processed_types/mmr.rs @@ -1,8 +1,6 @@ use serde::{Deserialize, Serialize}; -use crate::primitives::{ - block::header::MMRMetaFromNewIndexer, chain_id::ChainId, utils::hex_string_to_uint, -}; +use crate::primitives::{block::header::MMRMetaFromNewIndexer, utils::hex_string_to_uint, ChainId}; #[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Eq, Hash)] pub struct MMRMeta { diff --git a/hdp/src/primitives/request.rs b/hdp/src/primitives/request.rs index c9b4e796..6c7efb4e 100644 --- a/hdp/src/primitives/request.rs +++ b/hdp/src/primitives/request.rs @@ -1,7 +1,7 @@ use crate::primitives::task::{datalake::DatalakeCompute, module::Module}; use serde::{Deserialize, Serialize}; -use super::chain_id::ChainId; +use super::ChainId; #[derive(Debug, Serialize, Deserialize)] #[serde(tag = "type")] diff --git a/hdp/src/primitives/solidity_types/datalake_compute/compute.rs b/hdp/src/primitives/solidity_types/datalake_compute/compute.rs index fef08db2..bfffa1f9 100644 --- a/hdp/src/primitives/solidity_types/datalake_compute/compute.rs +++ b/hdp/src/primitives/solidity_types/datalake_compute/compute.rs @@ -111,11 +111,11 @@ impl Codecs for Computation { #[cfg(test)] mod tests { use crate::primitives::{ - chain_id::ChainId, solidity_types::traits::DatalakeComputeCodecs, task::datalake::{ block_sampled::BlockSampledDatalake, envelope::DatalakeEnvelope, DatalakeCompute, }, + ChainId, }; use alloy::hex::FromHex; diff --git a/hdp/src/primitives/solidity_types/datalake_compute/datalake/block_sampled.rs b/hdp/src/primitives/solidity_types/datalake_compute/datalake/block_sampled.rs index 0d6c490c..3623a5d6 100644 --- a/hdp/src/primitives/solidity_types/datalake_compute/datalake/block_sampled.rs +++ b/hdp/src/primitives/solidity_types/datalake_compute/datalake/block_sampled.rs @@ -1,10 +1,10 @@ -use crate::primitives::chain_id::ChainId; use crate::primitives::solidity_types::traits::DatalakeCodecs; use crate::primitives::task::datalake::block_sampled::{ BlockSampledCollection, BlockSampledDatalake, }; use crate::primitives::task::datalake::datalake_type::DatalakeType; use crate::primitives::task::datalake::DatalakeCollection; +use crate::primitives::ChainId; use alloy::primitives::keccak256; use alloy::{ diff --git a/hdp/src/primitives/solidity_types/datalake_compute/datalake/envelope.rs b/hdp/src/primitives/solidity_types/datalake_compute/datalake/envelope.rs index d4a74071..bf529c3a 100644 --- a/hdp/src/primitives/solidity_types/datalake_compute/datalake/envelope.rs +++ b/hdp/src/primitives/solidity_types/datalake_compute/datalake/envelope.rs @@ -92,7 +92,6 @@ impl DatalakeCodecs for DatalakeEnvelope { #[cfg(test)] mod tests { use crate::primitives::{ - chain_id::ChainId, task::datalake::{ block_sampled::{AccountField, BlockSampledCollection, BlockSampledDatalake}, envelope::BatchedDatalakes, @@ -101,6 +100,7 @@ mod tests { TransactionsInBlockDatalake, }, }, + ChainId, }; use alloy::{hex, primitives::Address}; use std::str::FromStr; diff --git a/hdp/src/primitives/solidity_types/datalake_compute/datalake/transactions_in_block.rs b/hdp/src/primitives/solidity_types/datalake_compute/datalake/transactions_in_block.rs index 246c65b8..81c91781 100644 --- a/hdp/src/primitives/solidity_types/datalake_compute/datalake/transactions_in_block.rs +++ b/hdp/src/primitives/solidity_types/datalake_compute/datalake/transactions_in_block.rs @@ -1,11 +1,11 @@ use crate::primitives::{ - chain_id::ChainId, solidity_types::traits::DatalakeCodecs, task::datalake::{ datalake_type::DatalakeType, transactions::{IncludedTypes, TransactionsCollection, TransactionsInBlockDatalake}, DatalakeCollection, }, + ChainId, }; use alloy::primitives::keccak256; use alloy::{ diff --git a/hdp/src/primitives/solidity_types/datalake_compute/mod.rs b/hdp/src/primitives/solidity_types/datalake_compute/mod.rs index 174b6f90..36fd4ae6 100644 --- a/hdp/src/primitives/solidity_types/datalake_compute/mod.rs +++ b/hdp/src/primitives/solidity_types/datalake_compute/mod.rs @@ -108,11 +108,11 @@ mod tests { use crate::primitives::{ aggregate_fn::FunctionContext, - chain_id::ChainId, task::datalake::{ block_sampled::{BlockSampledCollection, BlockSampledDatalake}, transactions::{IncludedTypes, TransactionsCollection, TransactionsInBlockDatalake}, }, + ChainId, }; use super::*; diff --git a/hdp/src/primitives/task/datalake/block_sampled/datalake.rs b/hdp/src/primitives/task/datalake/block_sampled/datalake.rs index 80c55dd5..7242e98c 100644 --- a/hdp/src/primitives/task/datalake/block_sampled/datalake.rs +++ b/hdp/src/primitives/task/datalake/block_sampled/datalake.rs @@ -1,6 +1,6 @@ use serde::{Deserialize, Serialize}; -use crate::primitives::{chain_id::ChainId, task::datalake::envelope::default_increment}; +use crate::primitives::{task::datalake::envelope::default_increment, ChainId}; use super::collection::BlockSampledCollection; diff --git a/hdp/src/primitives/task/datalake/block_sampled/mod.rs b/hdp/src/primitives/task/datalake/block_sampled/mod.rs index 39ec2a8c..e4e43a06 100644 --- a/hdp/src/primitives/task/datalake/block_sampled/mod.rs +++ b/hdp/src/primitives/task/datalake/block_sampled/mod.rs @@ -10,8 +10,7 @@ pub use rlp_fields::*; #[cfg(test)] mod tests { use crate::primitives::{ - chain_id::ChainId, solidity_types::traits::DatalakeCodecs, - task::datalake::DatalakeCollection, + solidity_types::traits::DatalakeCodecs, task::datalake::DatalakeCollection, ChainId, }; use super::*; diff --git a/hdp/src/primitives/task/datalake/envelope.rs b/hdp/src/primitives/task/datalake/envelope.rs index 22c15317..e592162f 100644 --- a/hdp/src/primitives/task/datalake/envelope.rs +++ b/hdp/src/primitives/task/datalake/envelope.rs @@ -25,7 +25,7 @@ impl DatalakeEnvelope { } } - pub fn get_chain_id(&self) -> crate::primitives::chain_id::ChainId { + pub fn get_chain_id(&self) -> crate::primitives::ChainId { match self { DatalakeEnvelope::BlockSampled(datalake) => datalake.chain_id, DatalakeEnvelope::TransactionsInBlock(datalake) => datalake.chain_id, diff --git a/hdp/src/primitives/task/datalake/transactions/datalake.rs b/hdp/src/primitives/task/datalake/transactions/datalake.rs index 423773f8..dee89bd6 100644 --- a/hdp/src/primitives/task/datalake/transactions/datalake.rs +++ b/hdp/src/primitives/task/datalake/transactions/datalake.rs @@ -13,7 +13,7 @@ use alloy::primitives::U256; use anyhow::Result; use serde::{Deserialize, Serialize}; -use crate::primitives::{chain_id::ChainId, task::datalake::envelope::default_increment}; +use crate::primitives::{task::datalake::envelope::default_increment, ChainId}; use super::TransactionsCollection; diff --git a/hdp/src/primitives/task/datalake/transactions/mod.rs b/hdp/src/primitives/task/datalake/transactions/mod.rs index e974066b..3abcef5b 100644 --- a/hdp/src/primitives/task/datalake/transactions/mod.rs +++ b/hdp/src/primitives/task/datalake/transactions/mod.rs @@ -13,8 +13,7 @@ mod tests { use std::str::FromStr; use crate::primitives::{ - chain_id::ChainId, solidity_types::traits::DatalakeCodecs, - task::datalake::DatalakeCollection, + solidity_types::traits::DatalakeCodecs, task::datalake::DatalakeCollection, ChainId, }; use alloy::{ hex, diff --git a/hdp/src/provider/config.rs b/hdp/src/provider/config.rs index f8a3490b..cd2bac0e 100644 --- a/hdp/src/provider/config.rs +++ b/hdp/src/provider/config.rs @@ -1,6 +1,6 @@ use reqwest::Url; -use crate::primitives::chain_id::ChainId; +use crate::primitives::ChainId; /// EVM provider configuration #[derive(Clone, Debug)] diff --git a/hdp/src/provider/evm/from_keys.rs b/hdp/src/provider/evm/from_keys.rs index 57232c21..f2f7a556 100644 --- a/hdp/src/provider/evm/from_keys.rs +++ b/hdp/src/provider/evm/from_keys.rs @@ -357,7 +357,7 @@ mod tests { #[tokio::test] #[cfg(feature = "test_utils")] async fn test_get_proofs_from_header_keys() { - let target_chain_id = crate::primitives::chain_id::ChainId::EthereumSepolia; + let target_chain_id = crate::primitives::ChainId::EthereumSepolia; let provider = EvmProvider::default(); let keys = vec![ FetchKeyEnvelope::Header(HeaderMemorizerKey::new(target_chain_id, 1)), @@ -373,7 +373,7 @@ mod tests { #[tokio::test] #[cfg(feature = "test_utils")] async fn test_get_proofs_from_accounts_keys() { - let target_chain_id = crate::primitives::chain_id::ChainId::EthereumSepolia; + let target_chain_id = crate::primitives::ChainId::EthereumSepolia; let provider = EvmProvider::default(); let target_address = address!("7f2c6f930306d3aa736b3a6c6a98f512f74036d4"); let keys = vec![ @@ -400,7 +400,7 @@ mod tests { #[cfg(feature = "test_utils")] async fn test_proofs_from_storage_keys() { let start_fetch = Instant::now(); - let target_chain_id = crate::primitives::chain_id::ChainId::EthereumSepolia; + let target_chain_id = crate::primitives::ChainId::EthereumSepolia; let provider = EvmProvider::default(); let target_address = address!("7f2c6f930306d3aa736b3a6c6a98f512f74036d4"); let target_slot = B256::ZERO; @@ -455,7 +455,7 @@ mod tests { #[tokio::test] #[cfg(feature = "test_utils")] async fn test_get_proofs_from_tx_keys() { - let target_chain_id = crate::primitives::chain_id::ChainId::EthereumSepolia; + let target_chain_id = crate::primitives::ChainId::EthereumSepolia; let provider = EvmProvider::default(); let keys = vec![ FetchKeyEnvelope::Tx(TxMemorizerKey::new(target_chain_id, 1000, 0)), diff --git a/hdp/src/provider/indexer.rs b/hdp/src/provider/indexer.rs index 0683f441..1929fb57 100644 --- a/hdp/src/provider/indexer.rs +++ b/hdp/src/provider/indexer.rs @@ -4,7 +4,7 @@ use crate::{ block::header::{ MMRDataFromNewIndexer, MMRFromNewIndexer, MMRMetaFromNewIndexer, MMRProofFromNewIndexer, }, - chain_id::ChainId, + ChainId, }, }; use alloy::primitives::BlockNumber; diff --git a/hdp/src/provider/key.rs b/hdp/src/provider/key.rs index 7433a71f..2686a233 100644 --- a/hdp/src/provider/key.rs +++ b/hdp/src/provider/key.rs @@ -10,10 +10,10 @@ use std::{ }; use crate::primitives::{ - chain_id::ChainId, task::datalake::{ block_sampled::BlockSampledCollectionType, transactions::TransactionsCollectionType, }, + ChainId, }; use alloy::primitives::{Address, BlockNumber, Keccak256, StorageKey, B256}; use serde::{Deserialize, Serialize}; diff --git a/hdp/src/provider/traits.rs b/hdp/src/provider/traits.rs index 3d8511f4..8aea5cbd 100644 --- a/hdp/src/provider/traits.rs +++ b/hdp/src/provider/traits.rs @@ -1,5 +1,5 @@ -use crate::primitives::chain_id::ChainId; use crate::primitives::processed_types::block_proofs::ProcessedBlockProofs; +use crate::primitives::ChainId; use std::future::Future; use std::pin::Pin; diff --git a/input.json b/input.json index 5fd18be0..2bdb70da 100644 --- a/input.json +++ b/input.json @@ -1,708 +1,512 @@ { "cairo_run_output_path": "cairo_run_output.json", - "task_root": "0xd900a4d980172ad23fafb579aeac7cff91c73636d334bc247a1c3142d8bffa78", - "result_root": "0x34b46123c4ab406cec0586364d8ed193353f0e9fb1b32cac0988fc0970dc50a2", + "tasks_root": "0xe48e52ac91f5fdec65517efdcaa48eb44b43259adc615cf67b210d2316d5ba86", + "results_root": "0xb1b4ea77b125a3360e3fb683830d3c44d6ccfed08c820e39fb0487b0da0a7168", "proofs": { "mmr_metas": [ { - "id": 26, - "root": "0x5358fbe594d3e8fdb3f6f7bbbe979fc3a377851a21909ea7bc1821e15cc6c4e", - "size": 12899969, + "id": 2, + "root": "0x10985193855d9de012ae065d02e15676aa2cce031b18290d3b48fb8e410d3bc", + "size": 56994, "peaks": [ - "0x262c4c9b1cb2a036924aecf563dc9952e5f8b41004310adde86f22abb793eb1", - "0x63e06c6dd962e6232140b8f20fc4972ee69ca29d1c6ca4455d80afd4be0f3de", - "0x48c9781f73635713eb8ef52890c481f4438c576baf01b31bc7935d9d42c1244", - "0x068c923e9bcc3df411575563e88a81cdef49ef6c4307efad707a8538114b753", - "0x54a48cae0defc94286e03d5c3abc53a399db7eb6207140f8d6f8d7322c9d1fc", - "0x1f31aea9b689fdab066317c08c865ae3b134adef05a744965a5741119a6c094", - "0x41dc23c0b0c18e7cc1d3f7148feabbe30269080cbe9b6ead6b718a2d1176382", - "0x1d04bc7dd1b40becbbfdf6a6971ef0e1ffc873087ed75bb2163dd2615d366de", - "0x5f3202e8d32391896022ddb916b83f165d2d7486261304f3e029aad6258ba2c", - "0x3a98faad3cc3bdeee0f2a346469fe4e67d364c98f8f5adf03f472000194081c", - "0x48bb57587a1e690409d81b70f3fe2ee625f25f008ec0773e55a0e1293c9e025" + "0x0794bd0825d51a5662ba8ca27d71d1000b8e1bfb708b34b6541428d6da58795", + "0x527ab023c7fdc1afa3c25885e4c2ae47522cde5ddf49c2bc20dccace24bfad4", + "0x04c8c7e945aafd7ec5a7d376bab269e42a9589fe7064a986c4e4d9d05f6e72e", + "0x5ad67d05125b5d17dc14c91938218edd87689e09a4eac8be311485125ccb301", + "0x3331f3ebc157027bdbbac2478ea7e164edc8b80b21ff34867551b7204d05392", + "0x3da3dedfb8f9e4d8abb4ac4722b85f3dd960a85850bf49294c480a46c540535", + "0x4495fa03fc69c5356b41a8d51fffbba196122fc62a05bae47c4b44669090fb2", + "0x76d7442003ddf6d8b6b29c42c3ba9b56f52309619b16f9aaf46ee13263d62f8", + "0x05996b64edff625e7f7443af14adf9d920f3ff4ff75a18bd1f93a209ec3fef4", + "0x5417f6fb234889a2c018bf05eef24cebd8ba29595df9ca880e0f856162c1bb7" ], "chain_id": 11155111 } ], "headers": [ { - "rlp": [ - "0x216f1eb0a05c02f9", - "0x4de0372b4bed3c60", - "0x8e23a0628d6c899f", - "0x65105b263ee0b4f5", - "0x4dcc1da057420e26", - "0xb585ab7a5dc7dee8", - "0x4512d31ad4ccb667", - "0x42a1f013748a941b", - "0xe2c6944793d440fd", - "0x6dca7ce2bf919945", - "0xe4a123da352f7286", - "0x9b608182bda097cb", - "0x29e3b5d6b2eb735d", - "0x453e78855ad3ad56", - "0x385cd72fd2f23ff9", - "0x6a7132d6a0e509c3", - "0x44cd18a4510c63cf", - "0x77919e8f9a1667c4", - "0x414bad92d40a9154", - "0x446e34a0813f946c", - "0xbe9450981b4e25eb", - "0x3dac7c23f5bb80be", - "0xf687f40adf699e82", - "0x1b9f087b04080", - "0xc8c910cce7c486d2", - "0xe59016a45e2698a1", - "0x82b4c33d7c5f5332", - "0xd446f24a5ed5b7cc", - "0xdf996f696b144e29", - "0xe24f0c6659dc1e54", - "0x4fa0a9d3141e3c9a", - "0xd9ecef0a2c5e6c94", - "0x2ac5a6ea467f7470", - "0x829130f6af92b658", - "0xe261af81856c3116", - "0x7b00b19847d30f60", - "0xdbc971aad011c5e7", - "0xd64f4cb7209bd6d0", - "0x70442fd0a28ca850", - "0x5c2cd3d036bc0140", - "0x9e437f250c8ac88f", - "0x9e28395a49ac6876", - "0xf6a43f3f0328bc0d", - "0xd9b4ecd529b403f8", - "0x59d6efe506742a33", - "0x7664561421b64d04", - "0x1c8f18660a1d4837", - "0x1c8ad7be7da7180c", - "0x47df73de1f95de05", - "0xd167b65b1edfe383", - "0x6b45c814dfc3b9d8", - "0x20e161a0d09691ac", - "0xb290d5b6ab793ef1", - "0x9a850b64eaf115a5", - "0x6274b7e9d0975fc9", - "0x94ee5d102c0a774b", - "0xc90184c546618380", - "0x8459b853018480c3", - "0x74657291bcaca266", - "0x332e302e31762f68", - "0x6ca078756e696c2f", - "0xd3a5a7ee7bde8cac", - "0x60f7893db4ae18f6", - "0x58536e554021926d", - "0x8887bc7cf3c65be6", - "0x0", - "0xe560a08f6e329484", - "0x1a6b0adc0ebec001", - "0x82c517e276bbf0d1", - "0x28ffa87f26c06564", - "0x283435c3242e723", - "0xaca0000098830000", - "0x73d11f799a08a6eb", - "0x1579c174a76155bc", - "0x9e37c7cb80c29381", - "0xacba28e2aceec8" - ], - "rlp_bytes_len": 607, + "rlp": "f90229a028fa8c977e0961a1aaa992d163f33b2d191426a231f6c76748d8b8a22ee1010fa01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347940c06b6d4ec451987e8c0b772ffcf7f080c46447aa05fac2b43907a836ba4f4d59ba3886875dea3ffbf446951be0c01a6838b10f4bca0a42d0099bc1b7b82fe4cb0297a513bb97d6de050b8c85a30c66c7b26d4215b4ea09db9550648bcd4ab43daa3ae460e89067b6d15edc8b04043f74812ffd5bbdfb1b90100000300020d08080402881422040000410cd2000010a04000101a04048c00092040108000010502218006000003009000090100800408426001008050102601204008080000208000011ac038280014000040208008a64208240088d0409802012801008a1a04000000a8818010202801011105008124000000601010021048c10200880a0012000030240108084048101008088080c080408800142284500105020905101214c01a900a0020008020041000a0400e181861a080280004020200008141020000510281100100020004002004098008081004406080134441781800920a184410001208002829800430000400001000000040830002000044441880834b90948401c9c38083a30716846588e0dc883265643834363862a0f7c29bbd3a145b5b88d19490fcf561a7d1ae7e1db0ccfc1f8bab781e1b8b419188000000000000000084957604fca0d89ee35c8b172dcafba95c0c0bc9408cd9ee1714a874a9870fc532e3bd1efdd8", "proof": { - "leaf_idx": 12739496, + "leaf_idx": 56769, "mmr_path": [ - "0x291adc0ff3f5eb31376d2dc882c4a0b612ee00b536b484d9d68533db47b1a55", - "0x577884cce23db95312ef380a904afccab7fbd9cf34e84777adf2813bc92a413", - "0x71426cc21537949a45197dd3a57b397d86d3302dc894173068585b7631ebb25", - "0x6ebf678bb0eb572f157cf9ca66d1c27754c20986de0335382c12afd8fcd26fb", - "0x20dfc647656b4c039bf946a56d2695fd631a2226fd815a83b69e18b543b9dd5", - "0x1ea310f504c5c7c6d43642ba2c09fa8f66edd91a6d3e965dec30db6ec9aa030", - "0x18ca5daed2c274cf2215dd11b3c5875b740df446360af179c95a0ec53c58f13", - "0x59417edcf79f38992d51563fb1e2af608dff9f2371fef973b0cdac2febc526f", - "0x45a9615d78011e7752d3e3f3f6e11f0de5b8fe531a0959d0f6e5041e1b5ba6f", - "0x1e94c6fa131239300669cb31c1ced02d1ad800fac561e092ab8b843cb0e6111", - "0x767920b8e4e378c8a1e55f812ea4579e6deb7584eab1325bcf5bad57b442cf7", - "0x2bfb39d36fcf83d18b05565fb4ae8de38453d439db185160c0cb541df2255f7", - "0x3a5f673a2f7d7cacff677177483259b7b9161dde49603a3523909a74dcf58eb", - "0x63cb7951cbce300498bb8868a619f6ae7179d5ed1a5d832859e870de3e5c011", - "0x5dfc985941ef9d1bae4a5bcddb23a338c70248a43107555df4cc20f81423721", - "0x07a25a1fdea49b07bbf8231ad4e7c00dc020b85c183f91022abd7c7baf1f42d", - "0x3d088c444fcc7a0083f3cb9d95d56975d22a8ac1171fcf5c0d8fa325fcff4db" + "0x50bdf85ab870d4811c81d3e95e66f9cf7b3798ee00becced8646a6a574f9b20", + "0x0d084fca33c515832238f76ba0c4f77e7c4dd087441a0441cc8a3a7fbebee04", + "0x2d2639dbb309b6d580b55ca876a0d4081dfb5799ac568b9637dd33da23a8033", + "0x7337bdc57f2abddce74536296f3764631e0cb66ba9d1b6564b9734df7a6956a", + "0x6d9ea890765cdf15556568782cbe2e7b63526c146d274f1d85fcb727dfc4ee2", + "0x0986528edebe7e63bedacf6820cc7a6e36285bd5b08ffdf7f789ebf5f4e1368", + "0x197c0e1f3f891cd367cac728f646334e33e5f9aa6fa7ca81c028c286c006ee0", + "0x14f522b5a62c9ecd4857b7bfeb87a1ca239ba3961278a6c1b9a291629794cfc" ] } - } - ], - "accounts": [ + }, { - "address": [ - "0x5d89d5862ca7e8af", - "0x36b7d426ab6d61d6", - "0x2f4722cf" - ], - "account_key": "0x7fd6daf0de598ff611452d8eb4ec5f7e99e8ef74d175073be14cdc936830b5d3", - "proofs": [ - { - "block_number": 6375109, - "proof_bytes_len": [ - 532, - 532, - 532, - 532, - 532, - 404, - 83, - 104 - ], - "proof": [ - [ - "0x444e529da01102f9", - "0xf37544b888708d51", - "0x4c73181251ca8773", - "0xca042799a2381be", - "0x8f891aa08f7a0b4b", - "0x1a73b84327366212", - "0xe20ac0516697c8bd", - "0x6fc64891e36ca714", - "0xd808a02db30e1217", - "0x607e5eea121e89d4", - "0x17b487cd624bab57", - "0x3f5938c05a0ffbd6", - "0x7a081e913a93e5b", - "0x4cacd321d5a138bd", - "0xeea00b2128a12212", - "0x5320f46d51ce5b74", - "0xa0fcde49c74a4e21", - "0xf4f5e9953107eadd", - "0x9b742e5b58a0b03a", - "0xf840bf140ca4f854", - "0xbbcf9e589f3860ab", - "0xb2347ff3a6618ba0", - "0xd30ef52d45438b70", - "0x5d2ff37033210e6c", - "0xe8d2cdc675a9a230", - "0x7b6e8ca5b604a080", - "0xfdaff0383e2cf2f2", - "0x43b00d14850f7873", - "0x32259e9638884225", - "0xdb2a38f356a0d615", - "0xdd66b426e3ee70dc", - "0xcb2a87f92ce4f59a", - "0x3558c02b067b0f76", - "0xd441ac8aa0542ab1", - "0x33a7053e7510a439", - "0x7bfc53cb480af51", - "0x917e6bc2d32e31a0", - "0x7e22ca0a3172bee", - "0x171aa595ef249e65", - "0x208430e2b9b2840", - "0x374f95bcc70a084f", - "0xb982a06bc37beb57", - "0xa307195ab46d773d", - "0x7d158a83f588227c", - "0x9bdf8627dbf1a4b6", - "0x68a069b7ad9561fd", - "0x711bc0fd99a56731", - "0xe16f9014a1da14da", - "0x1998ccb79dd40fee", - "0xa084c2deda7009ad", - "0xfec128291c32139c", - "0xf45b263525bbc1bc", - "0xea18c1d000803bd8", - "0xbc6e26a2759645b1", - "0xe5b26ed4928d5a0", - "0xd261b3306613ca46", - "0x118fcfd107367472", - "0x5750921a2a88ba9f", - "0xa0383126830ca0d9", - "0xfe03bb87ac16126e", - "0xd1b081e732ece6fe", - "0x14dba318c57c7fe1", - "0x6c9c7b30cca06837", - "0xa523ed9e811d73ec", - "0x9b98ace58bd45b0c", - "0xd81bb282de7c44ee", - "0x8048f498" - ], - [ - "0x1be4de43a01102f9", - "0x5b34e092388e9421", - "0xbbd32e19fe740815", - "0x57057ce6e1f2644c", - "0x1d9df4a0a4e1c960", - "0x798f1be9df913cae", - "0xb30f19e7d6597147", - "0x11c742452bd94bf5", - "0x68e8a054ddb0b4ee", - "0xebfbe7754b250c66", - "0xae0ee2ae31a2188b", - "0x2810698530f06730", - "0x89a074edd683c4eb", - "0x5f97b1a37b93f4c8", - "0x71766d0f37c01dac", - "0xceb278e3002bf14a", - "0xa05fc915f988d02d", - "0x44096c084c7724ec", - "0x55ca8edd889c1770", - "0xc74bcb8a87a3b3c5", - "0x3deab16eedc763a3", - "0x958ebb0ed20204a0", - "0xe0d7842550e1f7fa", - "0x50378dcc62cf1f85", - "0x1f8580288af2906e", - "0x101b530e575ba0de", - "0x72c2c377c188c834", - "0x547c9b315322f81a", - "0xcae4953a6575c1e9", - "0x41b8d3a8a7a04482", - "0x6c10c919bc7e59fb", - "0x832c3b8673380b0e", - "0x6022da748383ca14", - "0x5668c9ca0dc3dd8", - "0x7c7f8ff768d7a1a3", - "0x2f2acbd07b06820d", - "0xb3b9895140569141", - "0x3b6e69a00740897b", - "0x26a2b25238b65af3", - "0xa386028d7baff6dc", - "0x11ad051616033e5d", - "0x96eea067010faa37", - "0xed9d9c9bcedf5af0", - "0x37fb98d62dbd1dd6", - "0x1f414dbe76c464fd", - "0xdaa08bc0cb33fc60", - "0xb08cb9c2085cfc71", - "0xe189139d5391d4e6", - "0x81d62c2a3dd95aec", - "0xa0dda1a58913281d", - "0xe1e15f468c7be8f4", - "0x65e2cfcdbc79758a", - "0x25ede651e43dd045", - "0x1a230ebf6ee33052", - "0x19d7bd1e8c7550a0", - "0x94ac7048d3482b8d", - "0x4712f434347bd5f3", - "0x880f325e69627cba", - "0x4771673871e9a0b2", - "0x76e996ee04ef431", - "0x2032636c635156d2", - "0x6fd0c2a5bab4d2", - "0xf91fee1389a05181", - "0xb27b11ed5629c41a", - "0xed1c9dcc37b3085d", - "0xd493606d4ca0d3d3", - "0x801bdb72" - ], - [ - "0x71b960fa01102f9", - "0xbe1fe01634ea6e64", - "0xf41a59ac121ab0c7", - "0x11e95a4610790b44", - "0xb55cb6a0d1fb205a", - "0xadc9623e6edbc11c", - "0xfddc0a1821ba0cf0", - "0xd53be648834ef0f0", - "0xdbb3a033efba1484", - "0x56bdb101631c76f", - "0xd7d4f6591a171443", - "0xae600196088ef39", - "0x5aa07ece61ce4d49", - "0xfde31c1a7f893138", - "0xcb4c4365813b31ac", - "0x44e9682ec2fb5add", - "0xa064828756abd703", - "0x658940a7e900dedf", - "0x9ca2692bc72e0dd9", - "0x98f612838e0975f6", - "0xc0df161b8509e12d", - "0x48cd9012fce98a0", - "0xe861b22ec42d85f7", - "0x3cdd46ba75e86818", - "0xaf04e750b297489e", - "0xc43beb370e43a015", - "0xdd1b4d4edbb176aa", - "0xa5c2422d0bf6e6c4", - "0xc55773d8da6facaa", - "0x24ff6b6229a083da", - "0xa99e9a8bcd8eda00", - "0x3c3feb7198579ee1", - "0x1f60a3b2c54965a3", - "0xa97bcaa2a0872921", - "0xacc08b0b6f7d237d", - "0x6800e1bcd674c94d", - "0xa8c833699d7d8aeb", - "0xb245eca05d102c80", - "0x6fb43714b5bad4d7", - "0x94f615ad1da741fb", - "0x6d2e560d0e41ff56", - "0xa4f6a0208423a3cf", - "0x5b2e046e7d074f35", - "0xa098289f7f01d0bd", - "0x2265a4a7bfebcecc", - "0x7ca007262c28d797", - "0x6af5f9ed4ff17ff1", - "0x8b88a3ee112ee6a3", - "0xca661abf2cb29191", - "0xa066abc586c64a8a", - "0x813b3cd8cb48fcd8", - "0x72494ff3567ed250", - "0xb1d3cd4907b614c2", - "0xf1256dd9567b6a94", - "0xddeea9f55da583a0", - "0xe51a6c75910e4d4a", - "0xaa1ef569451c7ad3", - "0x15c29d58e7b28540", - "0xc98d543b0a3ba0e1", - "0x4ac2a8d446a1bab8", - "0xb1924632c4a3a8d7", - "0x1fb62fac04c4a758", - "0x82068bfc8fa002cb", - "0xa49507b0d33f4ae8", - "0xeaa341d28d10ad45", - "0xe8b0b5a713f7300e", - "0x8062325a" - ], - [ - "0xf1af50daa01102f9", - "0xc45148a86edcfbfe", - "0x7ff915197b189f26", - "0x7f92e3cf79221546", - "0x2650c9a0433b2cba", - "0x18c1ca0bbe0b9385", - "0xe4ca0208b3d7628d", - "0x184082fb648501bc", - "0x64f7a05428e26594", - "0x25ada2a637e5f953", - "0x8a3a6b896604586e", - "0xad9c09b75d0b3eae", - "0x7aa01f3891ebd29c", - "0x4124ff872109dbdd", - "0x576bba0fccf024df", - "0xfb686bbc7bf54546", - "0xa06ac78578ce9466", - "0x253055df1f76d334", - "0x32cd652eb86671d2", - "0x6f106a856b73968c", - "0x7c49da01208a387f", - "0x2c13a33c7ca8aaa0", - "0x17a3b5e952302372", - "0xddc268c59cc4adc2", - "0x61aa3d293992472b", - "0xf32780d28c36a098", - "0x7c451b5fd225caf6", - "0xe95f518a00b6b4fa", - "0xd7db61a9257c1e15", - "0x73454d87fda0ab26", - "0x339ba009944d4d6b", - "0x9ed08a8230482a69", - "0xd1390999b8312afb", - "0xb82fcc9ba067c7d8", - "0x52664c6dab495e", - "0x3615ae6770edd2df", - "0xca1d2b4eebb71e91", - "0x9ab8daa0a6974282", - "0xd86e2ff1acc6b40d", - "0xfc68716c52d3d232", - "0xa45ba0d42fa38799", - "0xca41a04157354876", - "0x6c5deaef8c318a58", - "0x84f555dd0a2f68c0", - "0x62f259ab51b8f292", - "0xc0a05a6da52a93c0", - "0x4cf6c19ee0c127b4", - "0xb489a44989226930", - "0x15b88d62aa535053", - "0xa01815e279cd3a5c", - "0x47a1c105c66321b7", - "0xe8f13ba36264077f", - "0x7044f9a89efa4755", - "0xff6a9dc4269cd9d6", - "0xf152d0d450e75fa0", - "0x9da8e15a468f5584", - "0x3b614f00a6312bdd", - "0x853af8603c6914a6", - "0x5722714ca459a07c", - "0x534f2f14c7b9cd", - "0xe0a40b78e069c271", - "0xed02a93532cfdd30", - "0x477474322da07ec5", - "0xcfb69eba40e8e83c", - "0x95c19429516b7e83", - "0xe72ddd0ce13f244", - "0x80a9427c" - ], - [ - "0x5e19c1aea01102f9", - "0x82653e9435c27456", - "0x6c85883c66d32d77", - "0x997434564679b8ed", - "0x2aef61a0f9dfcf06", - "0x1f4f35bac04c70c", - "0xa3aced786d2fc676", - "0x4cd55bd8c5ccb479", - "0xaadaa0a1c0b578e6", - "0xa12cde6061675c15", - "0x45238e8841693826", - "0xe8dbefccec975c1", - "0x56a0a6b6b1dd4f2c", - "0xb944f12d50702aa1", - "0x1962bfe45b3d41f7", - "0x18fbb405a9b11839", - "0xa0222a38518e0a92", - "0x7869cb59ae1871d6", - "0x96be8e6e205d11cd", - "0xaec0280b20553a28", - "0xfe34dfc43cf3707f", - "0x72a18de82ee33a0", - "0x941258afc42170f7", - "0x1dd489e0f8a60d0c", - "0x59158dad07c465e3", - "0xe309286a4e6aa0f2", - "0x635af7f158cfca48", - "0x7b2f709560ce8fe8", - "0x39568e381a5f6fac", - "0x55878a22dda0df02", - "0xe2fc664542c3871e", - "0xbce6bb844165bc3c", - "0x14531b77f59c916a", - "0xd184add5a0b662d9", - "0x6bb294447da0e26", - "0xc6e0912f0991e654", - "0x558e6ccc5c7c7392", - "0xd61712a0fc21c1dd", - "0x43a26c7177ccaaa", - "0x6ffc3b67472915e5", - "0x45049c641967f271", - "0x1dd8a0d6b5ebcb0c", - "0xc71045de4a959bf7", - "0x8676de566a1f1eb7", - "0xd297084c4019e127", - "0xbea0193d2b42415d", - "0x1e7d7514391790f0", - "0x1c60f3c5d6570922", - "0xffd71c6b9f149a42", - "0xa052b5f86b064bad", - "0xb22ccc5257cf30a8", - "0x42c32663548bedb5", - "0xdf128dce6daec770", - "0x703f370ed71eed6a", - "0x37144c12faac56a0", - "0x64dbc0bc53b88eda", - "0xd2b9768bdc6b752e", - "0x28b8f6798920547b", - "0xede378a44b10a0dc", - "0x5636f5174e54387d", - "0x324818ff66de2edf", - "0xf08cc6d4ecf1c385", - "0xadf4aa0d16a06a6c", - "0xeed518f3bdb6dfaa", - "0xd6c7bd0495a7a0f7", - "0x2a6d07385d918513", - "0x80da117b" - ], - [ - "0xd376880ca09101f9", - "0xc97a529699654659", - "0xe8ac8108a83209a4", - "0x4e90f78c7707d12d", - "0xe292da0e39f3515", - "0x6d8331ad2c6ba1f", - "0xc01c99e896c384d1", - "0x6adae583c2208211", - "0x1365a0287453f65b", - "0x5477cb087a0a097c", - "0xb62cab2d3021e6b", - "0xa505941c03ea474e", - "0x50a040f37a8034f6", - "0x6f086c0e8faa1381", - "0xc3bb7f31e0ab3cef", - "0x8b769bdb4289370e", - "0x80d08a156e708dab", - "0xd1acab94c25b04a0", - "0x2972012216221b7b", - "0xade04d0214fe47b8", - "0x839ac2f611f43d80", - "0xc6a86e9be4a8a05b", - "0xfd20f82104943ff3", - "0xddf3cf80aeb0c53c", - "0x76834fab7712248b", - "0x47106ea9a0800b84", - "0x20541efe5f40c0e2", - "0xc7452c160a02b5c4", - "0xc2e5cbff68c6f3d1", - "0xafdaffa0ee2e6571", - "0x9c6bb900257b102", - "0xb2d792bc50f15215", - "0x51be63015351d2fc", - "0x3ac6a0702f7569f8", - "0xfdcffc05cdff59b1", - "0x468880e764c84d44", - "0xd912199f06de7a7f", - "0x5ca0a7db843632ee", - "0xc0d628da52ba5c67", - "0xb12a761721d9d3a1", - "0xce173c16111f4289", - "0x8040db137a7bc4c1", - "0xfb5cf5c514ee43a0", - "0xffe55b93cd035f3e", - "0x5336d6af7ff71d8b", - "0xe4858f9a1352908e", - "0xc7ca89cbeea080c8", - "0xbe4d58304e68d653", - "0x2a798b994bb2daeb", - "0x70d1151e834cf123", - "0x803df2ce" - ], - [ - "0xa0808080808051f8", - "0x89aec71f036ca173", - "0xc99d552fcd9c02ee", - "0x64638627851c62cc", - "0x450cef2e7d51ed32", - "0x8080808080808080", - "0x56fda7cbf4e7a080", - "0x500f0ee84c586361", - "0xdeccd5de16f9e35d", - "0xa84323f9c25b7078", - "0x80c9ce" - ], - [ - "0xf68f59de309d66f8", - "0x7e5fecb48e2d4511", - "0x3b0775d174efe899", - "0xd3b5306893dc4ce1", - "0xaa0800144f846b8", - "0x73ca4134ac04ce06", - "0x8a77b72d70eb37a9", - "0xacd0554ca3b91104", - "0xa0f25962fc91ed4f", - "0x876b309aa39be0b3", - "0x591938a3cd5995be", - "0x4ba3f3e5d6246d61", - "0xa181627de4401423" - ] - ] - } - ] - } - ], - "storages": [ + "rlp": "f9023ba05cc3d511351456265d5f51f47cf08138a1be4db71b9593b65e4a600dde8ba4fda01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d4934794c6e2459991bfe27cca6d86722f35da23a1e4cb97a0aef9093f94bae7261aaa6cb97f1da5a4384237c169b460beae5083357922b388a0f5f54cda562602412e135ced0ea55d44b3e248fdb3be744712aa25bbabdd1b6ca0764a56db1ff9de5b86ec3f214cbf2f217858c019c726bddf5c05239980bc3594b901008b24f30c1c21c012c89c9c399418154946f39880a6adb1f0c38d146280530c302416f612c402427d184330d903a69406d921601fdc823641252fc40116ace3012b1c0ab250f182493586e25dcd62f2322a01a95173ced21d280dca8c53990c636c5b114b6e211a30b3c885163671e95294359d01500eb4e27816b753823f84951a6035134c479d1480249f4bad50c074a26344a448cb294a29f673e3865828019b22f66530468b8e5c6584bcd4337a003b52f00037281a2aa2c7a3818420531001935146046256040db133847741f62809cd287400828055c18da316d4ad6d4a09b222c9405c8612a79984a6ad4100c62d400caf07a8035ad1a44a48030803d080834b908b8401c9c3808401907b4a846588e05899d883010b05846765746888676f312e32302e32856c696e7578a028b0ee8b6ed12060de78d7b54c959d4230bc925978bdedc2a79cc18bcb5251f988000000000000000084865aa2b1a0bfd021d79aad510616068967b24ae826adb6fa6d7924dda440ec560d64ce69b2", + "proof": { + "leaf_idx": 56786, + "mmr_path": [ + "0x4b718190ee4b93a287e51cec8d25a833a178ed42b83547cda06b33e4f201ea3", + "0x6a6a6626115e03d8dc8340a3cb9354d419bdf903d78fabb3cac6661c9608291", + "0x1356a8540da67e7e086e004aa06425f4a130f9ee67d0c781702ccc637655df9", + "0x2866e0617b791220100c398f856e1402475e9eb57fb87a8c7373945bf3a427f", + "0x6d9ea890765cdf15556568782cbe2e7b63526c146d274f1d85fcb727dfc4ee2", + "0x0986528edebe7e63bedacf6820cc7a6e36285bd5b08ffdf7f789ebf5f4e1368", + "0x197c0e1f3f891cd367cac728f646334e33e5f9aa6fa7ca81c028c286c006ee0", + "0x14f522b5a62c9ecd4857b7bfeb87a1ca239ba3961278a6c1b9a291629794cfc" + ] + } + }, { - "address": [ - "0x5d89d5862ca7e8af", - "0x36b7d426ab6d61d6", - "0x2f4722cf" - ], - "slot": [ - "0x0", - "0x0", - "0x0", - "0x1000000000000000" - ], - "storage_key": "0x1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae672", - "proofs": [ - { - "block_number": 6375109, - "proof_bytes_len": [ - 532, - 83, - 69 - ], - "proof": [ - [ - "0xdaaaa563a01102f9", - "0x53733b89af92fdbc", - "0x227bd6cee31ca3e9", - "0x336db59681c1265b", - "0x7d7780a0509e595e", - "0x7310f9ca15df6350", - "0x2cabd610c8b53725", - "0xadbb21b0304fb72e", - "0xebda0d73dfe99f7", - "0x9ca6efeaf56b9b49", - "0xbc955048ac3d5fe2", - "0xcc33f505be97fb68", - "0xf2a0bc4d1ca2189d", - "0xd6fec3fed9cc776e", - "0x2cdfad8829638de5", - "0xb45659b7b4880241", - "0xa0b2c0c42a8b68fa", - "0x124ea6c73242e630", - "0x980e5879cc375472", - "0xcee0f874c5686418", - "0x969bcca76c6785d0", - "0x2df84ea10d9388a0", - "0xb82c15fe0e46f64a", - "0x984ecc65972203c3", - "0xcc4050165d2c602e", - "0xa7e41fa0d715a056", - "0x4b56009614424972", - "0xfdc53ee84e7e95fd", - "0x2dea4431fe1070d1", - "0xc864595a66a0e3f4", - "0xd17f80d096431b16", - "0xb51f6788c53e6caa", - "0x60ed6c03838c7510", - "0x39067cd5a0ce9ea9", - "0xb62a0e234fd40583", - "0x72e16ce793841c85", - "0x35322107af4919fa", - "0xf9272da039bdc793", - "0xd7d2f60de50aa21d", - "0x961d1a598e8c03b6", - "0x67df3a6bb55d1a9b", - "0xf8e1a0e89a0e6d62", - "0x3ede8e86c0e4dfdd", - "0xd8befa2a92c3ff26", - "0x3e13839c33dfae35", - "0x8ba06ee1a9e3ab0a", - "0x7c9ef401225bf5f3", - "0x4b8ac462c655ceff", - "0x1feec82f659f9b5b", - "0xa041d35933716a17", - "0xabad1dc62c18c692", - "0x936b6b57f845b3f7", - "0xfbd1e711de6e6536", - "0xa6014cee1d92b9f0", - "0x8bd8fb8e3eabfa0", - "0xba8bf46a6a1b7a92", - "0xa2a4e0cb613e9f70", - "0xf77aa9d38589e6a7", - "0x4062ee9d1fe3a033", - "0xba2bc68979de97bf", - "0xbdaf7bfec356fb9a", - "0x18c3a4aa9f3c07ef", - "0x1dcbed5fbba0aa9d", - "0x81f5631f4cb93054", - "0x406b742b1184064e", - "0x9e1d337f94beb2e8", - "0x80456c83" - ], - [ - "0x80808080808051f8", - "0xb8b52a1f7ea08080", - "0x7e61781d2a5e06f2", - "0xc001b39cbb1985d0", - "0x66be391c1b432d93", - "0x3beca0808097599d", - "0x54112b4e9235e5e3", - "0xa1558e7687ac1dab", - "0x818b16e5a58051e1", - "0x80809b39735f0bf6", - "0x808080" - ], - [ - "0x74dc476820a043f8", - "0x4588278dd00c1b1a", - "0x5947737bd819d8f9", - "0x2ab85cdee25fb5af", - "0x736e49a0a172e69a", - "0x7473655420656469", - "0x656d616e20", - "0x0", - "0x2000000000" - ] - ] - } - ] + "rlp": "f90222a0ca9af842162c2f10e769a243aa745ede929cf98206bb183e302a101e3e019c20a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d4934794008b3b2f992c0e14edaa6e2c662bec549caa8df1a0f81abe8c49c18a9f92c80c845cb49b4d8836b4ba7cd1ccc27b9417d20f49dd84a0aa607a06ed3d59c859ad9f5b4967596b9c9063e79f55f2a234c1fd48139e0901a0cca536608a9cb66f17190fa32a3ca4367d63c3012c54adddebc79cfcf0f9ba6eb90100380000030902030082491421041000c110191209144540090015000080004f20401485122401020100040120112c1008000100020a8053200100f020003605998040202000248008b02b40088880502100502000408442082c02084251800203a802159c0a010824008800840446691000132e110030104000400090000403a401000022000020023ca500001840681810008210401080620810102284500c15028804201c068002000009c208c804001010a41846284003a0400800970a420004808146200190000151054a304011840012010001000c05510082014dc079080ab0020000300012080021c4800430642408030020000041821102400040401180834b90978401c9c38084011449fb846588e10c80a09de29047a9a9deb0726c8019b67a89187a82a0caa9b759dcd7652dcc3f3b1a4a880000000000000000849eeab617a0f8936b680f049c752859fc6a0ce219bd4fdadc5e510651d63d79cba1ae07e041", + "proof": { + "leaf_idx": 56764, + "mmr_path": [ + "0x7820b0b458097874650231724575c39596f8cf6a1335ce2233330fcabede16e", + "0x3b661872651dcea20deb66d413ca1fd514b6644960af0de245e6359386611ac", + "0x5532e2d5276789492907c4c962edcda5038d5950d9f18da2e959c2e9f8eeee5", + "0x7337bdc57f2abddce74536296f3764631e0cb66ba9d1b6564b9734df7a6956a", + "0x6d9ea890765cdf15556568782cbe2e7b63526c146d274f1d85fcb727dfc4ee2", + "0x0986528edebe7e63bedacf6820cc7a6e36285bd5b08ffdf7f789ebf5f4e1368", + "0x197c0e1f3f891cd367cac728f646334e33e5f9aa6fa7ca81c028c286c006ee0", + "0x14f522b5a62c9ecd4857b7bfeb87a1ca239ba3961278a6c1b9a291629794cfc" + ] + } + }, + { + "rlp": "f90221a0b7f094e0f422b08179bda8ffc4a39f70ddbcedf3ca97da18b3554f9cef2de544a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347943826539cbd8d68dcf119e80b994557b4278cec9fa0079ec684d2d5a368b4c732347e74a9f567599512cb2c76dd7565f72254a21bb1a074f97d7f829e0c561db1dcd5a53104f94dee424ee4223df5def0ef168e5820a5a0278d1f277c5d2e861170ba452273430751ade04e800a871f9f9d1e0eaaa6e42bb901001a0040000b208a002628d4a200040440001112004008000000100880884040004000a1001301080920000001006008000c010808080216000400000c0034050281000408012090000085000c0a001020080100116125020000010820400006042a00801c8a1c28000288000000014810800184050011600000400190800408e0128ed0020c11113c32200820080840011c2c0820100088430803108084540a29822805a0394a04020000600a20000000102c20020208084038a01000040200000001014a1000900821c0000b0200c004020000608420008452608041440970098abc0c20814044130421615a860420100640008000000042920816400100061080834b90a18401c9c38083c2247e846588e18480a03de2d394dd44563aa0284356f8abfdc3ecd33310a90fa2f388d4fa93ce7b4ef58800000000000000008499d829c7a033e61b00be1d13d28133e397204f40c311e3cb21e5fd5075c82bb174226bea0a", + "proof": { + "leaf_idx": 56744, + "mmr_path": [ + "0x5d5a2dda3cbbf479337844ba309a6df382d7253d42382eb979f95048d564420", + "0x2b5184b6be4480274c6b7447ac50c3e0494c332ecc788bbb58d095bfa2740b7", + "0x669a1da19287710e13292c78afa9d56d5831ad6d2086ff1bf4fea426413bcaf", + "0x747a4f9148cd1686f4325cdf57cf446f69731a4054bed737651f5043de36db5", + "0x2e7a5da17cea629e713d4a361f9006b882b65db10301db8fdb085477cc41fb3", + "0x2472a661f9fe54a7bae6da2735f322277e68016267c150ef1b50e19d01cdf6c", + "0x197c0e1f3f891cd367cac728f646334e33e5f9aa6fa7ca81c028c286c006ee0", + "0x14f522b5a62c9ecd4857b7bfeb87a1ca239ba3961278a6c1b9a291629794cfc" + ] + } + }, + { + "rlp": "f9023aa0ec9bfbfbff89eafaf3c9d356f442719b4bd56033e65b309918a5bcd098731412a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d4934794d9a5179f091d85051d3c982785efd1455cec8699a0ae1aaa2d9fe33d8070ee0791e72b3c25872bd628ffeaee2dadd250fe44c64940a0f99bf1fd890500ceeabff2edb90d916a9938aace569f9e38c4265139c589d42ba0a90c60aabec88c16f892583d9e4b9567991cb66a4e27e7313941ce81d859d7ebb901008c0820005900808002081420248205601ad090001005291c06d400208009682061008042440d0a052002400000a410401401090000004300022000388030018040150001a0b79213a02200188a80000220110000f084220024080a04408040204a240c0a0a34420c10c880288a00281900310c4a2001000000100a10e849084002600440004510002130955008ca5000080504b002089041191010220550089b874804801504800a0404840400c244001840a0100e2c040aa0040000974202180098a52202001200091003400348000000020013404a001548949e00cc31680882b10a04041a1158800a2026b48420040c0016b000000000c26d025000600a1080834b90938401c9c38083da07c5846588e0d099d883010d05846765746888676f312e32312e34856c696e7578a07d6a1b6f1b2fa36724e14d42a9351cc1ea93f8028853b47c863d9f2b850b4e7788000000000000000084965a2031a085e19d724e35259057b8d57d9b78e11e89cc8483ef7a869bf98db510c216c0c6", + "proof": { + "leaf_idx": 56771, + "mmr_path": [ + "0x20614bde82a6d92fe261904b6edd0ecad1a05c79a4b9664bb064f482ad78a32", + "0x5c55301d823be3f57409a7770ebd65ed6cc19675dfeca2498b355e90c331f96", + "0x2d2639dbb309b6d580b55ca876a0d4081dfb5799ac568b9637dd33da23a8033", + "0x7337bdc57f2abddce74536296f3764631e0cb66ba9d1b6564b9734df7a6956a", + "0x6d9ea890765cdf15556568782cbe2e7b63526c146d274f1d85fcb727dfc4ee2", + "0x0986528edebe7e63bedacf6820cc7a6e36285bd5b08ffdf7f789ebf5f4e1368", + "0x197c0e1f3f891cd367cac728f646334e33e5f9aa6fa7ca81c028c286c006ee0", + "0x14f522b5a62c9ecd4857b7bfeb87a1ca239ba3961278a6c1b9a291629794cfc" + ] + } + }, + { + "rlp": "f9023aa0e5650fc10f96f1a5cbe2f5d844842688bf7174e8f05bf9362dac3fe9684c0349a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347940000000000000000000000000000000000000000a019a07d5090099ecb297b6e2b8cbcda12f24c3ade1797300d9c8f786e2559ef69a015533d3aee5ef5e9dfcc19096c20a071fa855e94d60636c9aae800e7e955b22ca05636b56fd1153ab2344c5927803d72d24e8195dfb6dae88ac98516aa86966ff0b90100800820000d0000828208162004000840101002000008002002100002800c0020c0108100020100010000020800023040000108100800270045000001202405011041820000218000201340180c00010000400000008602082400884040880281280200080a00c800009800040200284810030400940000004040001200088480800010000008108020201100080050c000000400000080401c00102204501005120804001804800300000201200010205000a0400668004020900a20040202030080010202101044499041000004000000000080081010044000b80045207808089002640010211200043000c00420040000001020000100820002100100005480834b90908401c9c38083a0955f846588e0ac99d883010d04846765746888676f312e32302e34856c696e7578a0a7ee55080ba796034d5741a55be03a54991101ae4bab146ebbbbafa7dcd384d3880000000000000000849ff42916a02e263943513047c71e996e13f520779cedc904b0e2022626920f6446674b7bc5", + "proof": { + "leaf_idx": 56777, + "mmr_path": [ + "0x738e63af94890994c684498c34ef0915a08a0f3f90ff333649b5cd06ef4099b", + "0x32d42136617db2a6b6d0b93f2b472a7880d422f0bff16a82b7ef34e026da178", + "0x4a706ff64a99ff7210b4eb84c3cb833bcab69eaf94f54e733e06913860f4ffe", + "0x2866e0617b791220100c398f856e1402475e9eb57fb87a8c7373945bf3a427f", + "0x6d9ea890765cdf15556568782cbe2e7b63526c146d274f1d85fcb727dfc4ee2", + "0x0986528edebe7e63bedacf6820cc7a6e36285bd5b08ffdf7f789ebf5f4e1368", + "0x197c0e1f3f891cd367cac728f646334e33e5f9aa6fa7ca81c028c286c006ee0", + "0x14f522b5a62c9ecd4857b7bfeb87a1ca239ba3961278a6c1b9a291629794cfc" + ] + } + }, + { + "rlp": "f9023aa0f1e59f936b1ed9dd83e9dbab1c57c8ad2af24749c6e6131d5baa2d76c2ecc041a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d4934794f24a01ae29dec4629dfb4170647c4ed4efc392cda0044960500ad689da02fb9f57a57ccad88b338e318fd797e448f031b8d2da4a2ba0fe312a8da99b212eaa0b37d0886b53559c93d70bb9fde9e26e331fedd43c1d1ea05f763c4747666fb11c69f642934eb55e15116e8d6effb16f081fae3d244094c3b90100820000000a000020a20814a204000140009010000070681800100400842048224001801040010201000000600220104a049102400218030011408211182403280880200200a8a1050203401888004020004004005884120224000a49608002c2680321684a251a082cc840000600281108010610c4000200086002100010880000b00000010102022028095008106b00000201612088a0f04801106246500505120804011085810200002802010210001802a2581e08204a20c000010c022a1050900142300119a4055201000400000012006000000b0004c082820044846a48409c02001010001580002401808420200e00000400000902c20002420060081180834b90998401c9c36483825f3f846588e12499d883010b05846765746888676f312e32302e32856c696e7578a0c28384fd44db464321b504c3185e33639804bf976698ed811fd55632dc5891b6880000000000000000849d987011a085f2ffd15d9b1325f1620716cd49d45b5e0c26f5acd23345f5a896ee33cd9f1b", + "proof": { + "leaf_idx": 56761, + "mmr_path": [ + "0x03e97f40662aea914cc16ea98dcf8344ce398baf45f87e64f382049a348947b", + "0x1bbfbaa08673c3d30bcc7165eb57bcef61b7deb9f9e34446d4ed1bb5a39b01e", + "0x5532e2d5276789492907c4c962edcda5038d5950d9f18da2e959c2e9f8eeee5", + "0x7337bdc57f2abddce74536296f3764631e0cb66ba9d1b6564b9734df7a6956a", + "0x6d9ea890765cdf15556568782cbe2e7b63526c146d274f1d85fcb727dfc4ee2", + "0x0986528edebe7e63bedacf6820cc7a6e36285bd5b08ffdf7f789ebf5f4e1368", + "0x197c0e1f3f891cd367cac728f646334e33e5f9aa6fa7ca81c028c286c006ee0", + "0x14f522b5a62c9ecd4857b7bfeb87a1ca239ba3961278a6c1b9a291629794cfc" + ] + } + }, + { + "rlp": "f90221a0f15f86e58dccb3f39710b2d726770897bb93108c662fa850a48c6a5bb72436a1a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d4934794ea7e42c7c9262e6831bfa7be71d67aa5523e27bda07ded0f44bee590bcba7a9d930759f1866d807e2ba60620436a1bf3e35fb935c3a0437adb198e63a0e7762d91fc37a070392113d5aa969d985fb6c3b27f0627f345a089bfcc92bd1f7b30c3e01f4fb178e901ff6a564edb18f4b561ff4fcb785d6eabb901000000000009090008022d9c30048040421190800160200035101002018428082861008000440302051000024000041000000108064280822000000003082421090000040000a0800001034008080402000040010000840200240208c040840042080000080a02000008c801100800284108050d200000000102000410040080002020041003c11002203929000830480000000600000c80410842102244500105160884049045810200005003000000201101a2001e0a000a2020100244820a1008810112020110010150410810000080000000200000c024606082404480680800b122001010001802002008910420000400400000000100820002440040003180834b908d8401c9c38083760ca7846588e07080a07242bdfb774d08cb5f757e9ffead40ab760ce73a86ae289e787e1394c6dae873880000000000000000849ff4f4d0a03309f0b8fe007a97341baf53660e8f8c64804bb9aa3f1de89fccd0f75ed7420e", + "proof": { + "leaf_idx": 56783, + "mmr_path": [ + "0x5fcdb2c1c95e27cd52e91d98e224e20d2b7ba6ad69bdf959048c6c4ce864e05", + "0x468622733eeeb16dde8b60eb0d9a247eefd7f6ec8c23cdf43ed78c9c0239caa", + "0x1356a8540da67e7e086e004aa06425f4a130f9ee67d0c781702ccc637655df9", + "0x2866e0617b791220100c398f856e1402475e9eb57fb87a8c7373945bf3a427f", + "0x6d9ea890765cdf15556568782cbe2e7b63526c146d274f1d85fcb727dfc4ee2", + "0x0986528edebe7e63bedacf6820cc7a6e36285bd5b08ffdf7f789ebf5f4e1368", + "0x197c0e1f3f891cd367cac728f646334e33e5f9aa6fa7ca81c028c286c006ee0", + "0x14f522b5a62c9ecd4857b7bfeb87a1ca239ba3961278a6c1b9a291629794cfc" + ] + } + }, + { + "rlp": "f9023aa0f28778f0e4bab6742ab926c3c866305f4c439080917e71d92cb2604ec56cfbdaa01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d4934794c6e2459991bfe27cca6d86722f35da23a1e4cb97a0b3e5fe06e88c122317259b80b9ed50955994537ddbca4fc8d7198ca233d03a0ea00b388f30c88ac6c63af6fcf6daa80d0790ed57ef3ffc570f9ac53be0523f285ca0ada5e90a526487d41f87f2ea43f104c29d75711b598f4ce90e6c7b3ea3809a36b90100b8a442190901008002a8b6229d4840404830520004270090921c2224856844306500c549a2010f894403900002e090051241898218081a4407b0a061002685130048a2080833ba00001b58588c4140203044808001c5270a64204ac251c00a68682688090a056880408840ac84027a5180052603410116c848420917804944008640096e9202018830a029000d524d950420a0b4b806a85b0848106a26584225120a8400d04d8b0a204400d212217e021481a9981e88226b6200000504060a414490136294219984055889680040740018007941001001146170807a44ed6a08399e12346a126513140531d0b50c7044164002d32048010082080a468048001580834b90968401c9c38083ee3a60846588e10099d883010b05846765746888676f312e32302e32856c696e7578a027c78d62f6b69fa063215ee5192ab0a85aa3136c5fb9aaf343458af98be7f413880000000000000000849e1c1c45a0e56bf5d6261ddb17d3a73ae968439477a89941f65463905e9d913657da7a4a4a", + "proof": { + "leaf_idx": 56765, + "mmr_path": [ + "0x1254446d8664b0b5a9e8a08d178e8e8e15f235e8b7b892f07b5afc0941474e3", + "0x3b661872651dcea20deb66d413ca1fd514b6644960af0de245e6359386611ac", + "0x5532e2d5276789492907c4c962edcda5038d5950d9f18da2e959c2e9f8eeee5", + "0x7337bdc57f2abddce74536296f3764631e0cb66ba9d1b6564b9734df7a6956a", + "0x6d9ea890765cdf15556568782cbe2e7b63526c146d274f1d85fcb727dfc4ee2", + "0x0986528edebe7e63bedacf6820cc7a6e36285bd5b08ffdf7f789ebf5f4e1368", + "0x197c0e1f3f891cd367cac728f646334e33e5f9aa6fa7ca81c028c286c006ee0", + "0x14f522b5a62c9ecd4857b7bfeb87a1ca239ba3961278a6c1b9a291629794cfc" + ] + } + }, + { + "rlp": "f9022ba09113d0094deb64c07faae83b19c1363037d18b527ac4dcef57989b284859f298a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d4934794388ea662ef2c223ec0b047d41bf3c0f362142ad5a0214e09510e7d0002ef28fb8a6abc1f289526f449a73e3239ffa16dd6fecb2920a0163eab2ce0b8d51b9d962fa84e5a5105b9ab5e5b89e16bb390c7cb8fd7076745a01abf48222ad284e051089b4a3fbace62372f944feab44959d49ad443fecadeb4b901006c010423194005020088166084048a01009042040404000000d404028080087000008010604242258402a8000009340000010d000000420000008541102601000010084000218020101310580e090000044390104084421220004ad0529042100802000a0a0000800ad800051400684184010400b0201000006010118120092001a040282e5140a82820000008005900000000020008aa40080414a2a45200010e08840050a58012040000810009040010a0a0080e28002a6010092004020201008021022001110e05902321000000600922008000150004008082005440683901b20214061020100004500092300844064000a0200001068208824c0050604480834b90928401c9c38083923eb2846588e0c48a4e65746865726d696e64a053ab3e023ee76e4f828d0a7c846bf736696c7cb0c444b0c08ebd7326bf8ebb67880000000000000000849d755119a0509aacc99b880dc50f1c8e84e993a011a18960971b8efaae5c50481f12bf7d95", + "proof": { + "leaf_idx": 56772, + "mmr_path": [ + "0x0aa2985337db44e94d7147873d5e2395297983dd8a7f10a4c652bf5f37df984", + "0x5c55301d823be3f57409a7770ebd65ed6cc19675dfeca2498b355e90c331f96", + "0x2d2639dbb309b6d580b55ca876a0d4081dfb5799ac568b9637dd33da23a8033", + "0x7337bdc57f2abddce74536296f3764631e0cb66ba9d1b6564b9734df7a6956a", + "0x6d9ea890765cdf15556568782cbe2e7b63526c146d274f1d85fcb727dfc4ee2", + "0x0986528edebe7e63bedacf6820cc7a6e36285bd5b08ffdf7f789ebf5f4e1368", + "0x197c0e1f3f891cd367cac728f646334e33e5f9aa6fa7ca81c028c286c006ee0", + "0x14f522b5a62c9ecd4857b7bfeb87a1ca239ba3961278a6c1b9a291629794cfc" + ] + } + }, + { + "rlp": "f90240a0a5335bc6b1f44e6623b3f1c4d2c809741f54619735459d6f58ad9f74bc72bcc6a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347941e2cd78882b12d3954a049fd82ffd691565dc0a5a05f6dfd5b402f20ab61dd96cc4f55e4df679076a23bb48fe6ad74b25d4c28d9f9a0e872502a606650b234982666d6dc13e18bda56779bd3bcf299647ad4cd766704a01349bb3d90fbda27ac44907a2eb1db118506caf06054266955d226e76d8cedc0b90100004c0040098c20c2022854b5241aa860021361000324081a00148030b000c0204110800004011141829000200b2418c12041000008c107050021a051086d0120d600504020209022882310180e8044140012c40041c41200280208225190eb400890280a0a4c220228880882810029480011040cd008804400e002100000212404421020000501002d20194108145a00082830080840c24008401023845003211208a6e85004a1020006a610018024201281a8891618000020c00f41260282084282054202031d08815207508018100000006907201201054002c1485d20680804b02a040018409001102800d0842a060004141025028000ab2b0e100120405080834b909d8401c9c38083bb9112846588e1549f496c6c756d696e61746520446d6f63726174697a6520447374726962757465a096fbc9ea86ee7f84a416f85e579007778a9742a6497cb10e049e0c6c635df970880000000000000000849db2f260a048003bf2fe90161e7bfd7ac139e75a7b97862fb95a0ee7a9f735d0db802a73d6", + "proof": { + "leaf_idx": 56751, + "mmr_path": [ + "0x465bf6481739bfde28b925fc0750156ec02b991c322aa0d4557875ece00a6fc", + "0x1510705a0a54387d56649073bafd7cf7ec531074d4669f0f667848ee86e44a6", + "0x4ab2c25a61e60e942e2202ac5670d7d66d1664d265668812fd686811e5e4a83", + "0x747a4f9148cd1686f4325cdf57cf446f69731a4054bed737651f5043de36db5", + "0x2e7a5da17cea629e713d4a361f9006b882b65db10301db8fdb085477cc41fb3", + "0x2472a661f9fe54a7bae6da2735f322277e68016267c150ef1b50e19d01cdf6c", + "0x197c0e1f3f891cd367cac728f646334e33e5f9aa6fa7ca81c028c286c006ee0", + "0x14f522b5a62c9ecd4857b7bfeb87a1ca239ba3961278a6c1b9a291629794cfc" + ] + } + }, + { + "rlp": "f90222a055043ef495f27059a681f7da901ae27afb396126ea107e2c3a0efa6f58437517a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347943826539cbd8d68dcf119e80b994557b4278cec9fa043c37215858084732eca058f8c0d8996497d27c723a13acb88df34bf549ec827a04e8a06d38b1e6c31626294049e039347bb2aec6b4d133aeea864a17dff9d45a1a0cd793b3918d0cae85a36e00adbe73e6bd5be37237009bdfcef0413994151bfc1b90100404a000c090889000608142c241209ca405303882165401008168a04880803a0c010c504428180210a8602801022114804210a00424006340021036980a401001800006004228d03000240380ca14022001000002884470225090807608006420a02c00a0a00008c048a408618106a000923244880088000004406104800840001044000001918322ef2095508905800000903340000a0400810102205d102251348048910d4850344040884190000081000a89016082c01b04400014502024840c90512001010800d10034400400680200000060002848c4a348101548068080496020000105011000426c090043a0e0184070000140804aa9702180cb0303080834b90918401c9c38084010e271e846588e0b880a01448ec1cd126668e957c5e09418dc350c6b1b3276ca50bd7d7f225b59cf167558800000000000000008499fccb35a0ae3ab359b56f15f6f6be1d41b36066b260c073b6e22d68e8e3408863ba71b6d7", + "proof": { + "leaf_idx": 56776, + "mmr_path": [ + "0x4b5baa9aecf921522745f67ea3901956ef3df99748c9e7239e0b6e7a7f87355", + "0x32d42136617db2a6b6d0b93f2b472a7880d422f0bff16a82b7ef34e026da178", + "0x4a706ff64a99ff7210b4eb84c3cb833bcab69eaf94f54e733e06913860f4ffe", + "0x2866e0617b791220100c398f856e1402475e9eb57fb87a8c7373945bf3a427f", + "0x6d9ea890765cdf15556568782cbe2e7b63526c146d274f1d85fcb727dfc4ee2", + "0x0986528edebe7e63bedacf6820cc7a6e36285bd5b08ffdf7f789ebf5f4e1368", + "0x197c0e1f3f891cd367cac728f646334e33e5f9aa6fa7ca81c028c286c006ee0", + "0x14f522b5a62c9ecd4857b7bfeb87a1ca239ba3961278a6c1b9a291629794cfc" + ] + } + }, + { + "rlp": "f9023ba096c80b8e05803aab0712789938329d3b8a4dcea3da31e1f858b5525a2ea3393aa01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d4934794c6e2459991bfe27cca6d86722f35da23a1e4cb97a0f4b88fbaa5312399c8534f74389e5843fce706f4f626fd942a72e8034da1c66ba04df9e99b45043e641a9c752462b4601a4b8ae7ec20a49cd65c202416ddc20706a0d1380e2af3db1e5ad40175f27c084705c9bf794b234a61b1191236b18859c74eb90100f2120001aa1078040a39d522545ae4f0601418023082741243144211d160b23ae2dab4ea204ba6011aaf02b513b495e3e9752c5014eb133d3000575c40ae2b0370da404a04e2a2603313496d08a1c4b98b10089208c4b6d0240b5aaef5b20a026a8e9c8a1b298b047caaa15491523887cabbcd9041049602286f0c95030588c19be00561015014482aa40c09284c61e09b3642c15a10cb61aa2258b28658a645c608052014a6a28688504ae276a8d5023c60a02c8e29690a60a1a2c3c72a0646518081a2870913230df10392098ce2871a6050311080105f4020acb24d046c094a990a6808302912480129acca5c221f040481220884042e93028a206274943c80834b90a08401c9c380840173d001846588e17899d883010b05846765746888676f312e32302e32856c696e7578a03796340bfbf9d12a2fdac43a4d16c599c528f8af72d12c0c661fb86868222fae880000000000000000848eb477bba0e8add4f2cdae4ac3ea7d5011d2c50be815055de2bcaf56266bc7d2ad32fc2425", + "proof": { + "leaf_idx": 56745, + "mmr_path": [ + "0x6085397acd29acd5cd43e39819f011f289de7e5d79323e1e72e6e51959003b7", + "0x2b5184b6be4480274c6b7447ac50c3e0494c332ecc788bbb58d095bfa2740b7", + "0x669a1da19287710e13292c78afa9d56d5831ad6d2086ff1bf4fea426413bcaf", + "0x747a4f9148cd1686f4325cdf57cf446f69731a4054bed737651f5043de36db5", + "0x2e7a5da17cea629e713d4a361f9006b882b65db10301db8fdb085477cc41fb3", + "0x2472a661f9fe54a7bae6da2735f322277e68016267c150ef1b50e19d01cdf6c", + "0x197c0e1f3f891cd367cac728f646334e33e5f9aa6fa7ca81c028c286c006ee0", + "0x14f522b5a62c9ecd4857b7bfeb87a1ca239ba3961278a6c1b9a291629794cfc" + ] + } + }, + { + "rlp": "f9023aa0e51734aab94ff68aa9b5b4a6b3f40ec3d3dbcbf188f4db4cb544781f0f669d09a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347940000000000000000000000000000000000000000a00a52866480558f9ed6bba483d1525143a878a93532b017ea5b0b542d150ee06ea0e4318c1e17b44e34a2076148fe12a9d662123d440cc255821f3bf5e5871f79dea0526e1dd970659c9cc5d657805d74a155de8dc95421699400048f605b312834a4b901008100212009010044020a9423a416c96200d94600400000001b120100d0880c226900908868090a010000000000243122410108000213520004000000023233011001a00020a1c00101028a190e280040001400089984920430020920408402022802000a0a20420608c810140e2c79010801062000021000404022508002050300202180000114002430218208005800040004884088814008005022c4d100a1020814061a04860218804020000010a018c0a4080e08000a2204402c04060219009021020100100a031205000000422000400180001e020570809200e48428082090020814300010d4002000910423c28c01000000048004c3004a500540621080834b90888401c9c38083916fd9846588e03499d883010d04846765746888676f312e32302e34856c696e7578a0d9624723cecb96814b85be66e398ff439d5bc536a1aca4db162c8af3991dea56880000000000000000849d8cc904a064af51707dccc467a14a48c1f6d26570bbdbf0c4b1a05d05d978d69650b44029", + "proof": { + "leaf_idx": 56793, + "mmr_path": [ + "0x6adbc04927141c6e56dab4a3cf776804704cc3e25f566a920aa61a48fe53b91", + "0x6e2962423bc116df450d55bdbfe86d7b0d683bd9eccc918a427fb1878e0a3dc", + "0x68c79a5b751a27a0eea026356c81602c1a8d2f40cb0a119e3aa02db02254015", + "0x0ccfbba1966a030efca79b702bec3afd99554c73bca5be56e31ac9e0e87021d", + "0x19afd1b94b54cc80a09e4e5e2622401e71092b95427c854fe2d58823da87c93", + "0x0986528edebe7e63bedacf6820cc7a6e36285bd5b08ffdf7f789ebf5f4e1368", + "0x197c0e1f3f891cd367cac728f646334e33e5f9aa6fa7ca81c028c286c006ee0", + "0x14f522b5a62c9ecd4857b7bfeb87a1ca239ba3961278a6c1b9a291629794cfc" + ] + } + }, + { + "rlp": "f9023aa067c536155aed987803843abb9a7bd42681e279764233d5e2adebc4dcfb7ba335a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347949b7e335088762ad8061c04d08c37902abc8acb87a05a921144e3072a722800de984bd7a67b6a4eb14817ec96bb30c24cc0b0cda2dfa0bfc09ec689997ed1459945240681ac32cf2067c1ec10e12169923e73f6e67091a04d9fac40a673422272fafe90a66a0745a46d5e3c31deb35abbb0f88d7e6c113bb901000000000928000b0086889521041100c901911209502040100510738480000220401084503201000188042200d024100000016800000002202000000900a60502322000000023801000035408080400000010000420854a9c240009c4408000c2280218088b010a4080c980040428694000170e0100000000100818180c0001a0012800082211000064a5090008105b00008102001208c140091210228650882512080410580581021001000a008100001000a0801608002a2282420005020a2980820502000010000150010094408002280041100200010d52208208c481e84842900ab40010005300002020882520480000800004022040830802500002103880834b90a28401c9c38083b073a1846588e19099d883010d04846765746888676f312e32312e33856c696e7578a0baf41e669733172313849b34de0c09da351c0cf29dd7d94364cc2a924a21101f8800000000000000008496ecf4a9a0090dacbb66d1d628a352db1386f2a99dc51eef759f7010262800fe7c62197404", + "proof": { + "leaf_idx": 56740, + "mmr_path": [ + "0x2d8115d6f70372e12dcaf378992a2d5fd1d3188b1b8dadafbb283de952f0530", + "0x169b2e7a353ef7fc040aad6f46c21bb3bc9f0ac70d4f1fe1df75003a73c8ce0", + "0x5c40fce3fdece7721198e5b2c6a6748ffcfb9a339437a66ca04f0401bbf5b80", + "0x2d7285179432c108172787974fd9e1760d01f9cd2929b040db3a69f879a2f92", + "0x2e7a5da17cea629e713d4a361f9006b882b65db10301db8fdb085477cc41fb3", + "0x2472a661f9fe54a7bae6da2735f322277e68016267c150ef1b50e19d01cdf6c", + "0x197c0e1f3f891cd367cac728f646334e33e5f9aa6fa7ca81c028c286c006ee0", + "0x14f522b5a62c9ecd4857b7bfeb87a1ca239ba3961278a6c1b9a291629794cfc" + ] + } + }, + { + "rlp": "f90221a02f3ecd63751b27b608b26851fbc4dd99ab87ec9cdd6103cbeeec51abe38c28dfa01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d4934794ea7e42c7c9262e6831bfa7be71d67aa5523e27bda073245e2eef964e441ebb75ad5d435fbdc81d445473e6fc093f2b746e8837376ba0862d73d190dfc3356ef813bd7b1f8acc24d5849adac204cb5b66ed52d184d395a033010e58444be84eefa424d4c2e513c67da5338b7eca8237021c2ef104cd345db9010004240208180400000208543004044a61409009002004080008940220800228e041008000420108f10802001000001084000108c202800a800020814080a405004880a0000021808200030008080002001805008040b40b102108088040c021022824000b4a08800000c8002400023a1800150780c418000000240010040008c400a00610420541022020000408004a0000000106c81880440800107384d10021030806029004a406000400522284000010a4a01106084d0a20000c038c2a024142c811220200930081d10108010440242401780044080384520092014580680808900a400012105222002424808420242000800000402006c704024040a0543180834b90988401c9511183a7aa98846588e11880a0ef0237977cec3e6a00e2d1d3047c582d5a6055e67a9524a71a6fb17f653bf35688000000000000000084a3080319a0b0accc6e51bb3f9d66251f199fcbc4599eecfc964d54ca23f549139322999313", + "proof": { + "leaf_idx": 56762, + "mmr_path": [ + "0x3c32e9feab36626c77ef21084d72c109e0245c48f03fcb77382f1300c96a111", + "0x1bbfbaa08673c3d30bcc7165eb57bcef61b7deb9f9e34446d4ed1bb5a39b01e", + "0x5532e2d5276789492907c4c962edcda5038d5950d9f18da2e959c2e9f8eeee5", + "0x7337bdc57f2abddce74536296f3764631e0cb66ba9d1b6564b9734df7a6956a", + "0x6d9ea890765cdf15556568782cbe2e7b63526c146d274f1d85fcb727dfc4ee2", + "0x0986528edebe7e63bedacf6820cc7a6e36285bd5b08ffdf7f789ebf5f4e1368", + "0x197c0e1f3f891cd367cac728f646334e33e5f9aa6fa7ca81c028c286c006ee0", + "0x14f522b5a62c9ecd4857b7bfeb87a1ca239ba3961278a6c1b9a291629794cfc" + ] + } + }, + { + "rlp": "f9023ba0c4538101ee25506cd2879e2025a77e542078affe52dafa051ed9a8130f881edaa01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d4934794d9a5179f091d85051d3c982785efd1455cec8699a0f52abb380b69753edd9a1269687628f5b6fc1663c87e03b35c7b6c0a27c7798ba02f8fdd1e30c764ef539c7b0b3ffb8f4a571a18c9fbec90e9acdb7b5544f2665ca008aa96f25da25a16e6dd04c8195559d7b4bd93f755b2e08b5151950e185bd7f3b90100990a47ca396a1041ae0f16210eb2096d0831061430a8a6187d10840b90f7bd784142a1332ecd4ae32fb90823a1057875161f5da404415324b9a49ccb01b5e341c08c183e70e1db11180f30388ae0a45c2c871390f9e47231304b4d7541ab06ebeb519459fab3c3a60ac899259c22eb1108198f27882ac9544c484257a730001c1308658e211b12e064e6ab570870c8201474d7ba46a3a9e6285470aae4d361a132dd34247b86a512cc9041eb030e4408b994a08b5f2c8671b6093b65cc46831a88b5414a2202308f8dd647250c175a9148c0f9e0104fe6156ea79900cef8e9d906b42e3f37191818a0d4600983c630372e53c87911085fe6eb47aed1b360e23a80834b909c8401c9c3808401a207b0846588e14899d883010d05846765746888676f312e32312e34856c696e7578a000d47b1fb12ede684601c0bb267585f7684f26b03e5f656c504b8d91abbc0b23880000000000000000848eef1541a03298afedaac7de94ff461a277ab6d84169a271af7b67368951f70f293a7c6405", + "proof": { + "leaf_idx": 56752, + "mmr_path": [ + "0x4279f0e64b53982455ed68bbc8a633c6894522f6bbdfe157899375bbd1b668c", + "0x1510705a0a54387d56649073bafd7cf7ec531074d4669f0f667848ee86e44a6", + "0x4ab2c25a61e60e942e2202ac5670d7d66d1664d265668812fd686811e5e4a83", + "0x747a4f9148cd1686f4325cdf57cf446f69731a4054bed737651f5043de36db5", + "0x2e7a5da17cea629e713d4a361f9006b882b65db10301db8fdb085477cc41fb3", + "0x2472a661f9fe54a7bae6da2735f322277e68016267c150ef1b50e19d01cdf6c", + "0x197c0e1f3f891cd367cac728f646334e33e5f9aa6fa7ca81c028c286c006ee0", + "0x14f522b5a62c9ecd4857b7bfeb87a1ca239ba3961278a6c1b9a291629794cfc" + ] + } + }, + { + "rlp": "f9023aa08d2c07e3dd9929d8091ed958abed4a7c42ab15acf7c69f3936a351a18c3462d4a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d4934794c6e2459991bfe27cca6d86722f35da23a1e4cb97a0979b0601cf12f072dac10dcbd30e2896f37ef1e4a2968c61466d637c2059fa1ba0e74187aa3d124ec75192e4e3fd48a71925552b07957d840c53f35a31d5e0a87aa0df170e3ee75603e09b7407f4c2d19ba69acb695ffec421400fe68cd4b82befe3b901003000600818088000020c146904948b0a6091040010a4201000841000808808620008a1006010044508008002040c1401000102802000422082000001082401096001000081238000881a400808000002021020100a84421024a2080045800340094030081a015a0000c8100018c42b108021840000010000004008190070032052600092120110002410090008da4010100780a0094800018811102286510085b20844801084810280180000040944011401a0401628200a224020100500020000802122008210008510114036000088000001d0002880041200ee004429694c08900b000830001000000400806000c4082100100004a400802402c00000090080834b909e8401c9c3808366cd40846588e16099d883010b05846765746888676f312e32302e32856c696e7578a0781bce077c1ac7e35adaf2d957b60d7f5d6a260f43742d0d8f0eaf123f84461b880000000000000000849a240898a05f8e081ed925e695fb0324ee55899c5c5f7f2d2ce0597550b6fb7e5c94c033de", + "proof": { + "leaf_idx": 56748, + "mmr_path": [ + "0x4f75ad136e31467cc463c5c704514df148f6c031b60da83396292773e8a4529", + "0x579ae063fde46b22bbfe5d47944e18c90cd0a6f6f6b569c8831712093791dec", + "0x669a1da19287710e13292c78afa9d56d5831ad6d2086ff1bf4fea426413bcaf", + "0x747a4f9148cd1686f4325cdf57cf446f69731a4054bed737651f5043de36db5", + "0x2e7a5da17cea629e713d4a361f9006b882b65db10301db8fdb085477cc41fb3", + "0x2472a661f9fe54a7bae6da2735f322277e68016267c150ef1b50e19d01cdf6c", + "0x197c0e1f3f891cd367cac728f646334e33e5f9aa6fa7ca81c028c286c006ee0", + "0x14f522b5a62c9ecd4857b7bfeb87a1ca239ba3961278a6c1b9a291629794cfc" + ] + } + }, + { + "rlp": "f9023ba0716a2f539f0c8a242bda3fce173f5d578853f3b064295ebfa95ad9716d936f32a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347949a6034c84cd431409ac1a35278c7da36ffda53e5a085a165587dae6c8ca7e680a8301b474d7c0f5dcd1e158339e790e1e39aca7a6aa043e32fc32e9cf78eb2696d90bb897470151e16bb57715e2d3a1b659d23a5d01ca007f4025e56edaefdbc0a8dce13d3dc24500d2d0720172bd616e476571454b195b901008ccc553aae5c276842cd56685412b57d08f0011810eb4e885c989ca296980d2ac01bb713558102e501525e110134328b6119688207055b950979960372766d46821913f582b38cc124b20a9e8a610656380028a0dbc4529a389429034192a012191a508f1b30621470e854b40c67ec2412350fa8e20f924d3c0e8a1a32298c3858e2a9a3634b4887b93a10c049e0ee100469484003bb904818bc5822c5d485237f0956cb1597c64a6cd2d7a477f192e45a51b858a648880a20429a1556eaa69408dc45820a68982c4393c19abb2065bea404a815c06ec5546a988f00e6f02c2e9db8079abc990cf08b1a2124cd54304cac8142543981a99edfd98b402b21301180834b90958401c9c3808401971a40846588e0e899d883010d05846765746888676f312e32312e34856c696e7578a0b6fcf34245e71903a8f2875957a0602c1f8e8d9d610c51a598cb23e741e18591880000000000000000849015eb93a0ef9e8c23eb3cc98d62f41bcdb51edf9b9cee9d74c4ecc21e50da3445014e9a24", + "proof": { + "leaf_idx": 56768, + "mmr_path": [ + "0x2528347ee79fbdc22d07104ab2de072390e954f12b59b6be3e8f416de84f4e4", + "0x0d084fca33c515832238f76ba0c4f77e7c4dd087441a0441cc8a3a7fbebee04", + "0x2d2639dbb309b6d580b55ca876a0d4081dfb5799ac568b9637dd33da23a8033", + "0x7337bdc57f2abddce74536296f3764631e0cb66ba9d1b6564b9734df7a6956a", + "0x6d9ea890765cdf15556568782cbe2e7b63526c146d274f1d85fcb727dfc4ee2", + "0x0986528edebe7e63bedacf6820cc7a6e36285bd5b08ffdf7f789ebf5f4e1368", + "0x197c0e1f3f891cd367cac728f646334e33e5f9aa6fa7ca81c028c286c006ee0", + "0x14f522b5a62c9ecd4857b7bfeb87a1ca239ba3961278a6c1b9a291629794cfc" + ] + } + }, + { + "rlp": "f90221a099bd24b6956f5c9d3fe1605b1f1fad5ac7779ff2334deda0ab90ba23e3ee2d2ea01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d4934794ea7e42c7c9262e6831bfa7be71d67aa5523e27bda087ef78ae981b3418108603d81c57312561c624c692ce3c686cbb24e3809c9175a033ef91fd4c6ae55f40b1852c6ede664ef3fe06f9f5600a360f5371dd4b2188daa00bbd64ff33a43ee35624ed25932c80c585c70a64452e420de0ff2536fc31f9f7b90100440f800a680812c0828836614c180041009e110100a420102692d402942800306041800348150b6102071b1272b01c000805c840002483040421000890240101f20082a000a39010208b451d2904580021404490c8d44a0c641948a240a012c64800950a1a0b700404c99095040e281100114c002808c80008700210801800a240208400011340e430201960485858181a2101c00048c040181014a20450d805122906205407b502d08c224a118b00009004a8031f28400bb090250146420a2c00880542922b5084895051a02c0890405840208122080115430083664c81f91926902a0400121019c8102000804438168480155010018040a2010b50c060103880834b909f8401c9c38083da647b846588e16c80a065b40922725c03aac2ed59edf8bf1313a6f7bd0b0602465a073bb9e8db89cfa9880000000000000000848f86f3d4a0c5112e7c696277adc7a983cf0131073ec457ea05a977a84a442a5ae4d144552d", + "proof": { + "leaf_idx": 56747, + "mmr_path": [ + "0x0dbf298346ae5e99768d16d70fcd8b8d6c200b98af546a35cab5225d9819c26", + "0x579ae063fde46b22bbfe5d47944e18c90cd0a6f6f6b569c8831712093791dec", + "0x669a1da19287710e13292c78afa9d56d5831ad6d2086ff1bf4fea426413bcaf", + "0x747a4f9148cd1686f4325cdf57cf446f69731a4054bed737651f5043de36db5", + "0x2e7a5da17cea629e713d4a361f9006b882b65db10301db8fdb085477cc41fb3", + "0x2472a661f9fe54a7bae6da2735f322277e68016267c150ef1b50e19d01cdf6c", + "0x197c0e1f3f891cd367cac728f646334e33e5f9aa6fa7ca81c028c286c006ee0", + "0x14f522b5a62c9ecd4857b7bfeb87a1ca239ba3961278a6c1b9a291629794cfc" + ] + } + }, + { + "rlp": "f9023aa05208e25c2c580286fccf2af5513b6f293de2aa4ac618b3877791f3674a318f40a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d4934794c6e2459991bfe27cca6d86722f35da23a1e4cb97a0cc7d529d1335046f0772b49c5a0694cb26ac8ca8c09040369dc3aad6379528c5a0ec3eb4e86933d91d836425a8fe00bad14c6231bbea7ef98d822b1f65d9d5ad6ea02bcfe7572537a3f6f60f13df785b52005cceeda82cb51aabd3c2d0f73f85cc7eb901002421a0000910000206a816208c11044988b044080e74029002940420c0410e206c50c34240290a310200084400085404000504000a801220111880280026810002800e380830808020134219080841202440004490c54200650008d2448002424a20040a0a80800008c8401400002a0188010c0780009640004600108202100410200518428140ca2028891008584c1000200010010888480812116204510005168a048254048312002001c2084010001860a0901e08830a2040810184021200288121020400980401f009000208000000e0000180100014e0209a024cc86908029056010410401040806451d40428860500020200a0000082000a410140401780834b909a8401c9c38083b742b0846588e13099d883010b05846765746888676f312e32302e32856c696e7578a06dae185ba8b03598828284bc473eb72783e3c27e3a80ffdf3f1484dadf72867188000000000000000084951dee4ea010ac60e5d1385d10370a0ad81b6b2f4ab1b73d5761dab4e141892a31a2417ae1", + "proof": { + "leaf_idx": 56755, + "mmr_path": [ + "0x6854c462b7f2ae24327669873b5e69b924987a56b066e7c8a56047648a0442c", + "0x46effc3b0c975ec767d5a3195f8944cf9b2df4982ca5f4f922388bc57d1ffdb", + "0x4ab2c25a61e60e942e2202ac5670d7d66d1664d265668812fd686811e5e4a83", + "0x747a4f9148cd1686f4325cdf57cf446f69731a4054bed737651f5043de36db5", + "0x2e7a5da17cea629e713d4a361f9006b882b65db10301db8fdb085477cc41fb3", + "0x2472a661f9fe54a7bae6da2735f322277e68016267c150ef1b50e19d01cdf6c", + "0x197c0e1f3f891cd367cac728f646334e33e5f9aa6fa7ca81c028c286c006ee0", + "0x14f522b5a62c9ecd4857b7bfeb87a1ca239ba3961278a6c1b9a291629794cfc" + ] + } + }, + { + "rlp": "f9023aa070b6670e6f18f04a5ba3425f66b24c221dea670997a0df45a7d20c3db4ad4325a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d4934794670b24610df99b1685aeac0dfd5307b92e0cf4d7a0d2756ae5fc79f9d03ee0ceca084368dfcec5f8744db08f569b7467260e4f3d42a047000eddfa156473817de4470c4c2ebbe9a7b6af92c16916005aab9345bf47cca09b97362e1195c738d6c673c279ec60dcf75c77be0686fe2ff932e1bd6d4cee6eb90100024901003800040282083c20041990419a9000458024043008144000802208b06200810240050a9100020000002014c00801085022020a2009280000802401378300024009208002a073c408090100800404802040851b1eb5080810758228420c22288c1a01220000cac0004048284180910c0a30010000000027131080042002200438020d100a2421090008504800880801149548804048005023055081b5128806285006e112000420062200050010c0a4511e09050b3080c45004226268408a21464000108005d001204410c804100190440000020640d1a20144e86d0c08900a0120363010080020008204300417101000200000488208024208e0007980834b909b8401c9c38083c5ce4d846588e13c994e65746865726d696e642d72656c656173652d312e32342e30a08621a65db00bfa79edf921ee2f8e114101568b9417a4b716299b67ef6d11a2db880000000000000000849166d08ea01ce2950f39e6557d4d70d5fbc8947393148d5c9e527f5e9ee6e2e1d390b04ea4", + "proof": { + "leaf_idx": 56754, + "mmr_path": [ + "0x07e259e398ac250f473eacf3a9240002acfd9f336bb96d66d8c9531498f55aa", + "0x46effc3b0c975ec767d5a3195f8944cf9b2df4982ca5f4f922388bc57d1ffdb", + "0x4ab2c25a61e60e942e2202ac5670d7d66d1664d265668812fd686811e5e4a83", + "0x747a4f9148cd1686f4325cdf57cf446f69731a4054bed737651f5043de36db5", + "0x2e7a5da17cea629e713d4a361f9006b882b65db10301db8fdb085477cc41fb3", + "0x2472a661f9fe54a7bae6da2735f322277e68016267c150ef1b50e19d01cdf6c", + "0x197c0e1f3f891cd367cac728f646334e33e5f9aa6fa7ca81c028c286c006ee0", + "0x14f522b5a62c9ecd4857b7bfeb87a1ca239ba3961278a6c1b9a291629794cfc" + ] + } + }, + { + "rlp": "f9023ba06263086dd6d9ab29bcf412e2661f167083425ebcfc640603298d8f0679f6a4aaa01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d4934794ff58d746a67c2e42bcc07d6b3f58406e8837e883a0acdbc0ab64e7ab93515481b2c64324fc0330551787ea634d54076b93b0686fa9a01c47144c6e3b446a8d14138970d6d9824614c4f2c3dc26ef5d2da08a59541ff3a044c4c416a63b6bbd9c19853cde2f61745221ab71e1c5edd9827ed2698190a08eb901008840000608000040001c14608c0002600002010404049020204001009000006801108180545000e18708010104081000480100180040422400000010102421009002100200008082240300081800200284430450008402026401a86042880a010800800a8ac90020028840005000a80041350400002010400060001224100720014050001012100060200000088880100001082000000808000014a284500001420a0080500684020420008000000410100488080604010020000b0104000324008002020000100201d00349004018002020008120003405002081004464691800900200035020101800000040400c00307005200000000ca00602300040040080834b90898401c9c38083688c7a846588e0409a476f65726c69205365706f6c69612d4265706f6c696120513966a0632b3d9c9c9016fb3cc7f4ba94aa0acf25bf7371a3fc60684eabfd6ebe5ca70d88000000000000000084965ebcb8a082eb7bd020477193e72705af093c3a20a74cedc52de6a194a7de57c54e9161d5", + "proof": { + "leaf_idx": 56792, + "mmr_path": [ + "0x4a6beccfb03e1656c1ca97012d16ba1ac45344f7623c9e7ae1619998c1cecca", + "0x6e2962423bc116df450d55bdbfe86d7b0d683bd9eccc918a427fb1878e0a3dc", + "0x68c79a5b751a27a0eea026356c81602c1a8d2f40cb0a119e3aa02db02254015", + "0x0ccfbba1966a030efca79b702bec3afd99554c73bca5be56e31ac9e0e87021d", + "0x19afd1b94b54cc80a09e4e5e2622401e71092b95427c854fe2d58823da87c93", + "0x0986528edebe7e63bedacf6820cc7a6e36285bd5b08ffdf7f789ebf5f4e1368", + "0x197c0e1f3f891cd367cac728f646334e33e5f9aa6fa7ca81c028c286c006ee0", + "0x14f522b5a62c9ecd4857b7bfeb87a1ca239ba3961278a6c1b9a291629794cfc" + ] + } + }, + { + "rlp": "f90221a0c2af7c1671063219374a4fd73bb215b45877452a273d2c726030ba75722d7498a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d4934794ea7e42c7c9262e6831bfa7be71d67aa5523e27bda0b6d54d674760de632e5d4fe25edb7b85377d66bf03aaf1e91ff02b6704664ea9a0cfa55b48ed044f4a91e163c61dab8ff2aeeb01b4067a4844a3b2dd9b8b81606ea065aa714cbce818b86e3f0740749ff214ae9757e08e5420be72a5a18cc1bc9186b90100000200044918000002099422040000400050080400ac100000330002800024304000c00200810a010002440081083040000188440601030000202001802001014048002000618000410a50180a280000000424400880020024080a0050804200081220481a80000404c8008400086a2180032500000a000000404055421000010860010000161002202000030800c00010008080484080401a00102224512c0502094448d3048006900400010c0804801242a0004e080440a000740014028e00008b0542000010009714010202010080002840800088800558208001440928080090030c005011194002a4c4a00420100400001010000040930802900060421180834b908a8401c9c380839909bc846588e04c80a0c5cf6498cd5c1aca47f847e05643e10d522b9fc9e232294623339e6480629893880000000000000000848c28d9a8a08496065fa516a04ff2d31b2434319488b5d6c4a4294cd020e455ccf3d40f8d26", + "proof": { + "leaf_idx": 56787, + "mmr_path": [ + "0x697c57e9af271d80265a0f96e1f6d1eeb3bcd290ec9c6076d397b214768b241", + "0x6a6a6626115e03d8dc8340a3cb9354d419bdf903d78fabb3cac6661c9608291", + "0x1356a8540da67e7e086e004aa06425f4a130f9ee67d0c781702ccc637655df9", + "0x2866e0617b791220100c398f856e1402475e9eb57fb87a8c7373945bf3a427f", + "0x6d9ea890765cdf15556568782cbe2e7b63526c146d274f1d85fcb727dfc4ee2", + "0x0986528edebe7e63bedacf6820cc7a6e36285bd5b08ffdf7f789ebf5f4e1368", + "0x197c0e1f3f891cd367cac728f646334e33e5f9aa6fa7ca81c028c286c006ee0", + "0x14f522b5a62c9ecd4857b7bfeb87a1ca239ba3961278a6c1b9a291629794cfc" + ] + } + }, + { + "rlp": "f90240a0bddc82eeb87c76417268bdbd97ead20a65510a39e08087b916be2fb28703b251a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347941e2cd78882b12d3954a049fd82ffd691565dc0a5a0ecf5ac1fb2bb7fdf271cfaf1ba64fb0b41b1879335ea2a857f4c470103a26211a08d4fba4e11e31ac9c4e992a3b39878d0f60a17d42afaa9daeba345fb1ef5c018a0dc9469183067c5f641bd984fea6b85673784297d76c743a51d49b5c7ef606f94b9010004000000080800000218142004002048001002000024002119144050c04284b04014a14210090201108220000000108400010010220002400820018c0820010300000000003180422103400808200800002000000080020224000800e1900002084604280a000200008840140040280080318c04001000c0002400151800000410800000608008002020040008404800200409001218c0e02810102244500025028804021404800300000042100800001042a000070a04002048c80085420200408001420000108005500140245100862800480008c28004502098104cc0ad2802988a0800100018080020008004200424008008800028088200061905e0401080834b90a48401c9c380839f78af846588e1b49f496c6c756d696e61746520446d6f63726174697a6520447374726962757465a019a2917630f5454d97b6bf9aade1108a3e4a0d50e4e77662bc798c6705cbd8518800000000000000008495b1233ca04ac525d6ae8601e17c2d43c50445533796ec391f5c7a12478dff665cf565dd45", + "proof": { + "leaf_idx": 56737, + "mmr_path": [ + "0x64130e38328c05edf8377f9fa0852888d699b45119a55b6a068d95996322877", + "0x20d7bf52f0774bbfaaa76edacafa5e2cc30d543faf6a59ca865e1e703b863aa", + "0x5c40fce3fdece7721198e5b2c6a6748ffcfb9a339437a66ca04f0401bbf5b80", + "0x2d7285179432c108172787974fd9e1760d01f9cd2929b040db3a69f879a2f92", + "0x2e7a5da17cea629e713d4a361f9006b882b65db10301db8fdb085477cc41fb3", + "0x2472a661f9fe54a7bae6da2735f322277e68016267c150ef1b50e19d01cdf6c", + "0x197c0e1f3f891cd367cac728f646334e33e5f9aa6fa7ca81c028c286c006ee0", + "0x14f522b5a62c9ecd4857b7bfeb87a1ca239ba3961278a6c1b9a291629794cfc" + ] + } + }, + { + "rlp": "f90221a03084e8ca33788904b3e5f76ee5969876180ede1ba1854ce8a037580820419b9fa01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d4934794ea7e42c7c9262e6831bfa7be71d67aa5523e27bda0a002b49d29ab37f12f6edbadaf1dbcef6c4cd23a04a1c36c87d3b75016eafff3a0cd722f25c80a4a94e9f0afcbe3c957dfd12eb6be0a8c750061f9660896b28d8da0d87291054c73b5e9351c97568d490986ea79d53409bda8f6cddcddf6fee1129eb90100000061004b00024006191422040200c022b60701000541020019000290064e60c0158442400106452b100204102410000c054c8088404a250180906000a0054010805044d02a8000a0a26018088c0410840080001084020026100a2240800e030e2a080e2b024a0008c904660048680805134c008000800001600010208088040120100200d5001022a1820408404c1025011b120008824449121022a4500205020806005904824208020044044210001001a8020608000aa0000000950602010090610221043000015001002022000022000055302000944000a30044c02f0808b00a040a380010000662c082042c0a1604060000504000aa0a02500b42101480834b908f8401c9c38083e2b070846588e0a080a07753d62b77ce1ab419310c15ed62211d6728bad1ba92801adbc825446f3dc7a788000000000000000084a02540daa063f9bf4a37ed451b247368d04cd23f61eb0a7e7aeaa8be344358e1cdce15abdd", + "proof": { + "leaf_idx": 56779, + "mmr_path": [ + "0x129f7f6726fc1ca38511ef483a9efb5682170a8f57c30c30491eff6abb128e9", + "0x2b660cf54e59edc43cdb275b2393a5c6061200b803f152808ef66e63ef71d24", + "0x4a706ff64a99ff7210b4eb84c3cb833bcab69eaf94f54e733e06913860f4ffe", + "0x2866e0617b791220100c398f856e1402475e9eb57fb87a8c7373945bf3a427f", + "0x6d9ea890765cdf15556568782cbe2e7b63526c146d274f1d85fcb727dfc4ee2", + "0x0986528edebe7e63bedacf6820cc7a6e36285bd5b08ffdf7f789ebf5f4e1368", + "0x197c0e1f3f891cd367cac728f646334e33e5f9aa6fa7ca81c028c286c006ee0", + "0x14f522b5a62c9ecd4857b7bfeb87a1ca239ba3961278a6c1b9a291629794cfc" + ] + } + }, + { + "rlp": "f9023ba05544bdb1759e385926f39ddb330cb33b397d019eb7b89f2325a33e8c3bdcee2fa01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347946a7aa9b882d50bb7bc5da1a244719c99f12f06a3a064ec0f887ffdab31ca9c9e92441f72165a0b5663f2d042238c75564247e17796a0d6741f87cbf750c43aafab643669cb6760473c12e72d170c13505fe6e3edb1c9a0c68d4c973e0520d30ff00e64190cda094b3677a9085b66b7910b36361e279b6ab901009508084a1e20084687091533249e276301d0c00f2c2c203208d4c211912a4cb0c041d1104e97022d308a0a00010e148a30c54436c6a27b21050000ac0a74210a0000471401e3943b231344198be68a5020f6211878c45a8a7501c84471884fc36822850a0e22224448c9500d0482ea39ca112671002216400044021700d9e4065d606d1204cb500a2221592088136c880d29e117002da26468547122c5d5532512c93442908ca58e0c804cc6340014001a21a6445e0a040a6b201026c70a0ed948d0150f0240b4800592010282204a8062210086216a2aa466ce86037c606b080af4a2183890281382043404b1042114ae28121254842804cb380adb01ca601180834b908e8401c9c38084015d2763846588e09499d883010c00846765746888676f312e32302e31856c696e7578a0b6e1b11e38ca21275ec5513fbc1b9ff425f56c78f18ba471eedee3c9b61c083f880000000000000000849646587ea095523f47b937045724c9de18e3a82a15aa773c46ca7f149812f410708645dba6", + "proof": { + "leaf_idx": 56780, + "mmr_path": [ + "0x5b0f6eeb2130f104f060e0393a3189d69cd6a0b37c9d8efa00cf38bf65349af", + "0x2b660cf54e59edc43cdb275b2393a5c6061200b803f152808ef66e63ef71d24", + "0x4a706ff64a99ff7210b4eb84c3cb833bcab69eaf94f54e733e06913860f4ffe", + "0x2866e0617b791220100c398f856e1402475e9eb57fb87a8c7373945bf3a427f", + "0x6d9ea890765cdf15556568782cbe2e7b63526c146d274f1d85fcb727dfc4ee2", + "0x0986528edebe7e63bedacf6820cc7a6e36285bd5b08ffdf7f789ebf5f4e1368", + "0x197c0e1f3f891cd367cac728f646334e33e5f9aa6fa7ca81c028c286c006ee0", + "0x14f522b5a62c9ecd4857b7bfeb87a1ca239ba3961278a6c1b9a291629794cfc" + ] + } + }, + { + "rlp": "f9023ba004143050352c91ce92a0402577cdac940fc7ba58e60a182e6aec7361527a24efa01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d4934794d9a5179f091d85051d3c982785efd1455cec8699a07bc1e0e342574fa7c4016ba8b4b6751c59daa2b12a460be0f4ae5d4da435abf4a0968151c674b2d6682bd2570975b2b8f556f3477d1c7fd4180d9526c25ba4d0cca0de0e114b9ddb07acf8bc68144ad09d05bd933b8fe9983d09412a91e55545ea28b901004039ad4939a1400ca7c8b72e8c94217da0d5ba8040ccd41651f028a18c1600f95823840242f7182900090050227cb24db001110e2222c2204b404429516529250ae090107030c8eb1e7f00297c205120da440c4290968a44280c98894a902612de11001a1e60aa2800d980390c0828b630136cc88860180611600192201108c966b304c76e2112227be0e8360a504efccc08ca02c20c80c8ca75906b16d8b781733f9702111fce8e0843ec575541c34090a4a125cede20ea62c25cc40c8b922fb5c041321bc91a030f754930d16431ab0b834100006081a4c4508a24d4a06d8e0bf58ae8261580b508602081d24c681c10032182c9843006a301426692681abb80834b90a58401c9c380840169932d846588e1c099d883010d05846765746888676f312e32312e34856c696e7578a0b9d032f213f230c7f4d68bf4f19c163810ac56a0717acfb6cb0fca132fe933328800000000000000008490047c35a081d8e42a4685f1c166bc2558bc70a9cba8ed148d29e702321c7cab78a1812ad1", + "proof": { + "leaf_idx": 56736, + "mmr_path": [ + "0x786d506db540cc834a0a4a8b8373a66bf13ce5596f3de3c48d8dde440c3147a", + "0x20d7bf52f0774bbfaaa76edacafa5e2cc30d543faf6a59ca865e1e703b863aa", + "0x5c40fce3fdece7721198e5b2c6a6748ffcfb9a339437a66ca04f0401bbf5b80", + "0x2d7285179432c108172787974fd9e1760d01f9cd2929b040db3a69f879a2f92", + "0x2e7a5da17cea629e713d4a361f9006b882b65db10301db8fdb085477cc41fb3", + "0x2472a661f9fe54a7bae6da2735f322277e68016267c150ef1b50e19d01cdf6c", + "0x197c0e1f3f891cd367cac728f646334e33e5f9aa6fa7ca81c028c286c006ee0", + "0x14f522b5a62c9ecd4857b7bfeb87a1ca239ba3961278a6c1b9a291629794cfc" + ] + } + }, + { + "rlp": "f9023ba010d63d3b65b1758ed1ff3d919f04cd91fd2b2ffaf708b43b7bd2af8662abd2fea01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347940000000000000000000000000000000000000000a0ee2e1aecb1ea22439f956437da9d48d42e093fd9f3df6e9cdfee7f82c893ebf5a086c36b58ed18e4bc47b60e47bc4dacea588d9eacf5c051101a59a856b626764fa0436808fa8bc97d942fa4d3605e09a4c9959617a91df1f9e85e589c38f5da904bb901001440e8020a0183e5a21b7c206c369070451003185138401730d80023812fa232d01bc926a6f706033d914113008a36530cf3cc4e66c0c6d81088820008ee072744e08b082672ca4a30ab500a2d8f9a758b100a09f8bc7a11a6408f12c1931a714e54258a0f40886859db130c3a18be13ea150f28a2a8314754c287923e000dc454804833344140e224704b22a9f573a522c8c18180aaa064aa48f023b4dd300752e934409525d30720420961168200029006e611df2d680e32c0e00d9e13ea89c09fe5d2c6c1113109308b8000a058c0a100806192070dce43b581a35c4de9080f90bf303055f81014102188a64520441423403030275d04a60a0399205042d180834b908c8401c9c380840187046f846588e06499d883010d04846765746888676f312e32302e34856c696e7578a0c659010742f2244cebceebafb05268263f23c0b80c5460624eda8493c0000ef08800000000000000008492f1f9a7a089d82777a4ce7f5175c223fbf42622dc0a57790232dfaf4f574d6b6d0bad2d63", + "proof": { + "leaf_idx": 56784, + "mmr_path": [ + "0x46947699985f7110a024e003aff12a5ab6aa0abae0d6cd1d78b252d344f5f4b", + "0x468622733eeeb16dde8b60eb0d9a247eefd7f6ec8c23cdf43ed78c9c0239caa", + "0x1356a8540da67e7e086e004aa06425f4a130f9ee67d0c781702ccc637655df9", + "0x2866e0617b791220100c398f856e1402475e9eb57fb87a8c7373945bf3a427f", + "0x6d9ea890765cdf15556568782cbe2e7b63526c146d274f1d85fcb727dfc4ee2", + "0x0986528edebe7e63bedacf6820cc7a6e36285bd5b08ffdf7f789ebf5f4e1368", + "0x197c0e1f3f891cd367cac728f646334e33e5f9aa6fa7ca81c028c286c006ee0", + "0x14f522b5a62c9ecd4857b7bfeb87a1ca239ba3961278a6c1b9a291629794cfc" + ] + } + }, + { + "rlp": "f90222a046cb883d4497215fe603a21d0307b3bda28b4dc4563131ce1884236f68d3fc4fa01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d4934794008b3b2f992c0e14edaa6e2c662bec549caa8df1a0fea0d8539a0fce586fbff3eca3146995f2fa12b3f335cdf1c5e6278879c553eca04c5d9c6e3c92bcf76ba60c5aa91c4412d0f7c0904bce3b24c60fa4c394f00dc8a08db916baf6deabea6bfa103d38b6ad5f68de05eb624facf9eb4489e1e0690422b90100a81102050831106436181471041c0040c891020103244050105402e0d0400da04104a31162294b110ca8020001141000201100484e01176000200106003425024004084000a98a10140340094a0d08c0284110100084135035200869c4c88ac6a8cc007c0b02102006c832c106052d410801c6240011010c80400910c060019cb12031005017883667212b00081c4a02042d0804900888442a9110a2d4d01c051a0816021045a7020c804043201801181040a4211e08a20a604016245472564010e901122100900001da810b090a414188a1596090088084f2409200c491eb2a0290a62c1031201b000060cc9704284c2470c10288008c04d3090e440071681580834b90a38401c9c38084010b7306846588e1a880a0e0056c57602bb1459398b67e074517767f04b5936f2670958461d9d5dac7b27888000000000000000084929aa16fa0d2b03465043c956a14b338259cc33944e5450ef1f7c071eccedfcc44603b5c32", + "proof": { + "leaf_idx": 56739, + "mmr_path": [ + "0x0706fd782e9a335b24f227a741ef95ea93d8ca844c2b8224823e3108af7d2a1", + "0x169b2e7a353ef7fc040aad6f46c21bb3bc9f0ac70d4f1fe1df75003a73c8ce0", + "0x5c40fce3fdece7721198e5b2c6a6748ffcfb9a339437a66ca04f0401bbf5b80", + "0x2d7285179432c108172787974fd9e1760d01f9cd2929b040db3a69f879a2f92", + "0x2e7a5da17cea629e713d4a361f9006b882b65db10301db8fdb085477cc41fb3", + "0x2472a661f9fe54a7bae6da2735f322277e68016267c150ef1b50e19d01cdf6c", + "0x197c0e1f3f891cd367cac728f646334e33e5f9aa6fa7ca81c028c286c006ee0", + "0x14f522b5a62c9ecd4857b7bfeb87a1ca239ba3961278a6c1b9a291629794cfc" + ] + } } ], + "accounts": [], + "storages": [], "transactions": [], "transaction_receipts": [] }, @@ -710,66 +514,15 @@ { "type": "datalake_compute", "context": { - "task_bytes_len": 128, - "encoded_task": [ - "0xb7d65362098af8fc", - "0xbb9ce9daf3acf4f", - "0x7764468b86369c36", - "0xfefccffceae47099", - "0x0", - "0x0", - "0x0", - "0x0", - "0x0", - "0x0", - "0x0", - "0x0", - "0x0", - "0x0", - "0x0", - "0x0" - ], - "datalake_bytes_len": 288, - "encoded_datalake": [ - "0x0", - "0x0", - "0x0", - "0x0", - "0x0", - "0x0", - "0x0", - "0xa736aa0000000000", - "0x0", - "0x0", - "0x0", - "0xc546610000000000", - "0x0", - "0x0", - "0x0", - "0xc546610000000000", - "0x0", - "0x0", - "0x0", - "0x100000000000000", - "0x0", - "0x0", - "0x0", - "0xc000000000000000", - "0x0", - "0x0", - "0x0", - "0x3500000000000000", - "0x89d5862ca7e8af03", - "0xb7d426ab6d61d65d", - "0x2f4722cf36", - "0x0", - "0x0", - "0x0", - "0x1000000000", - "0x0" - ], + "encoded_task": "0x412ee90cde8fd59a901289c531d013f0e0c60cf167ce66979f14ca4bdb6733dd000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "task_commitment": "0xe5d53290ecf6ebdf78189c67c45a6d0882b0d199e714c855052a7166b6da7ff0", + "compiled_result": "0x0", + "result_commitment": "0x6539b66f7f8b7f4ae54abdfd7b0b403df5f326f422fbb178c675c6b8bddeaaf5", + "task_proof": [], + "result_proof": [], + "encoded_datalake": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000aa36a700000000000000000000000000000000000000000000000000000000004b908800000000000000000000000000000000000000000000000000000000004b90a5000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000020107000000000000000000000000000000000000000000000000000000000000", "datalake_type": 0, - "property_type": 3 + "property_type": 1 } } ] diff --git a/output.json b/output.json new file mode 100644 index 00000000..4250a303 --- /dev/null +++ b/output.json @@ -0,0 +1,39 @@ +{ + "raw_results": [ + "0x0000000000000000000000000000000000000000000000000000000000000000" + ], + "results_commitments": [ + "0x6539b66f7f8b7f4ae54abdfd7b0b403df5f326f422fbb178c675c6b8bddeaaf5" + ], + "tasks_commitments": [ + "0xe5d53290ecf6ebdf78189c67c45a6d0882b0d199e714c855052a7166b6da7ff0" + ], + "task_inclusion_proofs": [ + [] + ], + "results_inclusion_proofs": [ + [] + ], + "results_root": "0xb1b4ea77b125a3360e3fb683830d3c44d6ccfed08c820e39fb0487b0da0a7168", + "tasks_root": "0xe48e52ac91f5fdec65517efdcaa48eb44b43259adc615cf67b210d2316d5ba86", + "mmr_metas": [ + { + "id": 2, + "root": "0x10985193855d9de012ae065d02e15676aa2cce031b18290d3b48fb8e410d3bc", + "size": 56994, + "peaks": [ + "0x0794bd0825d51a5662ba8ca27d71d1000b8e1bfb708b34b6541428d6da58795", + "0x527ab023c7fdc1afa3c25885e4c2ae47522cde5ddf49c2bc20dccace24bfad4", + "0x04c8c7e945aafd7ec5a7d376bab269e42a9589fe7064a986c4e4d9d05f6e72e", + "0x5ad67d05125b5d17dc14c91938218edd87689e09a4eac8be311485125ccb301", + "0x3331f3ebc157027bdbbac2478ea7e164edc8b80b21ff34867551b7204d05392", + "0x3da3dedfb8f9e4d8abb4ac4722b85f3dd960a85850bf49294c480a46c540535", + "0x4495fa03fc69c5356b41a8d51fffbba196122fc62a05bae47c4b44669090fb2", + "0x76d7442003ddf6d8b6b29c42c3ba9b56f52309619b16f9aaf46ee13263d62f8", + "0x05996b64edff625e7f7443af14adf9d920f3ff4ff75a18bd1f93a209ec3fef4", + "0x5417f6fb234889a2c018bf05eef24cebd8ba29595df9ca880e0f856162c1bb7" + ], + "chain_id": 11155111 + } + ] +} \ No newline at end of file From d6ef02871c3f6c10a534d4b1b24c06bb57dbf2fc Mon Sep 17 00:00:00 2001 From: Pia Date: Mon, 2 Sep 2024 16:33:07 +0900 Subject: [PATCH 05/11] chore: back to storage_key -> key --- hdp/src/cairo_runner/dry_run.rs | 4 ++-- hdp/src/provider/evm/from_keys.rs | 2 +- hdp/src/provider/key.rs | 18 +++++++++--------- 3 files changed, 12 insertions(+), 12 deletions(-) diff --git a/hdp/src/cairo_runner/dry_run.rs b/hdp/src/cairo_runner/dry_run.rs index 6b4d8ffa..5683f9a1 100644 --- a/hdp/src/cairo_runner/dry_run.rs +++ b/hdp/src/cairo_runner/dry_run.rs @@ -204,7 +204,7 @@ mod tests { "chain_id": 11155111, "block_number": 5186022, "address": "0x13CB6AE34A13a0977F4d7101eBc24B87Bb23F0d5", - "storage_key": "0x487ea7bf96eb1280f1075498855b55ec61ba7d354b5260e2504ef51140e0df63" + "key": "0x487ea7bf96eb1280f1075498855b55ec61ba7d354b5260e2504ef51140e0df63" } } ], @@ -269,7 +269,7 @@ mod tests { Address::from_str("0x13CB6AE34A13a0977F4d7101eBc24B87Bb23F0d5").unwrap() ); assert_eq!( - key.storage_key, + key.key, StorageKey::from_str( "0x487ea7bf96eb1280f1075498855b55ec61ba7d354b5260e2504ef51140e0df63" ) diff --git a/hdp/src/provider/evm/from_keys.rs b/hdp/src/provider/evm/from_keys.rs index f2f7a556..358e562d 100644 --- a/hdp/src/provider/evm/from_keys.rs +++ b/hdp/src/provider/evm/from_keys.rs @@ -187,7 +187,7 @@ impl EvmProvider { let mut address_slot_to_block_range: HashMap<(Address, B256), Vec> = HashMap::new(); for key in keys { let block_range = address_slot_to_block_range - .entry((key.address, key.storage_key)) + .entry((key.address, key.key)) .or_default(); block_range.push(key.block_number); } diff --git a/hdp/src/provider/key.rs b/hdp/src/provider/key.rs index 2686a233..6c56ffcd 100644 --- a/hdp/src/provider/key.rs +++ b/hdp/src/provider/key.rs @@ -203,7 +203,7 @@ pub struct StorageMemorizerKey { pub chain_id: ChainId, pub block_number: BlockNumber, pub address: Address, - pub storage_key: StorageKey, + pub key: StorageKey, } impl<'de> Deserialize<'de> for StorageMemorizerKey { @@ -216,7 +216,7 @@ impl<'de> Deserialize<'de> for StorageMemorizerKey { chain_id: u128, block_number: BlockNumber, address: Address, - storage_key: StorageKey, + key: StorageKey, } let helper = Helper::deserialize(deserializer)?; @@ -225,7 +225,7 @@ impl<'de> Deserialize<'de> for StorageMemorizerKey { chain_id: ChainId::from_numeric_id(helper.chain_id).expect("invalid deserialize"), block_number: helper.block_number, address: helper.address, - storage_key: helper.storage_key, + key: helper.key, }) } } @@ -235,13 +235,13 @@ impl StorageMemorizerKey { chain_id: ChainId, block_number: BlockNumber, address: Address, - storage_key: StorageKey, + key: StorageKey, ) -> Self { Self { chain_id, block_number, address, - storage_key, + key, } } @@ -251,7 +251,7 @@ impl StorageMemorizerKey { keccak.update(self.chain_id.to_be_bytes()); keccak.update(self.block_number.to_be_bytes()); keccak.update(self.address); - keccak.update(self.storage_key); + keccak.update(self.key); keccak.finalize() } } @@ -396,12 +396,12 @@ impl FromStr for FetchKeyEnvelope { } 4 => { let address = parts[2].parse()?; - let storage_key = parts[3].parse()?; + let key = parts[3].parse()?; Ok(FetchKeyEnvelope::Storage(StorageMemorizerKey { chain_id, block_number, address, - storage_key, + key, })) } _ => anyhow::bail!("Invalid fetch key envelope: {}", s), @@ -507,7 +507,7 @@ mod tests { #[test] fn test_parse_json_storage_key() { - let json = r#"{"type": "StorageMemorizerKey", "key": {"chain_id": 1, "block_number": 100, "address": "0x0000000000000000000000000000000000000000", "storage_key": "0x0000000000000000000000000000000000000000000000000000000000000000"}}"#; + let json = r#"{"type": "StorageMemorizerKey", "key": {"chain_id": 1, "block_number": 100, "address": "0x0000000000000000000000000000000000000000", "key": "0x0000000000000000000000000000000000000000000000000000000000000000"}}"#; let parsed: FetchKeyEnvelope = serde_json::from_str(json).unwrap(); assert_eq!( parsed, From 6ef1af415e371e55b7898d0e795b61284d6e1ee9 Mon Sep 17 00:00:00 2001 From: Pia Date: Mon, 2 Sep 2024 16:49:15 +0900 Subject: [PATCH 06/11] fix:SN_MAIN --- hdp/src/primitives/chain_id.rs | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/hdp/src/primitives/chain_id.rs b/hdp/src/primitives/chain_id.rs index f9a9716e..0b9644a7 100644 --- a/hdp/src/primitives/chain_id.rs +++ b/hdp/src/primitives/chain_id.rs @@ -98,13 +98,13 @@ impl ChainId { /// A u128 representing the numeric chain ID: /// - 1 for Ethereum Mainnet /// - 11155111 for Ethereum Sepolia - /// - 393402131332719809807700 for Starknet Mainnet - /// - 393402133025997798000961 for Starknet Sepolia + /// - 393402131332719809807700 for Starknet Mainnet (SN_MAIN) + /// - 393402133025997798000961 for Starknet Sepolia (SN_SEPOLIA) pub fn to_numeric_id(&self) -> u128 { match self { ChainId::EthereumMainnet => 1, ChainId::EthereumSepolia => 11155111, - ChainId::StarknetMainnet => 393402131332719809807700, + ChainId::StarknetMainnet => 23448594291968334, ChainId::StarknetSepolia => 393402133025997798000961, } } @@ -122,7 +122,7 @@ impl ChainId { match id { 1 => Ok(Self::EthereumMainnet), 11155111 => Ok(Self::EthereumSepolia), - 393402131332719809807700 => Ok(Self::StarknetMainnet), + 23448594291968334 => Ok(Self::StarknetMainnet), 393402133025997798000961 => Ok(Self::StarknetSepolia), i => Err(ParseChainIdError { input: i.to_string(), @@ -172,10 +172,7 @@ mod tests { fn test_to_numeric_id() { assert_eq!(ChainId::EthereumMainnet.to_numeric_id(), 1); assert_eq!(ChainId::EthereumSepolia.to_numeric_id(), 11155111); - assert_eq!( - ChainId::StarknetMainnet.to_numeric_id(), - 393402131332719809807700 - ); + assert_eq!(ChainId::StarknetMainnet.to_numeric_id(), 23448594291968334); assert_eq!( ChainId::StarknetSepolia.to_numeric_id(), 393402133025997798000961 @@ -190,7 +187,7 @@ mod tests { Ok(ChainId::EthereumSepolia) ); assert_eq!( - ChainId::from_numeric_id(393402131332719809807700), + ChainId::from_numeric_id(23448594291968334), Ok(ChainId::StarknetMainnet) ); assert_eq!( From 01332fc3cc134e5955e15134a6196053a3c1b201 Mon Sep 17 00:00:00 2001 From: Pia Date: Mon, 2 Sep 2024 17:32:09 +0900 Subject: [PATCH 07/11] feat: chain_id explicit --- hdp/src/primitives/chain_id.rs | 40 +- hdp/src/primitives/request.rs | 8 +- input.json | 1241 +++++++++++++++++++------------- request.json | 4 +- 4 files changed, 770 insertions(+), 523 deletions(-) diff --git a/hdp/src/primitives/chain_id.rs b/hdp/src/primitives/chain_id.rs index 0b9644a7..7f35dfaf 100644 --- a/hdp/src/primitives/chain_id.rs +++ b/hdp/src/primitives/chain_id.rs @@ -57,10 +57,10 @@ impl FromStr for ChainId { fn from_str(s: &str) -> Result { match s { - "ETH_MAINNET" => Ok(Self::EthereumMainnet), - "ETH_SEPOLIA" => Ok(Self::EthereumSepolia), - "SN_MAINNET" => Ok(Self::StarknetMainnet), - "SN_SEPOLIA" => Ok(Self::StarknetSepolia), + "ETHEREUM_MAINNET" => Ok(Self::EthereumMainnet), + "ETHEREUM_SEPOLIA" => Ok(Self::EthereumSepolia), + "STARKNET_MAINNET" => Ok(Self::StarknetMainnet), + "STARKNET_SEPOLIA" => Ok(Self::StarknetSepolia), _ => Err(ParseChainIdError { input: s.to_string(), }), @@ -71,10 +71,10 @@ impl FromStr for ChainId { impl Display for ChainId { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { match self { - ChainId::EthereumMainnet => write!(f, "ETH_MAINNET"), - ChainId::EthereumSepolia => write!(f, "ETH_SEPOLIA"), - ChainId::StarknetMainnet => write!(f, "SN_MAINNET"), - ChainId::StarknetSepolia => write!(f, "SN_SEPOLIA"), + ChainId::EthereumMainnet => write!(f, "ETHEREUM_MAINNET"), + ChainId::EthereumSepolia => write!(f, "ETHEREUM_SEPOLIA"), + ChainId::StarknetMainnet => write!(f, "STARKNET_MAINNET"), + ChainId::StarknetSepolia => write!(f, "STARKNET_SEPOLIA"), } } } @@ -82,10 +82,10 @@ impl Display for ChainId { impl Debug for ChainId { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { match self { - ChainId::EthereumMainnet => write!(f, "ETH_MAINNET"), - ChainId::EthereumSepolia => write!(f, "ETH_SEPOLIA"), - ChainId::StarknetMainnet => write!(f, "SN_MAINNET"), - ChainId::StarknetSepolia => write!(f, "SN_SEPOLIA"), + ChainId::EthereumMainnet => write!(f, "ETHEREUM_MAINNET"), + ChainId::EthereumSepolia => write!(f, "ETHEREUM_SEPOLIA"), + ChainId::StarknetMainnet => write!(f, "STARKNET_MAINNET"), + ChainId::StarknetSepolia => write!(f, "STARKNET_SEPOLIA"), } } } @@ -142,19 +142,19 @@ mod tests { #[test] fn test_from_str() { assert_eq!( - ChainId::from_str("ETH_MAINNET").unwrap(), + ChainId::from_str("ETHEREUM_MAINNET").unwrap(), ChainId::EthereumMainnet ); assert_eq!( - ChainId::from_str("ETH_SEPOLIA").unwrap(), + ChainId::from_str("ETHEREUM_SEPOLIA").unwrap(), ChainId::EthereumSepolia ); assert_eq!( - ChainId::from_str("SN_MAINNET").unwrap(), + ChainId::from_str("STARKNET_MAINNET").unwrap(), ChainId::StarknetMainnet ); assert_eq!( - ChainId::from_str("SN_SEPOLIA").unwrap(), + ChainId::from_str("STARKNET_SEPOLIA").unwrap(), ChainId::StarknetSepolia ); assert!(ChainId::from_str("INVALID").is_err()); @@ -162,10 +162,10 @@ mod tests { #[test] fn test_display() { - assert_eq!(ChainId::EthereumMainnet.to_string(), "ETH_MAINNET"); - assert_eq!(ChainId::EthereumSepolia.to_string(), "ETH_SEPOLIA"); - assert_eq!(ChainId::StarknetMainnet.to_string(), "SN_MAINNET"); - assert_eq!(ChainId::StarknetSepolia.to_string(), "SN_SEPOLIA"); + assert_eq!(ChainId::EthereumMainnet.to_string(), "ETHEREUM_MAINNET"); + assert_eq!(ChainId::EthereumSepolia.to_string(), "ETHEREUM_SEPOLIA"); + assert_eq!(ChainId::StarknetMainnet.to_string(), "STARKNET_MAINNET"); + assert_eq!(ChainId::StarknetSepolia.to_string(), "STARKNET_SEPOLIA"); } #[test] diff --git a/hdp/src/primitives/request.rs b/hdp/src/primitives/request.rs index 6c7efb4e..055bc810 100644 --- a/hdp/src/primitives/request.rs +++ b/hdp/src/primitives/request.rs @@ -21,13 +21,13 @@ pub struct SubmitBatchQuery { fn test_serialize_submit_batch_query_datalake() { let json_data = r#" { - "destinationChainId": "ETH_SEPOLIA", + "destinationChainId": "ETHEREUM_SEPOLIA", "tasks": [ { "type": "DatalakeCompute", "datalake": { "type": "BlockSampled", - "chainId": "ETH_SEPOLIA", + "chainId": "ETHEREUM_SEPOLIA", "blockRangeStart": 5515020, "blockRangeEnd": 5515039, "increment": 10, @@ -41,7 +41,7 @@ fn test_serialize_submit_batch_query_datalake() { "type": "DatalakeCompute", "datalake": { "type": "TransactionsInBlock", - "chainId": "ETH_SEPOLIA", + "chainId": "ETHEREUM_SEPOLIA", "targetBlock": 5409986, "startIndex": 10, "endIndex": 40, @@ -74,7 +74,7 @@ fn test_serialize_submit_batch_query_datalake() { fn test_serialize_submit_batch_query_module() { let json_data = r#" { - "destinationChainId": "ETH_SEPOLIA", + "destinationChainId": "ETHEREUM_SEPOLIA", "tasks": [ { "type": "Module", diff --git a/input.json b/input.json index 2bdb70da..5fd18be0 100644 --- a/input.json +++ b/input.json @@ -1,512 +1,708 @@ { "cairo_run_output_path": "cairo_run_output.json", - "tasks_root": "0xe48e52ac91f5fdec65517efdcaa48eb44b43259adc615cf67b210d2316d5ba86", - "results_root": "0xb1b4ea77b125a3360e3fb683830d3c44d6ccfed08c820e39fb0487b0da0a7168", + "task_root": "0xd900a4d980172ad23fafb579aeac7cff91c73636d334bc247a1c3142d8bffa78", + "result_root": "0x34b46123c4ab406cec0586364d8ed193353f0e9fb1b32cac0988fc0970dc50a2", "proofs": { "mmr_metas": [ { - "id": 2, - "root": "0x10985193855d9de012ae065d02e15676aa2cce031b18290d3b48fb8e410d3bc", - "size": 56994, + "id": 26, + "root": "0x5358fbe594d3e8fdb3f6f7bbbe979fc3a377851a21909ea7bc1821e15cc6c4e", + "size": 12899969, "peaks": [ - "0x0794bd0825d51a5662ba8ca27d71d1000b8e1bfb708b34b6541428d6da58795", - "0x527ab023c7fdc1afa3c25885e4c2ae47522cde5ddf49c2bc20dccace24bfad4", - "0x04c8c7e945aafd7ec5a7d376bab269e42a9589fe7064a986c4e4d9d05f6e72e", - "0x5ad67d05125b5d17dc14c91938218edd87689e09a4eac8be311485125ccb301", - "0x3331f3ebc157027bdbbac2478ea7e164edc8b80b21ff34867551b7204d05392", - "0x3da3dedfb8f9e4d8abb4ac4722b85f3dd960a85850bf49294c480a46c540535", - "0x4495fa03fc69c5356b41a8d51fffbba196122fc62a05bae47c4b44669090fb2", - "0x76d7442003ddf6d8b6b29c42c3ba9b56f52309619b16f9aaf46ee13263d62f8", - "0x05996b64edff625e7f7443af14adf9d920f3ff4ff75a18bd1f93a209ec3fef4", - "0x5417f6fb234889a2c018bf05eef24cebd8ba29595df9ca880e0f856162c1bb7" + "0x262c4c9b1cb2a036924aecf563dc9952e5f8b41004310adde86f22abb793eb1", + "0x63e06c6dd962e6232140b8f20fc4972ee69ca29d1c6ca4455d80afd4be0f3de", + "0x48c9781f73635713eb8ef52890c481f4438c576baf01b31bc7935d9d42c1244", + "0x068c923e9bcc3df411575563e88a81cdef49ef6c4307efad707a8538114b753", + "0x54a48cae0defc94286e03d5c3abc53a399db7eb6207140f8d6f8d7322c9d1fc", + "0x1f31aea9b689fdab066317c08c865ae3b134adef05a744965a5741119a6c094", + "0x41dc23c0b0c18e7cc1d3f7148feabbe30269080cbe9b6ead6b718a2d1176382", + "0x1d04bc7dd1b40becbbfdf6a6971ef0e1ffc873087ed75bb2163dd2615d366de", + "0x5f3202e8d32391896022ddb916b83f165d2d7486261304f3e029aad6258ba2c", + "0x3a98faad3cc3bdeee0f2a346469fe4e67d364c98f8f5adf03f472000194081c", + "0x48bb57587a1e690409d81b70f3fe2ee625f25f008ec0773e55a0e1293c9e025" ], "chain_id": 11155111 } ], "headers": [ { - "rlp": "f90229a028fa8c977e0961a1aaa992d163f33b2d191426a231f6c76748d8b8a22ee1010fa01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347940c06b6d4ec451987e8c0b772ffcf7f080c46447aa05fac2b43907a836ba4f4d59ba3886875dea3ffbf446951be0c01a6838b10f4bca0a42d0099bc1b7b82fe4cb0297a513bb97d6de050b8c85a30c66c7b26d4215b4ea09db9550648bcd4ab43daa3ae460e89067b6d15edc8b04043f74812ffd5bbdfb1b90100000300020d08080402881422040000410cd2000010a04000101a04048c00092040108000010502218006000003009000090100800408426001008050102601204008080000208000011ac038280014000040208008a64208240088d0409802012801008a1a04000000a8818010202801011105008124000000601010021048c10200880a0012000030240108084048101008088080c080408800142284500105020905101214c01a900a0020008020041000a0400e181861a080280004020200008141020000510281100100020004002004098008081004406080134441781800920a184410001208002829800430000400001000000040830002000044441880834b90948401c9c38083a30716846588e0dc883265643834363862a0f7c29bbd3a145b5b88d19490fcf561a7d1ae7e1db0ccfc1f8bab781e1b8b419188000000000000000084957604fca0d89ee35c8b172dcafba95c0c0bc9408cd9ee1714a874a9870fc532e3bd1efdd8", - "proof": { - "leaf_idx": 56769, - "mmr_path": [ - "0x50bdf85ab870d4811c81d3e95e66f9cf7b3798ee00becced8646a6a574f9b20", - "0x0d084fca33c515832238f76ba0c4f77e7c4dd087441a0441cc8a3a7fbebee04", - "0x2d2639dbb309b6d580b55ca876a0d4081dfb5799ac568b9637dd33da23a8033", - "0x7337bdc57f2abddce74536296f3764631e0cb66ba9d1b6564b9734df7a6956a", - "0x6d9ea890765cdf15556568782cbe2e7b63526c146d274f1d85fcb727dfc4ee2", - "0x0986528edebe7e63bedacf6820cc7a6e36285bd5b08ffdf7f789ebf5f4e1368", - "0x197c0e1f3f891cd367cac728f646334e33e5f9aa6fa7ca81c028c286c006ee0", - "0x14f522b5a62c9ecd4857b7bfeb87a1ca239ba3961278a6c1b9a291629794cfc" - ] - } - }, - { - "rlp": "f9023ba05cc3d511351456265d5f51f47cf08138a1be4db71b9593b65e4a600dde8ba4fda01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d4934794c6e2459991bfe27cca6d86722f35da23a1e4cb97a0aef9093f94bae7261aaa6cb97f1da5a4384237c169b460beae5083357922b388a0f5f54cda562602412e135ced0ea55d44b3e248fdb3be744712aa25bbabdd1b6ca0764a56db1ff9de5b86ec3f214cbf2f217858c019c726bddf5c05239980bc3594b901008b24f30c1c21c012c89c9c399418154946f39880a6adb1f0c38d146280530c302416f612c402427d184330d903a69406d921601fdc823641252fc40116ace3012b1c0ab250f182493586e25dcd62f2322a01a95173ced21d280dca8c53990c636c5b114b6e211a30b3c885163671e95294359d01500eb4e27816b753823f84951a6035134c479d1480249f4bad50c074a26344a448cb294a29f673e3865828019b22f66530468b8e5c6584bcd4337a003b52f00037281a2aa2c7a3818420531001935146046256040db133847741f62809cd287400828055c18da316d4ad6d4a09b222c9405c8612a79984a6ad4100c62d400caf07a8035ad1a44a48030803d080834b908b8401c9c3808401907b4a846588e05899d883010b05846765746888676f312e32302e32856c696e7578a028b0ee8b6ed12060de78d7b54c959d4230bc925978bdedc2a79cc18bcb5251f988000000000000000084865aa2b1a0bfd021d79aad510616068967b24ae826adb6fa6d7924dda440ec560d64ce69b2", - "proof": { - "leaf_idx": 56786, - "mmr_path": [ - "0x4b718190ee4b93a287e51cec8d25a833a178ed42b83547cda06b33e4f201ea3", - "0x6a6a6626115e03d8dc8340a3cb9354d419bdf903d78fabb3cac6661c9608291", - "0x1356a8540da67e7e086e004aa06425f4a130f9ee67d0c781702ccc637655df9", - "0x2866e0617b791220100c398f856e1402475e9eb57fb87a8c7373945bf3a427f", - "0x6d9ea890765cdf15556568782cbe2e7b63526c146d274f1d85fcb727dfc4ee2", - "0x0986528edebe7e63bedacf6820cc7a6e36285bd5b08ffdf7f789ebf5f4e1368", - "0x197c0e1f3f891cd367cac728f646334e33e5f9aa6fa7ca81c028c286c006ee0", - "0x14f522b5a62c9ecd4857b7bfeb87a1ca239ba3961278a6c1b9a291629794cfc" - ] - } - }, - { - "rlp": "f90222a0ca9af842162c2f10e769a243aa745ede929cf98206bb183e302a101e3e019c20a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d4934794008b3b2f992c0e14edaa6e2c662bec549caa8df1a0f81abe8c49c18a9f92c80c845cb49b4d8836b4ba7cd1ccc27b9417d20f49dd84a0aa607a06ed3d59c859ad9f5b4967596b9c9063e79f55f2a234c1fd48139e0901a0cca536608a9cb66f17190fa32a3ca4367d63c3012c54adddebc79cfcf0f9ba6eb90100380000030902030082491421041000c110191209144540090015000080004f20401485122401020100040120112c1008000100020a8053200100f020003605998040202000248008b02b40088880502100502000408442082c02084251800203a802159c0a010824008800840446691000132e110030104000400090000403a401000022000020023ca500001840681810008210401080620810102284500c15028804201c068002000009c208c804001010a41846284003a0400800970a420004808146200190000151054a304011840012010001000c05510082014dc079080ab0020000300012080021c4800430642408030020000041821102400040401180834b90978401c9c38084011449fb846588e10c80a09de29047a9a9deb0726c8019b67a89187a82a0caa9b759dcd7652dcc3f3b1a4a880000000000000000849eeab617a0f8936b680f049c752859fc6a0ce219bd4fdadc5e510651d63d79cba1ae07e041", - "proof": { - "leaf_idx": 56764, - "mmr_path": [ - "0x7820b0b458097874650231724575c39596f8cf6a1335ce2233330fcabede16e", - "0x3b661872651dcea20deb66d413ca1fd514b6644960af0de245e6359386611ac", - "0x5532e2d5276789492907c4c962edcda5038d5950d9f18da2e959c2e9f8eeee5", - "0x7337bdc57f2abddce74536296f3764631e0cb66ba9d1b6564b9734df7a6956a", - "0x6d9ea890765cdf15556568782cbe2e7b63526c146d274f1d85fcb727dfc4ee2", - "0x0986528edebe7e63bedacf6820cc7a6e36285bd5b08ffdf7f789ebf5f4e1368", - "0x197c0e1f3f891cd367cac728f646334e33e5f9aa6fa7ca81c028c286c006ee0", - "0x14f522b5a62c9ecd4857b7bfeb87a1ca239ba3961278a6c1b9a291629794cfc" - ] - } - }, - { - "rlp": "f90221a0b7f094e0f422b08179bda8ffc4a39f70ddbcedf3ca97da18b3554f9cef2de544a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347943826539cbd8d68dcf119e80b994557b4278cec9fa0079ec684d2d5a368b4c732347e74a9f567599512cb2c76dd7565f72254a21bb1a074f97d7f829e0c561db1dcd5a53104f94dee424ee4223df5def0ef168e5820a5a0278d1f277c5d2e861170ba452273430751ade04e800a871f9f9d1e0eaaa6e42bb901001a0040000b208a002628d4a200040440001112004008000000100880884040004000a1001301080920000001006008000c010808080216000400000c0034050281000408012090000085000c0a001020080100116125020000010820400006042a00801c8a1c28000288000000014810800184050011600000400190800408e0128ed0020c11113c32200820080840011c2c0820100088430803108084540a29822805a0394a04020000600a20000000102c20020208084038a01000040200000001014a1000900821c0000b0200c004020000608420008452608041440970098abc0c20814044130421615a860420100640008000000042920816400100061080834b90a18401c9c38083c2247e846588e18480a03de2d394dd44563aa0284356f8abfdc3ecd33310a90fa2f388d4fa93ce7b4ef58800000000000000008499d829c7a033e61b00be1d13d28133e397204f40c311e3cb21e5fd5075c82bb174226bea0a", - "proof": { - "leaf_idx": 56744, - "mmr_path": [ - "0x5d5a2dda3cbbf479337844ba309a6df382d7253d42382eb979f95048d564420", - "0x2b5184b6be4480274c6b7447ac50c3e0494c332ecc788bbb58d095bfa2740b7", - "0x669a1da19287710e13292c78afa9d56d5831ad6d2086ff1bf4fea426413bcaf", - "0x747a4f9148cd1686f4325cdf57cf446f69731a4054bed737651f5043de36db5", - "0x2e7a5da17cea629e713d4a361f9006b882b65db10301db8fdb085477cc41fb3", - "0x2472a661f9fe54a7bae6da2735f322277e68016267c150ef1b50e19d01cdf6c", - "0x197c0e1f3f891cd367cac728f646334e33e5f9aa6fa7ca81c028c286c006ee0", - "0x14f522b5a62c9ecd4857b7bfeb87a1ca239ba3961278a6c1b9a291629794cfc" - ] - } - }, - { - "rlp": "f9023aa0ec9bfbfbff89eafaf3c9d356f442719b4bd56033e65b309918a5bcd098731412a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d4934794d9a5179f091d85051d3c982785efd1455cec8699a0ae1aaa2d9fe33d8070ee0791e72b3c25872bd628ffeaee2dadd250fe44c64940a0f99bf1fd890500ceeabff2edb90d916a9938aace569f9e38c4265139c589d42ba0a90c60aabec88c16f892583d9e4b9567991cb66a4e27e7313941ce81d859d7ebb901008c0820005900808002081420248205601ad090001005291c06d400208009682061008042440d0a052002400000a410401401090000004300022000388030018040150001a0b79213a02200188a80000220110000f084220024080a04408040204a240c0a0a34420c10c880288a00281900310c4a2001000000100a10e849084002600440004510002130955008ca5000080504b002089041191010220550089b874804801504800a0404840400c244001840a0100e2c040aa0040000974202180098a52202001200091003400348000000020013404a001548949e00cc31680882b10a04041a1158800a2026b48420040c0016b000000000c26d025000600a1080834b90938401c9c38083da07c5846588e0d099d883010d05846765746888676f312e32312e34856c696e7578a07d6a1b6f1b2fa36724e14d42a9351cc1ea93f8028853b47c863d9f2b850b4e7788000000000000000084965a2031a085e19d724e35259057b8d57d9b78e11e89cc8483ef7a869bf98db510c216c0c6", - "proof": { - "leaf_idx": 56771, - "mmr_path": [ - "0x20614bde82a6d92fe261904b6edd0ecad1a05c79a4b9664bb064f482ad78a32", - "0x5c55301d823be3f57409a7770ebd65ed6cc19675dfeca2498b355e90c331f96", - "0x2d2639dbb309b6d580b55ca876a0d4081dfb5799ac568b9637dd33da23a8033", - "0x7337bdc57f2abddce74536296f3764631e0cb66ba9d1b6564b9734df7a6956a", - "0x6d9ea890765cdf15556568782cbe2e7b63526c146d274f1d85fcb727dfc4ee2", - "0x0986528edebe7e63bedacf6820cc7a6e36285bd5b08ffdf7f789ebf5f4e1368", - "0x197c0e1f3f891cd367cac728f646334e33e5f9aa6fa7ca81c028c286c006ee0", - "0x14f522b5a62c9ecd4857b7bfeb87a1ca239ba3961278a6c1b9a291629794cfc" - ] - } - }, - { - "rlp": "f9023aa0e5650fc10f96f1a5cbe2f5d844842688bf7174e8f05bf9362dac3fe9684c0349a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347940000000000000000000000000000000000000000a019a07d5090099ecb297b6e2b8cbcda12f24c3ade1797300d9c8f786e2559ef69a015533d3aee5ef5e9dfcc19096c20a071fa855e94d60636c9aae800e7e955b22ca05636b56fd1153ab2344c5927803d72d24e8195dfb6dae88ac98516aa86966ff0b90100800820000d0000828208162004000840101002000008002002100002800c0020c0108100020100010000020800023040000108100800270045000001202405011041820000218000201340180c00010000400000008602082400884040880281280200080a00c800009800040200284810030400940000004040001200088480800010000008108020201100080050c000000400000080401c00102204501005120804001804800300000201200010205000a0400668004020900a20040202030080010202101044499041000004000000000080081010044000b80045207808089002640010211200043000c00420040000001020000100820002100100005480834b90908401c9c38083a0955f846588e0ac99d883010d04846765746888676f312e32302e34856c696e7578a0a7ee55080ba796034d5741a55be03a54991101ae4bab146ebbbbafa7dcd384d3880000000000000000849ff42916a02e263943513047c71e996e13f520779cedc904b0e2022626920f6446674b7bc5", - "proof": { - "leaf_idx": 56777, - "mmr_path": [ - "0x738e63af94890994c684498c34ef0915a08a0f3f90ff333649b5cd06ef4099b", - "0x32d42136617db2a6b6d0b93f2b472a7880d422f0bff16a82b7ef34e026da178", - "0x4a706ff64a99ff7210b4eb84c3cb833bcab69eaf94f54e733e06913860f4ffe", - "0x2866e0617b791220100c398f856e1402475e9eb57fb87a8c7373945bf3a427f", - "0x6d9ea890765cdf15556568782cbe2e7b63526c146d274f1d85fcb727dfc4ee2", - "0x0986528edebe7e63bedacf6820cc7a6e36285bd5b08ffdf7f789ebf5f4e1368", - "0x197c0e1f3f891cd367cac728f646334e33e5f9aa6fa7ca81c028c286c006ee0", - "0x14f522b5a62c9ecd4857b7bfeb87a1ca239ba3961278a6c1b9a291629794cfc" - ] - } - }, - { - "rlp": "f9023aa0f1e59f936b1ed9dd83e9dbab1c57c8ad2af24749c6e6131d5baa2d76c2ecc041a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d4934794f24a01ae29dec4629dfb4170647c4ed4efc392cda0044960500ad689da02fb9f57a57ccad88b338e318fd797e448f031b8d2da4a2ba0fe312a8da99b212eaa0b37d0886b53559c93d70bb9fde9e26e331fedd43c1d1ea05f763c4747666fb11c69f642934eb55e15116e8d6effb16f081fae3d244094c3b90100820000000a000020a20814a204000140009010000070681800100400842048224001801040010201000000600220104a049102400218030011408211182403280880200200a8a1050203401888004020004004005884120224000a49608002c2680321684a251a082cc840000600281108010610c4000200086002100010880000b00000010102022028095008106b00000201612088a0f04801106246500505120804011085810200002802010210001802a2581e08204a20c000010c022a1050900142300119a4055201000400000012006000000b0004c082820044846a48409c02001010001580002401808420200e00000400000902c20002420060081180834b90998401c9c36483825f3f846588e12499d883010b05846765746888676f312e32302e32856c696e7578a0c28384fd44db464321b504c3185e33639804bf976698ed811fd55632dc5891b6880000000000000000849d987011a085f2ffd15d9b1325f1620716cd49d45b5e0c26f5acd23345f5a896ee33cd9f1b", - "proof": { - "leaf_idx": 56761, - "mmr_path": [ - "0x03e97f40662aea914cc16ea98dcf8344ce398baf45f87e64f382049a348947b", - "0x1bbfbaa08673c3d30bcc7165eb57bcef61b7deb9f9e34446d4ed1bb5a39b01e", - "0x5532e2d5276789492907c4c962edcda5038d5950d9f18da2e959c2e9f8eeee5", - "0x7337bdc57f2abddce74536296f3764631e0cb66ba9d1b6564b9734df7a6956a", - "0x6d9ea890765cdf15556568782cbe2e7b63526c146d274f1d85fcb727dfc4ee2", - "0x0986528edebe7e63bedacf6820cc7a6e36285bd5b08ffdf7f789ebf5f4e1368", - "0x197c0e1f3f891cd367cac728f646334e33e5f9aa6fa7ca81c028c286c006ee0", - "0x14f522b5a62c9ecd4857b7bfeb87a1ca239ba3961278a6c1b9a291629794cfc" - ] - } - }, - { - "rlp": "f90221a0f15f86e58dccb3f39710b2d726770897bb93108c662fa850a48c6a5bb72436a1a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d4934794ea7e42c7c9262e6831bfa7be71d67aa5523e27bda07ded0f44bee590bcba7a9d930759f1866d807e2ba60620436a1bf3e35fb935c3a0437adb198e63a0e7762d91fc37a070392113d5aa969d985fb6c3b27f0627f345a089bfcc92bd1f7b30c3e01f4fb178e901ff6a564edb18f4b561ff4fcb785d6eabb901000000000009090008022d9c30048040421190800160200035101002018428082861008000440302051000024000041000000108064280822000000003082421090000040000a0800001034008080402000040010000840200240208c040840042080000080a02000008c801100800284108050d200000000102000410040080002020041003c11002203929000830480000000600000c80410842102244500105160884049045810200005003000000201101a2001e0a000a2020100244820a1008810112020110010150410810000080000000200000c024606082404480680800b122001010001802002008910420000400400000000100820002440040003180834b908d8401c9c38083760ca7846588e07080a07242bdfb774d08cb5f757e9ffead40ab760ce73a86ae289e787e1394c6dae873880000000000000000849ff4f4d0a03309f0b8fe007a97341baf53660e8f8c64804bb9aa3f1de89fccd0f75ed7420e", - "proof": { - "leaf_idx": 56783, - "mmr_path": [ - "0x5fcdb2c1c95e27cd52e91d98e224e20d2b7ba6ad69bdf959048c6c4ce864e05", - "0x468622733eeeb16dde8b60eb0d9a247eefd7f6ec8c23cdf43ed78c9c0239caa", - "0x1356a8540da67e7e086e004aa06425f4a130f9ee67d0c781702ccc637655df9", - "0x2866e0617b791220100c398f856e1402475e9eb57fb87a8c7373945bf3a427f", - "0x6d9ea890765cdf15556568782cbe2e7b63526c146d274f1d85fcb727dfc4ee2", - "0x0986528edebe7e63bedacf6820cc7a6e36285bd5b08ffdf7f789ebf5f4e1368", - "0x197c0e1f3f891cd367cac728f646334e33e5f9aa6fa7ca81c028c286c006ee0", - "0x14f522b5a62c9ecd4857b7bfeb87a1ca239ba3961278a6c1b9a291629794cfc" - ] - } - }, - { - "rlp": "f9023aa0f28778f0e4bab6742ab926c3c866305f4c439080917e71d92cb2604ec56cfbdaa01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d4934794c6e2459991bfe27cca6d86722f35da23a1e4cb97a0b3e5fe06e88c122317259b80b9ed50955994537ddbca4fc8d7198ca233d03a0ea00b388f30c88ac6c63af6fcf6daa80d0790ed57ef3ffc570f9ac53be0523f285ca0ada5e90a526487d41f87f2ea43f104c29d75711b598f4ce90e6c7b3ea3809a36b90100b8a442190901008002a8b6229d4840404830520004270090921c2224856844306500c549a2010f894403900002e090051241898218081a4407b0a061002685130048a2080833ba00001b58588c4140203044808001c5270a64204ac251c00a68682688090a056880408840ac84027a5180052603410116c848420917804944008640096e9202018830a029000d524d950420a0b4b806a85b0848106a26584225120a8400d04d8b0a204400d212217e021481a9981e88226b6200000504060a414490136294219984055889680040740018007941001001146170807a44ed6a08399e12346a126513140531d0b50c7044164002d32048010082080a468048001580834b90968401c9c38083ee3a60846588e10099d883010b05846765746888676f312e32302e32856c696e7578a027c78d62f6b69fa063215ee5192ab0a85aa3136c5fb9aaf343458af98be7f413880000000000000000849e1c1c45a0e56bf5d6261ddb17d3a73ae968439477a89941f65463905e9d913657da7a4a4a", - "proof": { - "leaf_idx": 56765, - "mmr_path": [ - "0x1254446d8664b0b5a9e8a08d178e8e8e15f235e8b7b892f07b5afc0941474e3", - "0x3b661872651dcea20deb66d413ca1fd514b6644960af0de245e6359386611ac", - "0x5532e2d5276789492907c4c962edcda5038d5950d9f18da2e959c2e9f8eeee5", - "0x7337bdc57f2abddce74536296f3764631e0cb66ba9d1b6564b9734df7a6956a", - "0x6d9ea890765cdf15556568782cbe2e7b63526c146d274f1d85fcb727dfc4ee2", - "0x0986528edebe7e63bedacf6820cc7a6e36285bd5b08ffdf7f789ebf5f4e1368", - "0x197c0e1f3f891cd367cac728f646334e33e5f9aa6fa7ca81c028c286c006ee0", - "0x14f522b5a62c9ecd4857b7bfeb87a1ca239ba3961278a6c1b9a291629794cfc" - ] - } - }, - { - "rlp": "f9022ba09113d0094deb64c07faae83b19c1363037d18b527ac4dcef57989b284859f298a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d4934794388ea662ef2c223ec0b047d41bf3c0f362142ad5a0214e09510e7d0002ef28fb8a6abc1f289526f449a73e3239ffa16dd6fecb2920a0163eab2ce0b8d51b9d962fa84e5a5105b9ab5e5b89e16bb390c7cb8fd7076745a01abf48222ad284e051089b4a3fbace62372f944feab44959d49ad443fecadeb4b901006c010423194005020088166084048a01009042040404000000d404028080087000008010604242258402a8000009340000010d000000420000008541102601000010084000218020101310580e090000044390104084421220004ad0529042100802000a0a0000800ad800051400684184010400b0201000006010118120092001a040282e5140a82820000008005900000000020008aa40080414a2a45200010e08840050a58012040000810009040010a0a0080e28002a6010092004020201008021022001110e05902321000000600922008000150004008082005440683901b20214061020100004500092300844064000a0200001068208824c0050604480834b90928401c9c38083923eb2846588e0c48a4e65746865726d696e64a053ab3e023ee76e4f828d0a7c846bf736696c7cb0c444b0c08ebd7326bf8ebb67880000000000000000849d755119a0509aacc99b880dc50f1c8e84e993a011a18960971b8efaae5c50481f12bf7d95", - "proof": { - "leaf_idx": 56772, - "mmr_path": [ - "0x0aa2985337db44e94d7147873d5e2395297983dd8a7f10a4c652bf5f37df984", - "0x5c55301d823be3f57409a7770ebd65ed6cc19675dfeca2498b355e90c331f96", - "0x2d2639dbb309b6d580b55ca876a0d4081dfb5799ac568b9637dd33da23a8033", - "0x7337bdc57f2abddce74536296f3764631e0cb66ba9d1b6564b9734df7a6956a", - "0x6d9ea890765cdf15556568782cbe2e7b63526c146d274f1d85fcb727dfc4ee2", - "0x0986528edebe7e63bedacf6820cc7a6e36285bd5b08ffdf7f789ebf5f4e1368", - "0x197c0e1f3f891cd367cac728f646334e33e5f9aa6fa7ca81c028c286c006ee0", - "0x14f522b5a62c9ecd4857b7bfeb87a1ca239ba3961278a6c1b9a291629794cfc" - ] - } - }, - { - "rlp": "f90240a0a5335bc6b1f44e6623b3f1c4d2c809741f54619735459d6f58ad9f74bc72bcc6a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347941e2cd78882b12d3954a049fd82ffd691565dc0a5a05f6dfd5b402f20ab61dd96cc4f55e4df679076a23bb48fe6ad74b25d4c28d9f9a0e872502a606650b234982666d6dc13e18bda56779bd3bcf299647ad4cd766704a01349bb3d90fbda27ac44907a2eb1db118506caf06054266955d226e76d8cedc0b90100004c0040098c20c2022854b5241aa860021361000324081a00148030b000c0204110800004011141829000200b2418c12041000008c107050021a051086d0120d600504020209022882310180e8044140012c40041c41200280208225190eb400890280a0a4c220228880882810029480011040cd008804400e002100000212404421020000501002d20194108145a00082830080840c24008401023845003211208a6e85004a1020006a610018024201281a8891618000020c00f41260282084282054202031d08815207508018100000006907201201054002c1485d20680804b02a040018409001102800d0842a060004141025028000ab2b0e100120405080834b909d8401c9c38083bb9112846588e1549f496c6c756d696e61746520446d6f63726174697a6520447374726962757465a096fbc9ea86ee7f84a416f85e579007778a9742a6497cb10e049e0c6c635df970880000000000000000849db2f260a048003bf2fe90161e7bfd7ac139e75a7b97862fb95a0ee7a9f735d0db802a73d6", - "proof": { - "leaf_idx": 56751, - "mmr_path": [ - "0x465bf6481739bfde28b925fc0750156ec02b991c322aa0d4557875ece00a6fc", - "0x1510705a0a54387d56649073bafd7cf7ec531074d4669f0f667848ee86e44a6", - "0x4ab2c25a61e60e942e2202ac5670d7d66d1664d265668812fd686811e5e4a83", - "0x747a4f9148cd1686f4325cdf57cf446f69731a4054bed737651f5043de36db5", - "0x2e7a5da17cea629e713d4a361f9006b882b65db10301db8fdb085477cc41fb3", - "0x2472a661f9fe54a7bae6da2735f322277e68016267c150ef1b50e19d01cdf6c", - "0x197c0e1f3f891cd367cac728f646334e33e5f9aa6fa7ca81c028c286c006ee0", - "0x14f522b5a62c9ecd4857b7bfeb87a1ca239ba3961278a6c1b9a291629794cfc" - ] - } - }, - { - "rlp": "f90222a055043ef495f27059a681f7da901ae27afb396126ea107e2c3a0efa6f58437517a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347943826539cbd8d68dcf119e80b994557b4278cec9fa043c37215858084732eca058f8c0d8996497d27c723a13acb88df34bf549ec827a04e8a06d38b1e6c31626294049e039347bb2aec6b4d133aeea864a17dff9d45a1a0cd793b3918d0cae85a36e00adbe73e6bd5be37237009bdfcef0413994151bfc1b90100404a000c090889000608142c241209ca405303882165401008168a04880803a0c010c504428180210a8602801022114804210a00424006340021036980a401001800006004228d03000240380ca14022001000002884470225090807608006420a02c00a0a00008c048a408618106a000923244880088000004406104800840001044000001918322ef2095508905800000903340000a0400810102205d102251348048910d4850344040884190000081000a89016082c01b04400014502024840c90512001010800d10034400400680200000060002848c4a348101548068080496020000105011000426c090043a0e0184070000140804aa9702180cb0303080834b90918401c9c38084010e271e846588e0b880a01448ec1cd126668e957c5e09418dc350c6b1b3276ca50bd7d7f225b59cf167558800000000000000008499fccb35a0ae3ab359b56f15f6f6be1d41b36066b260c073b6e22d68e8e3408863ba71b6d7", - "proof": { - "leaf_idx": 56776, - "mmr_path": [ - "0x4b5baa9aecf921522745f67ea3901956ef3df99748c9e7239e0b6e7a7f87355", - "0x32d42136617db2a6b6d0b93f2b472a7880d422f0bff16a82b7ef34e026da178", - "0x4a706ff64a99ff7210b4eb84c3cb833bcab69eaf94f54e733e06913860f4ffe", - "0x2866e0617b791220100c398f856e1402475e9eb57fb87a8c7373945bf3a427f", - "0x6d9ea890765cdf15556568782cbe2e7b63526c146d274f1d85fcb727dfc4ee2", - "0x0986528edebe7e63bedacf6820cc7a6e36285bd5b08ffdf7f789ebf5f4e1368", - "0x197c0e1f3f891cd367cac728f646334e33e5f9aa6fa7ca81c028c286c006ee0", - "0x14f522b5a62c9ecd4857b7bfeb87a1ca239ba3961278a6c1b9a291629794cfc" - ] - } - }, - { - "rlp": "f9023ba096c80b8e05803aab0712789938329d3b8a4dcea3da31e1f858b5525a2ea3393aa01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d4934794c6e2459991bfe27cca6d86722f35da23a1e4cb97a0f4b88fbaa5312399c8534f74389e5843fce706f4f626fd942a72e8034da1c66ba04df9e99b45043e641a9c752462b4601a4b8ae7ec20a49cd65c202416ddc20706a0d1380e2af3db1e5ad40175f27c084705c9bf794b234a61b1191236b18859c74eb90100f2120001aa1078040a39d522545ae4f0601418023082741243144211d160b23ae2dab4ea204ba6011aaf02b513b495e3e9752c5014eb133d3000575c40ae2b0370da404a04e2a2603313496d08a1c4b98b10089208c4b6d0240b5aaef5b20a026a8e9c8a1b298b047caaa15491523887cabbcd9041049602286f0c95030588c19be00561015014482aa40c09284c61e09b3642c15a10cb61aa2258b28658a645c608052014a6a28688504ae276a8d5023c60a02c8e29690a60a1a2c3c72a0646518081a2870913230df10392098ce2871a6050311080105f4020acb24d046c094a990a6808302912480129acca5c221f040481220884042e93028a206274943c80834b90a08401c9c380840173d001846588e17899d883010b05846765746888676f312e32302e32856c696e7578a03796340bfbf9d12a2fdac43a4d16c599c528f8af72d12c0c661fb86868222fae880000000000000000848eb477bba0e8add4f2cdae4ac3ea7d5011d2c50be815055de2bcaf56266bc7d2ad32fc2425", - "proof": { - "leaf_idx": 56745, - "mmr_path": [ - "0x6085397acd29acd5cd43e39819f011f289de7e5d79323e1e72e6e51959003b7", - "0x2b5184b6be4480274c6b7447ac50c3e0494c332ecc788bbb58d095bfa2740b7", - "0x669a1da19287710e13292c78afa9d56d5831ad6d2086ff1bf4fea426413bcaf", - "0x747a4f9148cd1686f4325cdf57cf446f69731a4054bed737651f5043de36db5", - "0x2e7a5da17cea629e713d4a361f9006b882b65db10301db8fdb085477cc41fb3", - "0x2472a661f9fe54a7bae6da2735f322277e68016267c150ef1b50e19d01cdf6c", - "0x197c0e1f3f891cd367cac728f646334e33e5f9aa6fa7ca81c028c286c006ee0", - "0x14f522b5a62c9ecd4857b7bfeb87a1ca239ba3961278a6c1b9a291629794cfc" - ] - } - }, - { - "rlp": "f9023aa0e51734aab94ff68aa9b5b4a6b3f40ec3d3dbcbf188f4db4cb544781f0f669d09a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347940000000000000000000000000000000000000000a00a52866480558f9ed6bba483d1525143a878a93532b017ea5b0b542d150ee06ea0e4318c1e17b44e34a2076148fe12a9d662123d440cc255821f3bf5e5871f79dea0526e1dd970659c9cc5d657805d74a155de8dc95421699400048f605b312834a4b901008100212009010044020a9423a416c96200d94600400000001b120100d0880c226900908868090a010000000000243122410108000213520004000000023233011001a00020a1c00101028a190e280040001400089984920430020920408402022802000a0a20420608c810140e2c79010801062000021000404022508002050300202180000114002430218208005800040004884088814008005022c4d100a1020814061a04860218804020000010a018c0a4080e08000a2204402c04060219009021020100100a031205000000422000400180001e020570809200e48428082090020814300010d4002000910423c28c01000000048004c3004a500540621080834b90888401c9c38083916fd9846588e03499d883010d04846765746888676f312e32302e34856c696e7578a0d9624723cecb96814b85be66e398ff439d5bc536a1aca4db162c8af3991dea56880000000000000000849d8cc904a064af51707dccc467a14a48c1f6d26570bbdbf0c4b1a05d05d978d69650b44029", - "proof": { - "leaf_idx": 56793, - "mmr_path": [ - "0x6adbc04927141c6e56dab4a3cf776804704cc3e25f566a920aa61a48fe53b91", - "0x6e2962423bc116df450d55bdbfe86d7b0d683bd9eccc918a427fb1878e0a3dc", - "0x68c79a5b751a27a0eea026356c81602c1a8d2f40cb0a119e3aa02db02254015", - "0x0ccfbba1966a030efca79b702bec3afd99554c73bca5be56e31ac9e0e87021d", - "0x19afd1b94b54cc80a09e4e5e2622401e71092b95427c854fe2d58823da87c93", - "0x0986528edebe7e63bedacf6820cc7a6e36285bd5b08ffdf7f789ebf5f4e1368", - "0x197c0e1f3f891cd367cac728f646334e33e5f9aa6fa7ca81c028c286c006ee0", - "0x14f522b5a62c9ecd4857b7bfeb87a1ca239ba3961278a6c1b9a291629794cfc" - ] - } - }, - { - "rlp": "f9023aa067c536155aed987803843abb9a7bd42681e279764233d5e2adebc4dcfb7ba335a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347949b7e335088762ad8061c04d08c37902abc8acb87a05a921144e3072a722800de984bd7a67b6a4eb14817ec96bb30c24cc0b0cda2dfa0bfc09ec689997ed1459945240681ac32cf2067c1ec10e12169923e73f6e67091a04d9fac40a673422272fafe90a66a0745a46d5e3c31deb35abbb0f88d7e6c113bb901000000000928000b0086889521041100c901911209502040100510738480000220401084503201000188042200d024100000016800000002202000000900a60502322000000023801000035408080400000010000420854a9c240009c4408000c2280218088b010a4080c980040428694000170e0100000000100818180c0001a0012800082211000064a5090008105b00008102001208c140091210228650882512080410580581021001000a008100001000a0801608002a2282420005020a2980820502000010000150010094408002280041100200010d52208208c481e84842900ab40010005300002020882520480000800004022040830802500002103880834b90a28401c9c38083b073a1846588e19099d883010d04846765746888676f312e32312e33856c696e7578a0baf41e669733172313849b34de0c09da351c0cf29dd7d94364cc2a924a21101f8800000000000000008496ecf4a9a0090dacbb66d1d628a352db1386f2a99dc51eef759f7010262800fe7c62197404", - "proof": { - "leaf_idx": 56740, - "mmr_path": [ - "0x2d8115d6f70372e12dcaf378992a2d5fd1d3188b1b8dadafbb283de952f0530", - "0x169b2e7a353ef7fc040aad6f46c21bb3bc9f0ac70d4f1fe1df75003a73c8ce0", - "0x5c40fce3fdece7721198e5b2c6a6748ffcfb9a339437a66ca04f0401bbf5b80", - "0x2d7285179432c108172787974fd9e1760d01f9cd2929b040db3a69f879a2f92", - "0x2e7a5da17cea629e713d4a361f9006b882b65db10301db8fdb085477cc41fb3", - "0x2472a661f9fe54a7bae6da2735f322277e68016267c150ef1b50e19d01cdf6c", - "0x197c0e1f3f891cd367cac728f646334e33e5f9aa6fa7ca81c028c286c006ee0", - "0x14f522b5a62c9ecd4857b7bfeb87a1ca239ba3961278a6c1b9a291629794cfc" - ] - } - }, - { - "rlp": "f90221a02f3ecd63751b27b608b26851fbc4dd99ab87ec9cdd6103cbeeec51abe38c28dfa01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d4934794ea7e42c7c9262e6831bfa7be71d67aa5523e27bda073245e2eef964e441ebb75ad5d435fbdc81d445473e6fc093f2b746e8837376ba0862d73d190dfc3356ef813bd7b1f8acc24d5849adac204cb5b66ed52d184d395a033010e58444be84eefa424d4c2e513c67da5338b7eca8237021c2ef104cd345db9010004240208180400000208543004044a61409009002004080008940220800228e041008000420108f10802001000001084000108c202800a800020814080a405004880a0000021808200030008080002001805008040b40b102108088040c021022824000b4a08800000c8002400023a1800150780c418000000240010040008c400a00610420541022020000408004a0000000106c81880440800107384d10021030806029004a406000400522284000010a4a01106084d0a20000c038c2a024142c811220200930081d10108010440242401780044080384520092014580680808900a400012105222002424808420242000800000402006c704024040a0543180834b90988401c9511183a7aa98846588e11880a0ef0237977cec3e6a00e2d1d3047c582d5a6055e67a9524a71a6fb17f653bf35688000000000000000084a3080319a0b0accc6e51bb3f9d66251f199fcbc4599eecfc964d54ca23f549139322999313", - "proof": { - "leaf_idx": 56762, - "mmr_path": [ - "0x3c32e9feab36626c77ef21084d72c109e0245c48f03fcb77382f1300c96a111", - "0x1bbfbaa08673c3d30bcc7165eb57bcef61b7deb9f9e34446d4ed1bb5a39b01e", - "0x5532e2d5276789492907c4c962edcda5038d5950d9f18da2e959c2e9f8eeee5", - "0x7337bdc57f2abddce74536296f3764631e0cb66ba9d1b6564b9734df7a6956a", - "0x6d9ea890765cdf15556568782cbe2e7b63526c146d274f1d85fcb727dfc4ee2", - "0x0986528edebe7e63bedacf6820cc7a6e36285bd5b08ffdf7f789ebf5f4e1368", - "0x197c0e1f3f891cd367cac728f646334e33e5f9aa6fa7ca81c028c286c006ee0", - "0x14f522b5a62c9ecd4857b7bfeb87a1ca239ba3961278a6c1b9a291629794cfc" - ] - } - }, - { - "rlp": "f9023ba0c4538101ee25506cd2879e2025a77e542078affe52dafa051ed9a8130f881edaa01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d4934794d9a5179f091d85051d3c982785efd1455cec8699a0f52abb380b69753edd9a1269687628f5b6fc1663c87e03b35c7b6c0a27c7798ba02f8fdd1e30c764ef539c7b0b3ffb8f4a571a18c9fbec90e9acdb7b5544f2665ca008aa96f25da25a16e6dd04c8195559d7b4bd93f755b2e08b5151950e185bd7f3b90100990a47ca396a1041ae0f16210eb2096d0831061430a8a6187d10840b90f7bd784142a1332ecd4ae32fb90823a1057875161f5da404415324b9a49ccb01b5e341c08c183e70e1db11180f30388ae0a45c2c871390f9e47231304b4d7541ab06ebeb519459fab3c3a60ac899259c22eb1108198f27882ac9544c484257a730001c1308658e211b12e064e6ab570870c8201474d7ba46a3a9e6285470aae4d361a132dd34247b86a512cc9041eb030e4408b994a08b5f2c8671b6093b65cc46831a88b5414a2202308f8dd647250c175a9148c0f9e0104fe6156ea79900cef8e9d906b42e3f37191818a0d4600983c630372e53c87911085fe6eb47aed1b360e23a80834b909c8401c9c3808401a207b0846588e14899d883010d05846765746888676f312e32312e34856c696e7578a000d47b1fb12ede684601c0bb267585f7684f26b03e5f656c504b8d91abbc0b23880000000000000000848eef1541a03298afedaac7de94ff461a277ab6d84169a271af7b67368951f70f293a7c6405", - "proof": { - "leaf_idx": 56752, - "mmr_path": [ - "0x4279f0e64b53982455ed68bbc8a633c6894522f6bbdfe157899375bbd1b668c", - "0x1510705a0a54387d56649073bafd7cf7ec531074d4669f0f667848ee86e44a6", - "0x4ab2c25a61e60e942e2202ac5670d7d66d1664d265668812fd686811e5e4a83", - "0x747a4f9148cd1686f4325cdf57cf446f69731a4054bed737651f5043de36db5", - "0x2e7a5da17cea629e713d4a361f9006b882b65db10301db8fdb085477cc41fb3", - "0x2472a661f9fe54a7bae6da2735f322277e68016267c150ef1b50e19d01cdf6c", - "0x197c0e1f3f891cd367cac728f646334e33e5f9aa6fa7ca81c028c286c006ee0", - "0x14f522b5a62c9ecd4857b7bfeb87a1ca239ba3961278a6c1b9a291629794cfc" - ] - } - }, - { - "rlp": "f9023aa08d2c07e3dd9929d8091ed958abed4a7c42ab15acf7c69f3936a351a18c3462d4a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d4934794c6e2459991bfe27cca6d86722f35da23a1e4cb97a0979b0601cf12f072dac10dcbd30e2896f37ef1e4a2968c61466d637c2059fa1ba0e74187aa3d124ec75192e4e3fd48a71925552b07957d840c53f35a31d5e0a87aa0df170e3ee75603e09b7407f4c2d19ba69acb695ffec421400fe68cd4b82befe3b901003000600818088000020c146904948b0a6091040010a4201000841000808808620008a1006010044508008002040c1401000102802000422082000001082401096001000081238000881a400808000002021020100a84421024a2080045800340094030081a015a0000c8100018c42b108021840000010000004008190070032052600092120110002410090008da4010100780a0094800018811102286510085b20844801084810280180000040944011401a0401628200a224020100500020000802122008210008510114036000088000001d0002880041200ee004429694c08900b000830001000000400806000c4082100100004a400802402c00000090080834b909e8401c9c3808366cd40846588e16099d883010b05846765746888676f312e32302e32856c696e7578a0781bce077c1ac7e35adaf2d957b60d7f5d6a260f43742d0d8f0eaf123f84461b880000000000000000849a240898a05f8e081ed925e695fb0324ee55899c5c5f7f2d2ce0597550b6fb7e5c94c033de", - "proof": { - "leaf_idx": 56748, - "mmr_path": [ - "0x4f75ad136e31467cc463c5c704514df148f6c031b60da83396292773e8a4529", - "0x579ae063fde46b22bbfe5d47944e18c90cd0a6f6f6b569c8831712093791dec", - "0x669a1da19287710e13292c78afa9d56d5831ad6d2086ff1bf4fea426413bcaf", - "0x747a4f9148cd1686f4325cdf57cf446f69731a4054bed737651f5043de36db5", - "0x2e7a5da17cea629e713d4a361f9006b882b65db10301db8fdb085477cc41fb3", - "0x2472a661f9fe54a7bae6da2735f322277e68016267c150ef1b50e19d01cdf6c", - "0x197c0e1f3f891cd367cac728f646334e33e5f9aa6fa7ca81c028c286c006ee0", - "0x14f522b5a62c9ecd4857b7bfeb87a1ca239ba3961278a6c1b9a291629794cfc" - ] - } - }, - { - "rlp": "f9023ba0716a2f539f0c8a242bda3fce173f5d578853f3b064295ebfa95ad9716d936f32a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347949a6034c84cd431409ac1a35278c7da36ffda53e5a085a165587dae6c8ca7e680a8301b474d7c0f5dcd1e158339e790e1e39aca7a6aa043e32fc32e9cf78eb2696d90bb897470151e16bb57715e2d3a1b659d23a5d01ca007f4025e56edaefdbc0a8dce13d3dc24500d2d0720172bd616e476571454b195b901008ccc553aae5c276842cd56685412b57d08f0011810eb4e885c989ca296980d2ac01bb713558102e501525e110134328b6119688207055b950979960372766d46821913f582b38cc124b20a9e8a610656380028a0dbc4529a389429034192a012191a508f1b30621470e854b40c67ec2412350fa8e20f924d3c0e8a1a32298c3858e2a9a3634b4887b93a10c049e0ee100469484003bb904818bc5822c5d485237f0956cb1597c64a6cd2d7a477f192e45a51b858a648880a20429a1556eaa69408dc45820a68982c4393c19abb2065bea404a815c06ec5546a988f00e6f02c2e9db8079abc990cf08b1a2124cd54304cac8142543981a99edfd98b402b21301180834b90958401c9c3808401971a40846588e0e899d883010d05846765746888676f312e32312e34856c696e7578a0b6fcf34245e71903a8f2875957a0602c1f8e8d9d610c51a598cb23e741e18591880000000000000000849015eb93a0ef9e8c23eb3cc98d62f41bcdb51edf9b9cee9d74c4ecc21e50da3445014e9a24", - "proof": { - "leaf_idx": 56768, - "mmr_path": [ - "0x2528347ee79fbdc22d07104ab2de072390e954f12b59b6be3e8f416de84f4e4", - "0x0d084fca33c515832238f76ba0c4f77e7c4dd087441a0441cc8a3a7fbebee04", - "0x2d2639dbb309b6d580b55ca876a0d4081dfb5799ac568b9637dd33da23a8033", - "0x7337bdc57f2abddce74536296f3764631e0cb66ba9d1b6564b9734df7a6956a", - "0x6d9ea890765cdf15556568782cbe2e7b63526c146d274f1d85fcb727dfc4ee2", - "0x0986528edebe7e63bedacf6820cc7a6e36285bd5b08ffdf7f789ebf5f4e1368", - "0x197c0e1f3f891cd367cac728f646334e33e5f9aa6fa7ca81c028c286c006ee0", - "0x14f522b5a62c9ecd4857b7bfeb87a1ca239ba3961278a6c1b9a291629794cfc" - ] - } - }, - { - "rlp": "f90221a099bd24b6956f5c9d3fe1605b1f1fad5ac7779ff2334deda0ab90ba23e3ee2d2ea01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d4934794ea7e42c7c9262e6831bfa7be71d67aa5523e27bda087ef78ae981b3418108603d81c57312561c624c692ce3c686cbb24e3809c9175a033ef91fd4c6ae55f40b1852c6ede664ef3fe06f9f5600a360f5371dd4b2188daa00bbd64ff33a43ee35624ed25932c80c585c70a64452e420de0ff2536fc31f9f7b90100440f800a680812c0828836614c180041009e110100a420102692d402942800306041800348150b6102071b1272b01c000805c840002483040421000890240101f20082a000a39010208b451d2904580021404490c8d44a0c641948a240a012c64800950a1a0b700404c99095040e281100114c002808c80008700210801800a240208400011340e430201960485858181a2101c00048c040181014a20450d805122906205407b502d08c224a118b00009004a8031f28400bb090250146420a2c00880542922b5084895051a02c0890405840208122080115430083664c81f91926902a0400121019c8102000804438168480155010018040a2010b50c060103880834b909f8401c9c38083da647b846588e16c80a065b40922725c03aac2ed59edf8bf1313a6f7bd0b0602465a073bb9e8db89cfa9880000000000000000848f86f3d4a0c5112e7c696277adc7a983cf0131073ec457ea05a977a84a442a5ae4d144552d", - "proof": { - "leaf_idx": 56747, - "mmr_path": [ - "0x0dbf298346ae5e99768d16d70fcd8b8d6c200b98af546a35cab5225d9819c26", - "0x579ae063fde46b22bbfe5d47944e18c90cd0a6f6f6b569c8831712093791dec", - "0x669a1da19287710e13292c78afa9d56d5831ad6d2086ff1bf4fea426413bcaf", - "0x747a4f9148cd1686f4325cdf57cf446f69731a4054bed737651f5043de36db5", - "0x2e7a5da17cea629e713d4a361f9006b882b65db10301db8fdb085477cc41fb3", - "0x2472a661f9fe54a7bae6da2735f322277e68016267c150ef1b50e19d01cdf6c", - "0x197c0e1f3f891cd367cac728f646334e33e5f9aa6fa7ca81c028c286c006ee0", - "0x14f522b5a62c9ecd4857b7bfeb87a1ca239ba3961278a6c1b9a291629794cfc" - ] - } - }, - { - "rlp": "f9023aa05208e25c2c580286fccf2af5513b6f293de2aa4ac618b3877791f3674a318f40a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d4934794c6e2459991bfe27cca6d86722f35da23a1e4cb97a0cc7d529d1335046f0772b49c5a0694cb26ac8ca8c09040369dc3aad6379528c5a0ec3eb4e86933d91d836425a8fe00bad14c6231bbea7ef98d822b1f65d9d5ad6ea02bcfe7572537a3f6f60f13df785b52005cceeda82cb51aabd3c2d0f73f85cc7eb901002421a0000910000206a816208c11044988b044080e74029002940420c0410e206c50c34240290a310200084400085404000504000a801220111880280026810002800e380830808020134219080841202440004490c54200650008d2448002424a20040a0a80800008c8401400002a0188010c0780009640004600108202100410200518428140ca2028891008584c1000200010010888480812116204510005168a048254048312002001c2084010001860a0901e08830a2040810184021200288121020400980401f009000208000000e0000180100014e0209a024cc86908029056010410401040806451d40428860500020200a0000082000a410140401780834b909a8401c9c38083b742b0846588e13099d883010b05846765746888676f312e32302e32856c696e7578a06dae185ba8b03598828284bc473eb72783e3c27e3a80ffdf3f1484dadf72867188000000000000000084951dee4ea010ac60e5d1385d10370a0ad81b6b2f4ab1b73d5761dab4e141892a31a2417ae1", - "proof": { - "leaf_idx": 56755, - "mmr_path": [ - "0x6854c462b7f2ae24327669873b5e69b924987a56b066e7c8a56047648a0442c", - "0x46effc3b0c975ec767d5a3195f8944cf9b2df4982ca5f4f922388bc57d1ffdb", - "0x4ab2c25a61e60e942e2202ac5670d7d66d1664d265668812fd686811e5e4a83", - "0x747a4f9148cd1686f4325cdf57cf446f69731a4054bed737651f5043de36db5", - "0x2e7a5da17cea629e713d4a361f9006b882b65db10301db8fdb085477cc41fb3", - "0x2472a661f9fe54a7bae6da2735f322277e68016267c150ef1b50e19d01cdf6c", - "0x197c0e1f3f891cd367cac728f646334e33e5f9aa6fa7ca81c028c286c006ee0", - "0x14f522b5a62c9ecd4857b7bfeb87a1ca239ba3961278a6c1b9a291629794cfc" - ] - } - }, - { - "rlp": "f9023aa070b6670e6f18f04a5ba3425f66b24c221dea670997a0df45a7d20c3db4ad4325a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d4934794670b24610df99b1685aeac0dfd5307b92e0cf4d7a0d2756ae5fc79f9d03ee0ceca084368dfcec5f8744db08f569b7467260e4f3d42a047000eddfa156473817de4470c4c2ebbe9a7b6af92c16916005aab9345bf47cca09b97362e1195c738d6c673c279ec60dcf75c77be0686fe2ff932e1bd6d4cee6eb90100024901003800040282083c20041990419a9000458024043008144000802208b06200810240050a9100020000002014c00801085022020a2009280000802401378300024009208002a073c408090100800404802040851b1eb5080810758228420c22288c1a01220000cac0004048284180910c0a30010000000027131080042002200438020d100a2421090008504800880801149548804048005023055081b5128806285006e112000420062200050010c0a4511e09050b3080c45004226268408a21464000108005d001204410c804100190440000020640d1a20144e86d0c08900a0120363010080020008204300417101000200000488208024208e0007980834b909b8401c9c38083c5ce4d846588e13c994e65746865726d696e642d72656c656173652d312e32342e30a08621a65db00bfa79edf921ee2f8e114101568b9417a4b716299b67ef6d11a2db880000000000000000849166d08ea01ce2950f39e6557d4d70d5fbc8947393148d5c9e527f5e9ee6e2e1d390b04ea4", - "proof": { - "leaf_idx": 56754, - "mmr_path": [ - "0x07e259e398ac250f473eacf3a9240002acfd9f336bb96d66d8c9531498f55aa", - "0x46effc3b0c975ec767d5a3195f8944cf9b2df4982ca5f4f922388bc57d1ffdb", - "0x4ab2c25a61e60e942e2202ac5670d7d66d1664d265668812fd686811e5e4a83", - "0x747a4f9148cd1686f4325cdf57cf446f69731a4054bed737651f5043de36db5", - "0x2e7a5da17cea629e713d4a361f9006b882b65db10301db8fdb085477cc41fb3", - "0x2472a661f9fe54a7bae6da2735f322277e68016267c150ef1b50e19d01cdf6c", - "0x197c0e1f3f891cd367cac728f646334e33e5f9aa6fa7ca81c028c286c006ee0", - "0x14f522b5a62c9ecd4857b7bfeb87a1ca239ba3961278a6c1b9a291629794cfc" - ] - } - }, - { - "rlp": "f9023ba06263086dd6d9ab29bcf412e2661f167083425ebcfc640603298d8f0679f6a4aaa01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d4934794ff58d746a67c2e42bcc07d6b3f58406e8837e883a0acdbc0ab64e7ab93515481b2c64324fc0330551787ea634d54076b93b0686fa9a01c47144c6e3b446a8d14138970d6d9824614c4f2c3dc26ef5d2da08a59541ff3a044c4c416a63b6bbd9c19853cde2f61745221ab71e1c5edd9827ed2698190a08eb901008840000608000040001c14608c0002600002010404049020204001009000006801108180545000e18708010104081000480100180040422400000010102421009002100200008082240300081800200284430450008402026401a86042880a010800800a8ac90020028840005000a80041350400002010400060001224100720014050001012100060200000088880100001082000000808000014a284500001420a0080500684020420008000000410100488080604010020000b0104000324008002020000100201d00349004018002020008120003405002081004464691800900200035020101800000040400c00307005200000000ca00602300040040080834b90898401c9c38083688c7a846588e0409a476f65726c69205365706f6c69612d4265706f6c696120513966a0632b3d9c9c9016fb3cc7f4ba94aa0acf25bf7371a3fc60684eabfd6ebe5ca70d88000000000000000084965ebcb8a082eb7bd020477193e72705af093c3a20a74cedc52de6a194a7de57c54e9161d5", - "proof": { - "leaf_idx": 56792, - "mmr_path": [ - "0x4a6beccfb03e1656c1ca97012d16ba1ac45344f7623c9e7ae1619998c1cecca", - "0x6e2962423bc116df450d55bdbfe86d7b0d683bd9eccc918a427fb1878e0a3dc", - "0x68c79a5b751a27a0eea026356c81602c1a8d2f40cb0a119e3aa02db02254015", - "0x0ccfbba1966a030efca79b702bec3afd99554c73bca5be56e31ac9e0e87021d", - "0x19afd1b94b54cc80a09e4e5e2622401e71092b95427c854fe2d58823da87c93", - "0x0986528edebe7e63bedacf6820cc7a6e36285bd5b08ffdf7f789ebf5f4e1368", - "0x197c0e1f3f891cd367cac728f646334e33e5f9aa6fa7ca81c028c286c006ee0", - "0x14f522b5a62c9ecd4857b7bfeb87a1ca239ba3961278a6c1b9a291629794cfc" - ] - } - }, - { - "rlp": "f90221a0c2af7c1671063219374a4fd73bb215b45877452a273d2c726030ba75722d7498a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d4934794ea7e42c7c9262e6831bfa7be71d67aa5523e27bda0b6d54d674760de632e5d4fe25edb7b85377d66bf03aaf1e91ff02b6704664ea9a0cfa55b48ed044f4a91e163c61dab8ff2aeeb01b4067a4844a3b2dd9b8b81606ea065aa714cbce818b86e3f0740749ff214ae9757e08e5420be72a5a18cc1bc9186b90100000200044918000002099422040000400050080400ac100000330002800024304000c00200810a010002440081083040000188440601030000202001802001014048002000618000410a50180a280000000424400880020024080a0050804200081220481a80000404c8008400086a2180032500000a000000404055421000010860010000161002202000030800c00010008080484080401a00102224512c0502094448d3048006900400010c0804801242a0004e080440a000740014028e00008b0542000010009714010202010080002840800088800558208001440928080090030c005011194002a4c4a00420100400001010000040930802900060421180834b908a8401c9c380839909bc846588e04c80a0c5cf6498cd5c1aca47f847e05643e10d522b9fc9e232294623339e6480629893880000000000000000848c28d9a8a08496065fa516a04ff2d31b2434319488b5d6c4a4294cd020e455ccf3d40f8d26", - "proof": { - "leaf_idx": 56787, - "mmr_path": [ - "0x697c57e9af271d80265a0f96e1f6d1eeb3bcd290ec9c6076d397b214768b241", - "0x6a6a6626115e03d8dc8340a3cb9354d419bdf903d78fabb3cac6661c9608291", - "0x1356a8540da67e7e086e004aa06425f4a130f9ee67d0c781702ccc637655df9", - "0x2866e0617b791220100c398f856e1402475e9eb57fb87a8c7373945bf3a427f", - "0x6d9ea890765cdf15556568782cbe2e7b63526c146d274f1d85fcb727dfc4ee2", - "0x0986528edebe7e63bedacf6820cc7a6e36285bd5b08ffdf7f789ebf5f4e1368", - "0x197c0e1f3f891cd367cac728f646334e33e5f9aa6fa7ca81c028c286c006ee0", - "0x14f522b5a62c9ecd4857b7bfeb87a1ca239ba3961278a6c1b9a291629794cfc" - ] - } - }, - { - "rlp": "f90240a0bddc82eeb87c76417268bdbd97ead20a65510a39e08087b916be2fb28703b251a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347941e2cd78882b12d3954a049fd82ffd691565dc0a5a0ecf5ac1fb2bb7fdf271cfaf1ba64fb0b41b1879335ea2a857f4c470103a26211a08d4fba4e11e31ac9c4e992a3b39878d0f60a17d42afaa9daeba345fb1ef5c018a0dc9469183067c5f641bd984fea6b85673784297d76c743a51d49b5c7ef606f94b9010004000000080800000218142004002048001002000024002119144050c04284b04014a14210090201108220000000108400010010220002400820018c0820010300000000003180422103400808200800002000000080020224000800e1900002084604280a000200008840140040280080318c04001000c0002400151800000410800000608008002020040008404800200409001218c0e02810102244500025028804021404800300000042100800001042a000070a04002048c80085420200408001420000108005500140245100862800480008c28004502098104cc0ad2802988a0800100018080020008004200424008008800028088200061905e0401080834b90a48401c9c380839f78af846588e1b49f496c6c756d696e61746520446d6f63726174697a6520447374726962757465a019a2917630f5454d97b6bf9aade1108a3e4a0d50e4e77662bc798c6705cbd8518800000000000000008495b1233ca04ac525d6ae8601e17c2d43c50445533796ec391f5c7a12478dff665cf565dd45", - "proof": { - "leaf_idx": 56737, - "mmr_path": [ - "0x64130e38328c05edf8377f9fa0852888d699b45119a55b6a068d95996322877", - "0x20d7bf52f0774bbfaaa76edacafa5e2cc30d543faf6a59ca865e1e703b863aa", - "0x5c40fce3fdece7721198e5b2c6a6748ffcfb9a339437a66ca04f0401bbf5b80", - "0x2d7285179432c108172787974fd9e1760d01f9cd2929b040db3a69f879a2f92", - "0x2e7a5da17cea629e713d4a361f9006b882b65db10301db8fdb085477cc41fb3", - "0x2472a661f9fe54a7bae6da2735f322277e68016267c150ef1b50e19d01cdf6c", - "0x197c0e1f3f891cd367cac728f646334e33e5f9aa6fa7ca81c028c286c006ee0", - "0x14f522b5a62c9ecd4857b7bfeb87a1ca239ba3961278a6c1b9a291629794cfc" - ] - } - }, - { - "rlp": "f90221a03084e8ca33788904b3e5f76ee5969876180ede1ba1854ce8a037580820419b9fa01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d4934794ea7e42c7c9262e6831bfa7be71d67aa5523e27bda0a002b49d29ab37f12f6edbadaf1dbcef6c4cd23a04a1c36c87d3b75016eafff3a0cd722f25c80a4a94e9f0afcbe3c957dfd12eb6be0a8c750061f9660896b28d8da0d87291054c73b5e9351c97568d490986ea79d53409bda8f6cddcddf6fee1129eb90100000061004b00024006191422040200c022b60701000541020019000290064e60c0158442400106452b100204102410000c054c8088404a250180906000a0054010805044d02a8000a0a26018088c0410840080001084020026100a2240800e030e2a080e2b024a0008c904660048680805134c008000800001600010208088040120100200d5001022a1820408404c1025011b120008824449121022a4500205020806005904824208020044044210001001a8020608000aa0000000950602010090610221043000015001002022000022000055302000944000a30044c02f0808b00a040a380010000662c082042c0a1604060000504000aa0a02500b42101480834b908f8401c9c38083e2b070846588e0a080a07753d62b77ce1ab419310c15ed62211d6728bad1ba92801adbc825446f3dc7a788000000000000000084a02540daa063f9bf4a37ed451b247368d04cd23f61eb0a7e7aeaa8be344358e1cdce15abdd", - "proof": { - "leaf_idx": 56779, - "mmr_path": [ - "0x129f7f6726fc1ca38511ef483a9efb5682170a8f57c30c30491eff6abb128e9", - "0x2b660cf54e59edc43cdb275b2393a5c6061200b803f152808ef66e63ef71d24", - "0x4a706ff64a99ff7210b4eb84c3cb833bcab69eaf94f54e733e06913860f4ffe", - "0x2866e0617b791220100c398f856e1402475e9eb57fb87a8c7373945bf3a427f", - "0x6d9ea890765cdf15556568782cbe2e7b63526c146d274f1d85fcb727dfc4ee2", - "0x0986528edebe7e63bedacf6820cc7a6e36285bd5b08ffdf7f789ebf5f4e1368", - "0x197c0e1f3f891cd367cac728f646334e33e5f9aa6fa7ca81c028c286c006ee0", - "0x14f522b5a62c9ecd4857b7bfeb87a1ca239ba3961278a6c1b9a291629794cfc" - ] - } - }, - { - "rlp": "f9023ba05544bdb1759e385926f39ddb330cb33b397d019eb7b89f2325a33e8c3bdcee2fa01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347946a7aa9b882d50bb7bc5da1a244719c99f12f06a3a064ec0f887ffdab31ca9c9e92441f72165a0b5663f2d042238c75564247e17796a0d6741f87cbf750c43aafab643669cb6760473c12e72d170c13505fe6e3edb1c9a0c68d4c973e0520d30ff00e64190cda094b3677a9085b66b7910b36361e279b6ab901009508084a1e20084687091533249e276301d0c00f2c2c203208d4c211912a4cb0c041d1104e97022d308a0a00010e148a30c54436c6a27b21050000ac0a74210a0000471401e3943b231344198be68a5020f6211878c45a8a7501c84471884fc36822850a0e22224448c9500d0482ea39ca112671002216400044021700d9e4065d606d1204cb500a2221592088136c880d29e117002da26468547122c5d5532512c93442908ca58e0c804cc6340014001a21a6445e0a040a6b201026c70a0ed948d0150f0240b4800592010282204a8062210086216a2aa466ce86037c606b080af4a2183890281382043404b1042114ae28121254842804cb380adb01ca601180834b908e8401c9c38084015d2763846588e09499d883010c00846765746888676f312e32302e31856c696e7578a0b6e1b11e38ca21275ec5513fbc1b9ff425f56c78f18ba471eedee3c9b61c083f880000000000000000849646587ea095523f47b937045724c9de18e3a82a15aa773c46ca7f149812f410708645dba6", - "proof": { - "leaf_idx": 56780, - "mmr_path": [ - "0x5b0f6eeb2130f104f060e0393a3189d69cd6a0b37c9d8efa00cf38bf65349af", - "0x2b660cf54e59edc43cdb275b2393a5c6061200b803f152808ef66e63ef71d24", - "0x4a706ff64a99ff7210b4eb84c3cb833bcab69eaf94f54e733e06913860f4ffe", - "0x2866e0617b791220100c398f856e1402475e9eb57fb87a8c7373945bf3a427f", - "0x6d9ea890765cdf15556568782cbe2e7b63526c146d274f1d85fcb727dfc4ee2", - "0x0986528edebe7e63bedacf6820cc7a6e36285bd5b08ffdf7f789ebf5f4e1368", - "0x197c0e1f3f891cd367cac728f646334e33e5f9aa6fa7ca81c028c286c006ee0", - "0x14f522b5a62c9ecd4857b7bfeb87a1ca239ba3961278a6c1b9a291629794cfc" - ] - } - }, - { - "rlp": "f9023ba004143050352c91ce92a0402577cdac940fc7ba58e60a182e6aec7361527a24efa01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d4934794d9a5179f091d85051d3c982785efd1455cec8699a07bc1e0e342574fa7c4016ba8b4b6751c59daa2b12a460be0f4ae5d4da435abf4a0968151c674b2d6682bd2570975b2b8f556f3477d1c7fd4180d9526c25ba4d0cca0de0e114b9ddb07acf8bc68144ad09d05bd933b8fe9983d09412a91e55545ea28b901004039ad4939a1400ca7c8b72e8c94217da0d5ba8040ccd41651f028a18c1600f95823840242f7182900090050227cb24db001110e2222c2204b404429516529250ae090107030c8eb1e7f00297c205120da440c4290968a44280c98894a902612de11001a1e60aa2800d980390c0828b630136cc88860180611600192201108c966b304c76e2112227be0e8360a504efccc08ca02c20c80c8ca75906b16d8b781733f9702111fce8e0843ec575541c34090a4a125cede20ea62c25cc40c8b922fb5c041321bc91a030f754930d16431ab0b834100006081a4c4508a24d4a06d8e0bf58ae8261580b508602081d24c681c10032182c9843006a301426692681abb80834b90a58401c9c380840169932d846588e1c099d883010d05846765746888676f312e32312e34856c696e7578a0b9d032f213f230c7f4d68bf4f19c163810ac56a0717acfb6cb0fca132fe933328800000000000000008490047c35a081d8e42a4685f1c166bc2558bc70a9cba8ed148d29e702321c7cab78a1812ad1", + "rlp": [ + "0x216f1eb0a05c02f9", + "0x4de0372b4bed3c60", + "0x8e23a0628d6c899f", + "0x65105b263ee0b4f5", + "0x4dcc1da057420e26", + "0xb585ab7a5dc7dee8", + "0x4512d31ad4ccb667", + "0x42a1f013748a941b", + "0xe2c6944793d440fd", + "0x6dca7ce2bf919945", + "0xe4a123da352f7286", + "0x9b608182bda097cb", + "0x29e3b5d6b2eb735d", + "0x453e78855ad3ad56", + "0x385cd72fd2f23ff9", + "0x6a7132d6a0e509c3", + "0x44cd18a4510c63cf", + "0x77919e8f9a1667c4", + "0x414bad92d40a9154", + "0x446e34a0813f946c", + "0xbe9450981b4e25eb", + "0x3dac7c23f5bb80be", + "0xf687f40adf699e82", + "0x1b9f087b04080", + "0xc8c910cce7c486d2", + "0xe59016a45e2698a1", + "0x82b4c33d7c5f5332", + "0xd446f24a5ed5b7cc", + "0xdf996f696b144e29", + "0xe24f0c6659dc1e54", + "0x4fa0a9d3141e3c9a", + "0xd9ecef0a2c5e6c94", + "0x2ac5a6ea467f7470", + "0x829130f6af92b658", + "0xe261af81856c3116", + "0x7b00b19847d30f60", + "0xdbc971aad011c5e7", + "0xd64f4cb7209bd6d0", + "0x70442fd0a28ca850", + "0x5c2cd3d036bc0140", + "0x9e437f250c8ac88f", + "0x9e28395a49ac6876", + "0xf6a43f3f0328bc0d", + "0xd9b4ecd529b403f8", + "0x59d6efe506742a33", + "0x7664561421b64d04", + "0x1c8f18660a1d4837", + "0x1c8ad7be7da7180c", + "0x47df73de1f95de05", + "0xd167b65b1edfe383", + "0x6b45c814dfc3b9d8", + "0x20e161a0d09691ac", + "0xb290d5b6ab793ef1", + "0x9a850b64eaf115a5", + "0x6274b7e9d0975fc9", + "0x94ee5d102c0a774b", + "0xc90184c546618380", + "0x8459b853018480c3", + "0x74657291bcaca266", + "0x332e302e31762f68", + "0x6ca078756e696c2f", + "0xd3a5a7ee7bde8cac", + "0x60f7893db4ae18f6", + "0x58536e554021926d", + "0x8887bc7cf3c65be6", + "0x0", + "0xe560a08f6e329484", + "0x1a6b0adc0ebec001", + "0x82c517e276bbf0d1", + "0x28ffa87f26c06564", + "0x283435c3242e723", + "0xaca0000098830000", + "0x73d11f799a08a6eb", + "0x1579c174a76155bc", + "0x9e37c7cb80c29381", + "0xacba28e2aceec8" + ], + "rlp_bytes_len": 607, "proof": { - "leaf_idx": 56736, + "leaf_idx": 12739496, "mmr_path": [ - "0x786d506db540cc834a0a4a8b8373a66bf13ce5596f3de3c48d8dde440c3147a", - "0x20d7bf52f0774bbfaaa76edacafa5e2cc30d543faf6a59ca865e1e703b863aa", - "0x5c40fce3fdece7721198e5b2c6a6748ffcfb9a339437a66ca04f0401bbf5b80", - "0x2d7285179432c108172787974fd9e1760d01f9cd2929b040db3a69f879a2f92", - "0x2e7a5da17cea629e713d4a361f9006b882b65db10301db8fdb085477cc41fb3", - "0x2472a661f9fe54a7bae6da2735f322277e68016267c150ef1b50e19d01cdf6c", - "0x197c0e1f3f891cd367cac728f646334e33e5f9aa6fa7ca81c028c286c006ee0", - "0x14f522b5a62c9ecd4857b7bfeb87a1ca239ba3961278a6c1b9a291629794cfc" + "0x291adc0ff3f5eb31376d2dc882c4a0b612ee00b536b484d9d68533db47b1a55", + "0x577884cce23db95312ef380a904afccab7fbd9cf34e84777adf2813bc92a413", + "0x71426cc21537949a45197dd3a57b397d86d3302dc894173068585b7631ebb25", + "0x6ebf678bb0eb572f157cf9ca66d1c27754c20986de0335382c12afd8fcd26fb", + "0x20dfc647656b4c039bf946a56d2695fd631a2226fd815a83b69e18b543b9dd5", + "0x1ea310f504c5c7c6d43642ba2c09fa8f66edd91a6d3e965dec30db6ec9aa030", + "0x18ca5daed2c274cf2215dd11b3c5875b740df446360af179c95a0ec53c58f13", + "0x59417edcf79f38992d51563fb1e2af608dff9f2371fef973b0cdac2febc526f", + "0x45a9615d78011e7752d3e3f3f6e11f0de5b8fe531a0959d0f6e5041e1b5ba6f", + "0x1e94c6fa131239300669cb31c1ced02d1ad800fac561e092ab8b843cb0e6111", + "0x767920b8e4e378c8a1e55f812ea4579e6deb7584eab1325bcf5bad57b442cf7", + "0x2bfb39d36fcf83d18b05565fb4ae8de38453d439db185160c0cb541df2255f7", + "0x3a5f673a2f7d7cacff677177483259b7b9161dde49603a3523909a74dcf58eb", + "0x63cb7951cbce300498bb8868a619f6ae7179d5ed1a5d832859e870de3e5c011", + "0x5dfc985941ef9d1bae4a5bcddb23a338c70248a43107555df4cc20f81423721", + "0x07a25a1fdea49b07bbf8231ad4e7c00dc020b85c183f91022abd7c7baf1f42d", + "0x3d088c444fcc7a0083f3cb9d95d56975d22a8ac1171fcf5c0d8fa325fcff4db" ] } - }, + } + ], + "accounts": [ { - "rlp": "f9023ba010d63d3b65b1758ed1ff3d919f04cd91fd2b2ffaf708b43b7bd2af8662abd2fea01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347940000000000000000000000000000000000000000a0ee2e1aecb1ea22439f956437da9d48d42e093fd9f3df6e9cdfee7f82c893ebf5a086c36b58ed18e4bc47b60e47bc4dacea588d9eacf5c051101a59a856b626764fa0436808fa8bc97d942fa4d3605e09a4c9959617a91df1f9e85e589c38f5da904bb901001440e8020a0183e5a21b7c206c369070451003185138401730d80023812fa232d01bc926a6f706033d914113008a36530cf3cc4e66c0c6d81088820008ee072744e08b082672ca4a30ab500a2d8f9a758b100a09f8bc7a11a6408f12c1931a714e54258a0f40886859db130c3a18be13ea150f28a2a8314754c287923e000dc454804833344140e224704b22a9f573a522c8c18180aaa064aa48f023b4dd300752e934409525d30720420961168200029006e611df2d680e32c0e00d9e13ea89c09fe5d2c6c1113109308b8000a058c0a100806192070dce43b581a35c4de9080f90bf303055f81014102188a64520441423403030275d04a60a0399205042d180834b908c8401c9c380840187046f846588e06499d883010d04846765746888676f312e32302e34856c696e7578a0c659010742f2244cebceebafb05268263f23c0b80c5460624eda8493c0000ef08800000000000000008492f1f9a7a089d82777a4ce7f5175c223fbf42622dc0a57790232dfaf4f574d6b6d0bad2d63", - "proof": { - "leaf_idx": 56784, - "mmr_path": [ - "0x46947699985f7110a024e003aff12a5ab6aa0abae0d6cd1d78b252d344f5f4b", - "0x468622733eeeb16dde8b60eb0d9a247eefd7f6ec8c23cdf43ed78c9c0239caa", - "0x1356a8540da67e7e086e004aa06425f4a130f9ee67d0c781702ccc637655df9", - "0x2866e0617b791220100c398f856e1402475e9eb57fb87a8c7373945bf3a427f", - "0x6d9ea890765cdf15556568782cbe2e7b63526c146d274f1d85fcb727dfc4ee2", - "0x0986528edebe7e63bedacf6820cc7a6e36285bd5b08ffdf7f789ebf5f4e1368", - "0x197c0e1f3f891cd367cac728f646334e33e5f9aa6fa7ca81c028c286c006ee0", - "0x14f522b5a62c9ecd4857b7bfeb87a1ca239ba3961278a6c1b9a291629794cfc" - ] - } - }, + "address": [ + "0x5d89d5862ca7e8af", + "0x36b7d426ab6d61d6", + "0x2f4722cf" + ], + "account_key": "0x7fd6daf0de598ff611452d8eb4ec5f7e99e8ef74d175073be14cdc936830b5d3", + "proofs": [ + { + "block_number": 6375109, + "proof_bytes_len": [ + 532, + 532, + 532, + 532, + 532, + 404, + 83, + 104 + ], + "proof": [ + [ + "0x444e529da01102f9", + "0xf37544b888708d51", + "0x4c73181251ca8773", + "0xca042799a2381be", + "0x8f891aa08f7a0b4b", + "0x1a73b84327366212", + "0xe20ac0516697c8bd", + "0x6fc64891e36ca714", + "0xd808a02db30e1217", + "0x607e5eea121e89d4", + "0x17b487cd624bab57", + "0x3f5938c05a0ffbd6", + "0x7a081e913a93e5b", + "0x4cacd321d5a138bd", + "0xeea00b2128a12212", + "0x5320f46d51ce5b74", + "0xa0fcde49c74a4e21", + "0xf4f5e9953107eadd", + "0x9b742e5b58a0b03a", + "0xf840bf140ca4f854", + "0xbbcf9e589f3860ab", + "0xb2347ff3a6618ba0", + "0xd30ef52d45438b70", + "0x5d2ff37033210e6c", + "0xe8d2cdc675a9a230", + "0x7b6e8ca5b604a080", + "0xfdaff0383e2cf2f2", + "0x43b00d14850f7873", + "0x32259e9638884225", + "0xdb2a38f356a0d615", + "0xdd66b426e3ee70dc", + "0xcb2a87f92ce4f59a", + "0x3558c02b067b0f76", + "0xd441ac8aa0542ab1", + "0x33a7053e7510a439", + "0x7bfc53cb480af51", + "0x917e6bc2d32e31a0", + "0x7e22ca0a3172bee", + "0x171aa595ef249e65", + "0x208430e2b9b2840", + "0x374f95bcc70a084f", + "0xb982a06bc37beb57", + "0xa307195ab46d773d", + "0x7d158a83f588227c", + "0x9bdf8627dbf1a4b6", + "0x68a069b7ad9561fd", + "0x711bc0fd99a56731", + "0xe16f9014a1da14da", + "0x1998ccb79dd40fee", + "0xa084c2deda7009ad", + "0xfec128291c32139c", + "0xf45b263525bbc1bc", + "0xea18c1d000803bd8", + "0xbc6e26a2759645b1", + "0xe5b26ed4928d5a0", + "0xd261b3306613ca46", + "0x118fcfd107367472", + "0x5750921a2a88ba9f", + "0xa0383126830ca0d9", + "0xfe03bb87ac16126e", + "0xd1b081e732ece6fe", + "0x14dba318c57c7fe1", + "0x6c9c7b30cca06837", + "0xa523ed9e811d73ec", + "0x9b98ace58bd45b0c", + "0xd81bb282de7c44ee", + "0x8048f498" + ], + [ + "0x1be4de43a01102f9", + "0x5b34e092388e9421", + "0xbbd32e19fe740815", + "0x57057ce6e1f2644c", + "0x1d9df4a0a4e1c960", + "0x798f1be9df913cae", + "0xb30f19e7d6597147", + "0x11c742452bd94bf5", + "0x68e8a054ddb0b4ee", + "0xebfbe7754b250c66", + "0xae0ee2ae31a2188b", + "0x2810698530f06730", + "0x89a074edd683c4eb", + "0x5f97b1a37b93f4c8", + "0x71766d0f37c01dac", + "0xceb278e3002bf14a", + "0xa05fc915f988d02d", + "0x44096c084c7724ec", + "0x55ca8edd889c1770", + "0xc74bcb8a87a3b3c5", + "0x3deab16eedc763a3", + "0x958ebb0ed20204a0", + "0xe0d7842550e1f7fa", + "0x50378dcc62cf1f85", + "0x1f8580288af2906e", + "0x101b530e575ba0de", + "0x72c2c377c188c834", + "0x547c9b315322f81a", + "0xcae4953a6575c1e9", + "0x41b8d3a8a7a04482", + "0x6c10c919bc7e59fb", + "0x832c3b8673380b0e", + "0x6022da748383ca14", + "0x5668c9ca0dc3dd8", + "0x7c7f8ff768d7a1a3", + "0x2f2acbd07b06820d", + "0xb3b9895140569141", + "0x3b6e69a00740897b", + "0x26a2b25238b65af3", + "0xa386028d7baff6dc", + "0x11ad051616033e5d", + "0x96eea067010faa37", + "0xed9d9c9bcedf5af0", + "0x37fb98d62dbd1dd6", + "0x1f414dbe76c464fd", + "0xdaa08bc0cb33fc60", + "0xb08cb9c2085cfc71", + "0xe189139d5391d4e6", + "0x81d62c2a3dd95aec", + "0xa0dda1a58913281d", + "0xe1e15f468c7be8f4", + "0x65e2cfcdbc79758a", + "0x25ede651e43dd045", + "0x1a230ebf6ee33052", + "0x19d7bd1e8c7550a0", + "0x94ac7048d3482b8d", + "0x4712f434347bd5f3", + "0x880f325e69627cba", + "0x4771673871e9a0b2", + "0x76e996ee04ef431", + "0x2032636c635156d2", + "0x6fd0c2a5bab4d2", + "0xf91fee1389a05181", + "0xb27b11ed5629c41a", + "0xed1c9dcc37b3085d", + "0xd493606d4ca0d3d3", + "0x801bdb72" + ], + [ + "0x71b960fa01102f9", + "0xbe1fe01634ea6e64", + "0xf41a59ac121ab0c7", + "0x11e95a4610790b44", + "0xb55cb6a0d1fb205a", + "0xadc9623e6edbc11c", + "0xfddc0a1821ba0cf0", + "0xd53be648834ef0f0", + "0xdbb3a033efba1484", + "0x56bdb101631c76f", + "0xd7d4f6591a171443", + "0xae600196088ef39", + "0x5aa07ece61ce4d49", + "0xfde31c1a7f893138", + "0xcb4c4365813b31ac", + "0x44e9682ec2fb5add", + "0xa064828756abd703", + "0x658940a7e900dedf", + "0x9ca2692bc72e0dd9", + "0x98f612838e0975f6", + "0xc0df161b8509e12d", + "0x48cd9012fce98a0", + "0xe861b22ec42d85f7", + "0x3cdd46ba75e86818", + "0xaf04e750b297489e", + "0xc43beb370e43a015", + "0xdd1b4d4edbb176aa", + "0xa5c2422d0bf6e6c4", + "0xc55773d8da6facaa", + "0x24ff6b6229a083da", + "0xa99e9a8bcd8eda00", + "0x3c3feb7198579ee1", + "0x1f60a3b2c54965a3", + "0xa97bcaa2a0872921", + "0xacc08b0b6f7d237d", + "0x6800e1bcd674c94d", + "0xa8c833699d7d8aeb", + "0xb245eca05d102c80", + "0x6fb43714b5bad4d7", + "0x94f615ad1da741fb", + "0x6d2e560d0e41ff56", + "0xa4f6a0208423a3cf", + "0x5b2e046e7d074f35", + "0xa098289f7f01d0bd", + "0x2265a4a7bfebcecc", + "0x7ca007262c28d797", + "0x6af5f9ed4ff17ff1", + "0x8b88a3ee112ee6a3", + "0xca661abf2cb29191", + "0xa066abc586c64a8a", + "0x813b3cd8cb48fcd8", + "0x72494ff3567ed250", + "0xb1d3cd4907b614c2", + "0xf1256dd9567b6a94", + "0xddeea9f55da583a0", + "0xe51a6c75910e4d4a", + "0xaa1ef569451c7ad3", + "0x15c29d58e7b28540", + "0xc98d543b0a3ba0e1", + "0x4ac2a8d446a1bab8", + "0xb1924632c4a3a8d7", + "0x1fb62fac04c4a758", + "0x82068bfc8fa002cb", + "0xa49507b0d33f4ae8", + "0xeaa341d28d10ad45", + "0xe8b0b5a713f7300e", + "0x8062325a" + ], + [ + "0xf1af50daa01102f9", + "0xc45148a86edcfbfe", + "0x7ff915197b189f26", + "0x7f92e3cf79221546", + "0x2650c9a0433b2cba", + "0x18c1ca0bbe0b9385", + "0xe4ca0208b3d7628d", + "0x184082fb648501bc", + "0x64f7a05428e26594", + "0x25ada2a637e5f953", + "0x8a3a6b896604586e", + "0xad9c09b75d0b3eae", + "0x7aa01f3891ebd29c", + "0x4124ff872109dbdd", + "0x576bba0fccf024df", + "0xfb686bbc7bf54546", + "0xa06ac78578ce9466", + "0x253055df1f76d334", + "0x32cd652eb86671d2", + "0x6f106a856b73968c", + "0x7c49da01208a387f", + "0x2c13a33c7ca8aaa0", + "0x17a3b5e952302372", + "0xddc268c59cc4adc2", + "0x61aa3d293992472b", + "0xf32780d28c36a098", + "0x7c451b5fd225caf6", + "0xe95f518a00b6b4fa", + "0xd7db61a9257c1e15", + "0x73454d87fda0ab26", + "0x339ba009944d4d6b", + "0x9ed08a8230482a69", + "0xd1390999b8312afb", + "0xb82fcc9ba067c7d8", + "0x52664c6dab495e", + "0x3615ae6770edd2df", + "0xca1d2b4eebb71e91", + "0x9ab8daa0a6974282", + "0xd86e2ff1acc6b40d", + "0xfc68716c52d3d232", + "0xa45ba0d42fa38799", + "0xca41a04157354876", + "0x6c5deaef8c318a58", + "0x84f555dd0a2f68c0", + "0x62f259ab51b8f292", + "0xc0a05a6da52a93c0", + "0x4cf6c19ee0c127b4", + "0xb489a44989226930", + "0x15b88d62aa535053", + "0xa01815e279cd3a5c", + "0x47a1c105c66321b7", + "0xe8f13ba36264077f", + "0x7044f9a89efa4755", + "0xff6a9dc4269cd9d6", + "0xf152d0d450e75fa0", + "0x9da8e15a468f5584", + "0x3b614f00a6312bdd", + "0x853af8603c6914a6", + "0x5722714ca459a07c", + "0x534f2f14c7b9cd", + "0xe0a40b78e069c271", + "0xed02a93532cfdd30", + "0x477474322da07ec5", + "0xcfb69eba40e8e83c", + "0x95c19429516b7e83", + "0xe72ddd0ce13f244", + "0x80a9427c" + ], + [ + "0x5e19c1aea01102f9", + "0x82653e9435c27456", + "0x6c85883c66d32d77", + "0x997434564679b8ed", + "0x2aef61a0f9dfcf06", + "0x1f4f35bac04c70c", + "0xa3aced786d2fc676", + "0x4cd55bd8c5ccb479", + "0xaadaa0a1c0b578e6", + "0xa12cde6061675c15", + "0x45238e8841693826", + "0xe8dbefccec975c1", + "0x56a0a6b6b1dd4f2c", + "0xb944f12d50702aa1", + "0x1962bfe45b3d41f7", + "0x18fbb405a9b11839", + "0xa0222a38518e0a92", + "0x7869cb59ae1871d6", + "0x96be8e6e205d11cd", + "0xaec0280b20553a28", + "0xfe34dfc43cf3707f", + "0x72a18de82ee33a0", + "0x941258afc42170f7", + "0x1dd489e0f8a60d0c", + "0x59158dad07c465e3", + "0xe309286a4e6aa0f2", + "0x635af7f158cfca48", + "0x7b2f709560ce8fe8", + "0x39568e381a5f6fac", + "0x55878a22dda0df02", + "0xe2fc664542c3871e", + "0xbce6bb844165bc3c", + "0x14531b77f59c916a", + "0xd184add5a0b662d9", + "0x6bb294447da0e26", + "0xc6e0912f0991e654", + "0x558e6ccc5c7c7392", + "0xd61712a0fc21c1dd", + "0x43a26c7177ccaaa", + "0x6ffc3b67472915e5", + "0x45049c641967f271", + "0x1dd8a0d6b5ebcb0c", + "0xc71045de4a959bf7", + "0x8676de566a1f1eb7", + "0xd297084c4019e127", + "0xbea0193d2b42415d", + "0x1e7d7514391790f0", + "0x1c60f3c5d6570922", + "0xffd71c6b9f149a42", + "0xa052b5f86b064bad", + "0xb22ccc5257cf30a8", + "0x42c32663548bedb5", + "0xdf128dce6daec770", + "0x703f370ed71eed6a", + "0x37144c12faac56a0", + "0x64dbc0bc53b88eda", + "0xd2b9768bdc6b752e", + "0x28b8f6798920547b", + "0xede378a44b10a0dc", + "0x5636f5174e54387d", + "0x324818ff66de2edf", + "0xf08cc6d4ecf1c385", + "0xadf4aa0d16a06a6c", + "0xeed518f3bdb6dfaa", + "0xd6c7bd0495a7a0f7", + "0x2a6d07385d918513", + "0x80da117b" + ], + [ + "0xd376880ca09101f9", + "0xc97a529699654659", + "0xe8ac8108a83209a4", + "0x4e90f78c7707d12d", + "0xe292da0e39f3515", + "0x6d8331ad2c6ba1f", + "0xc01c99e896c384d1", + "0x6adae583c2208211", + "0x1365a0287453f65b", + "0x5477cb087a0a097c", + "0xb62cab2d3021e6b", + "0xa505941c03ea474e", + "0x50a040f37a8034f6", + "0x6f086c0e8faa1381", + "0xc3bb7f31e0ab3cef", + "0x8b769bdb4289370e", + "0x80d08a156e708dab", + "0xd1acab94c25b04a0", + "0x2972012216221b7b", + "0xade04d0214fe47b8", + "0x839ac2f611f43d80", + "0xc6a86e9be4a8a05b", + "0xfd20f82104943ff3", + "0xddf3cf80aeb0c53c", + "0x76834fab7712248b", + "0x47106ea9a0800b84", + "0x20541efe5f40c0e2", + "0xc7452c160a02b5c4", + "0xc2e5cbff68c6f3d1", + "0xafdaffa0ee2e6571", + "0x9c6bb900257b102", + "0xb2d792bc50f15215", + "0x51be63015351d2fc", + "0x3ac6a0702f7569f8", + "0xfdcffc05cdff59b1", + "0x468880e764c84d44", + "0xd912199f06de7a7f", + "0x5ca0a7db843632ee", + "0xc0d628da52ba5c67", + "0xb12a761721d9d3a1", + "0xce173c16111f4289", + "0x8040db137a7bc4c1", + "0xfb5cf5c514ee43a0", + "0xffe55b93cd035f3e", + "0x5336d6af7ff71d8b", + "0xe4858f9a1352908e", + "0xc7ca89cbeea080c8", + "0xbe4d58304e68d653", + "0x2a798b994bb2daeb", + "0x70d1151e834cf123", + "0x803df2ce" + ], + [ + "0xa0808080808051f8", + "0x89aec71f036ca173", + "0xc99d552fcd9c02ee", + "0x64638627851c62cc", + "0x450cef2e7d51ed32", + "0x8080808080808080", + "0x56fda7cbf4e7a080", + "0x500f0ee84c586361", + "0xdeccd5de16f9e35d", + "0xa84323f9c25b7078", + "0x80c9ce" + ], + [ + "0xf68f59de309d66f8", + "0x7e5fecb48e2d4511", + "0x3b0775d174efe899", + "0xd3b5306893dc4ce1", + "0xaa0800144f846b8", + "0x73ca4134ac04ce06", + "0x8a77b72d70eb37a9", + "0xacd0554ca3b91104", + "0xa0f25962fc91ed4f", + "0x876b309aa39be0b3", + "0x591938a3cd5995be", + "0x4ba3f3e5d6246d61", + "0xa181627de4401423" + ] + ] + } + ] + } + ], + "storages": [ { - "rlp": "f90222a046cb883d4497215fe603a21d0307b3bda28b4dc4563131ce1884236f68d3fc4fa01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d4934794008b3b2f992c0e14edaa6e2c662bec549caa8df1a0fea0d8539a0fce586fbff3eca3146995f2fa12b3f335cdf1c5e6278879c553eca04c5d9c6e3c92bcf76ba60c5aa91c4412d0f7c0904bce3b24c60fa4c394f00dc8a08db916baf6deabea6bfa103d38b6ad5f68de05eb624facf9eb4489e1e0690422b90100a81102050831106436181471041c0040c891020103244050105402e0d0400da04104a31162294b110ca8020001141000201100484e01176000200106003425024004084000a98a10140340094a0d08c0284110100084135035200869c4c88ac6a8cc007c0b02102006c832c106052d410801c6240011010c80400910c060019cb12031005017883667212b00081c4a02042d0804900888442a9110a2d4d01c051a0816021045a7020c804043201801181040a4211e08a20a604016245472564010e901122100900001da810b090a414188a1596090088084f2409200c491eb2a0290a62c1031201b000060cc9704284c2470c10288008c04d3090e440071681580834b90a38401c9c38084010b7306846588e1a880a0e0056c57602bb1459398b67e074517767f04b5936f2670958461d9d5dac7b27888000000000000000084929aa16fa0d2b03465043c956a14b338259cc33944e5450ef1f7c071eccedfcc44603b5c32", - "proof": { - "leaf_idx": 56739, - "mmr_path": [ - "0x0706fd782e9a335b24f227a741ef95ea93d8ca844c2b8224823e3108af7d2a1", - "0x169b2e7a353ef7fc040aad6f46c21bb3bc9f0ac70d4f1fe1df75003a73c8ce0", - "0x5c40fce3fdece7721198e5b2c6a6748ffcfb9a339437a66ca04f0401bbf5b80", - "0x2d7285179432c108172787974fd9e1760d01f9cd2929b040db3a69f879a2f92", - "0x2e7a5da17cea629e713d4a361f9006b882b65db10301db8fdb085477cc41fb3", - "0x2472a661f9fe54a7bae6da2735f322277e68016267c150ef1b50e19d01cdf6c", - "0x197c0e1f3f891cd367cac728f646334e33e5f9aa6fa7ca81c028c286c006ee0", - "0x14f522b5a62c9ecd4857b7bfeb87a1ca239ba3961278a6c1b9a291629794cfc" - ] - } + "address": [ + "0x5d89d5862ca7e8af", + "0x36b7d426ab6d61d6", + "0x2f4722cf" + ], + "slot": [ + "0x0", + "0x0", + "0x0", + "0x1000000000000000" + ], + "storage_key": "0x1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae672", + "proofs": [ + { + "block_number": 6375109, + "proof_bytes_len": [ + 532, + 83, + 69 + ], + "proof": [ + [ + "0xdaaaa563a01102f9", + "0x53733b89af92fdbc", + "0x227bd6cee31ca3e9", + "0x336db59681c1265b", + "0x7d7780a0509e595e", + "0x7310f9ca15df6350", + "0x2cabd610c8b53725", + "0xadbb21b0304fb72e", + "0xebda0d73dfe99f7", + "0x9ca6efeaf56b9b49", + "0xbc955048ac3d5fe2", + "0xcc33f505be97fb68", + "0xf2a0bc4d1ca2189d", + "0xd6fec3fed9cc776e", + "0x2cdfad8829638de5", + "0xb45659b7b4880241", + "0xa0b2c0c42a8b68fa", + "0x124ea6c73242e630", + "0x980e5879cc375472", + "0xcee0f874c5686418", + "0x969bcca76c6785d0", + "0x2df84ea10d9388a0", + "0xb82c15fe0e46f64a", + "0x984ecc65972203c3", + "0xcc4050165d2c602e", + "0xa7e41fa0d715a056", + "0x4b56009614424972", + "0xfdc53ee84e7e95fd", + "0x2dea4431fe1070d1", + "0xc864595a66a0e3f4", + "0xd17f80d096431b16", + "0xb51f6788c53e6caa", + "0x60ed6c03838c7510", + "0x39067cd5a0ce9ea9", + "0xb62a0e234fd40583", + "0x72e16ce793841c85", + "0x35322107af4919fa", + "0xf9272da039bdc793", + "0xd7d2f60de50aa21d", + "0x961d1a598e8c03b6", + "0x67df3a6bb55d1a9b", + "0xf8e1a0e89a0e6d62", + "0x3ede8e86c0e4dfdd", + "0xd8befa2a92c3ff26", + "0x3e13839c33dfae35", + "0x8ba06ee1a9e3ab0a", + "0x7c9ef401225bf5f3", + "0x4b8ac462c655ceff", + "0x1feec82f659f9b5b", + "0xa041d35933716a17", + "0xabad1dc62c18c692", + "0x936b6b57f845b3f7", + "0xfbd1e711de6e6536", + "0xa6014cee1d92b9f0", + "0x8bd8fb8e3eabfa0", + "0xba8bf46a6a1b7a92", + "0xa2a4e0cb613e9f70", + "0xf77aa9d38589e6a7", + "0x4062ee9d1fe3a033", + "0xba2bc68979de97bf", + "0xbdaf7bfec356fb9a", + "0x18c3a4aa9f3c07ef", + "0x1dcbed5fbba0aa9d", + "0x81f5631f4cb93054", + "0x406b742b1184064e", + "0x9e1d337f94beb2e8", + "0x80456c83" + ], + [ + "0x80808080808051f8", + "0xb8b52a1f7ea08080", + "0x7e61781d2a5e06f2", + "0xc001b39cbb1985d0", + "0x66be391c1b432d93", + "0x3beca0808097599d", + "0x54112b4e9235e5e3", + "0xa1558e7687ac1dab", + "0x818b16e5a58051e1", + "0x80809b39735f0bf6", + "0x808080" + ], + [ + "0x74dc476820a043f8", + "0x4588278dd00c1b1a", + "0x5947737bd819d8f9", + "0x2ab85cdee25fb5af", + "0x736e49a0a172e69a", + "0x7473655420656469", + "0x656d616e20", + "0x0", + "0x2000000000" + ] + ] + } + ] } ], - "accounts": [], - "storages": [], "transactions": [], "transaction_receipts": [] }, @@ -514,15 +710,66 @@ { "type": "datalake_compute", "context": { - "encoded_task": "0x412ee90cde8fd59a901289c531d013f0e0c60cf167ce66979f14ca4bdb6733dd000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "task_commitment": "0xe5d53290ecf6ebdf78189c67c45a6d0882b0d199e714c855052a7166b6da7ff0", - "compiled_result": "0x0", - "result_commitment": "0x6539b66f7f8b7f4ae54abdfd7b0b403df5f326f422fbb178c675c6b8bddeaaf5", - "task_proof": [], - "result_proof": [], - "encoded_datalake": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000aa36a700000000000000000000000000000000000000000000000000000000004b908800000000000000000000000000000000000000000000000000000000004b90a5000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000020107000000000000000000000000000000000000000000000000000000000000", + "task_bytes_len": 128, + "encoded_task": [ + "0xb7d65362098af8fc", + "0xbb9ce9daf3acf4f", + "0x7764468b86369c36", + "0xfefccffceae47099", + "0x0", + "0x0", + "0x0", + "0x0", + "0x0", + "0x0", + "0x0", + "0x0", + "0x0", + "0x0", + "0x0", + "0x0" + ], + "datalake_bytes_len": 288, + "encoded_datalake": [ + "0x0", + "0x0", + "0x0", + "0x0", + "0x0", + "0x0", + "0x0", + "0xa736aa0000000000", + "0x0", + "0x0", + "0x0", + "0xc546610000000000", + "0x0", + "0x0", + "0x0", + "0xc546610000000000", + "0x0", + "0x0", + "0x0", + "0x100000000000000", + "0x0", + "0x0", + "0x0", + "0xc000000000000000", + "0x0", + "0x0", + "0x0", + "0x3500000000000000", + "0x89d5862ca7e8af03", + "0xb7d426ab6d61d65d", + "0x2f4722cf36", + "0x0", + "0x0", + "0x0", + "0x1000000000", + "0x0" + ], "datalake_type": 0, - "property_type": 1 + "property_type": 3 } } ] diff --git a/request.json b/request.json index 6a74cdaa..fff3447e 100644 --- a/request.json +++ b/request.json @@ -1,11 +1,11 @@ { - "destinationChainId": "ETH_SEPOLIA", + "destinationChainId": "ETHEREUM_SEPOLIA", "tasks": [ { "type": "DatalakeCompute", "datalake": { "type": "BlockSampled", - "chainId": "ETH_SEPOLIA", + "chainId": "ETHEREUM_SEPOLIA", "blockRangeStart": 6375109, "blockRangeEnd": 6375109, "increment": 1, From 5586e24b2801584beeda09dd18a9bd35d1424bf3 Mon Sep 17 00:00:00 2001 From: Pia Date: Mon, 2 Sep 2024 18:51:53 +0900 Subject: [PATCH 08/11] feat: more chain env config --- .env.example | 10 +++--- cli/src/cli.rs | 13 +++----- cli/src/commands/run.rs | 7 ---- cli/src/commands/run_datalake.rs | 11 +++---- cli/src/commands/run_module.rs | 14 -------- cli/src/interactive.rs | 2 -- hdp-config.example.toml | 31 ------------------ hdp/src/hdp_run.rs | 55 ++++++++++++++++---------------- 8 files changed, 41 insertions(+), 102 deletions(-) delete mode 100644 hdp-config.example.toml diff --git a/.env.example b/.env.example index ffb9ddd9..6ade5e55 100644 --- a/.env.example +++ b/.env.example @@ -1,7 +1,9 @@ -# Note that CHAIN_ID and RPC_URL are both required for fetch data -CHAIN_ID=ETH_SEPOLIA -RPC_URL=https://goerli.infura.io/v3/your-infura-api-key +# Note that RPC_URL_{CHAIN_ID} is required for fetch data +RPC_URL_ETHEREUM_SEPOLIA=https://goerli.infura.io/v3/your-infura-api-key +# this value is optional +RPC_CHUNK_SIZE_ETHEREUM_SEPOLIA=2000 + # Optional -RPC_CHUNK_SIZE=2000 DRY_RUN_CAIRO_PATH= # path for dry run cairo SOUND_RUN_CAIRO_PATH= # path for sound run cairo +SAVE_FETCH_KEYS_FILE= # path for dry run output file diff --git a/cli/src/cli.rs b/cli/src/cli.rs index dc79f0f9..3ee0a053 100644 --- a/cli/src/cli.rs +++ b/cli/src/cli.rs @@ -11,7 +11,6 @@ use anyhow::Result; use clap::Parser; use hdp::primitives::processed_types::cairo_format::query::ProcessorInput; use hdp::primitives::request::{SubmitBatchQuery, Task}; -use hdp::primitives::ChainId; use hdp::processor::{self, Processor}; use hdp::{ hdp_run, @@ -94,8 +93,6 @@ pub async fn process_entry_run(args: ProcessArgs) -> Result<()> { pub async fn module_entry_run(args: RunModuleArgs) -> Result<()> { let config = hdp_run::HdpRunConfig::init( - args.rpc_url, - args.chain_id, args.dry_run_cairo_file, args.sound_run_cairo_file, args.program_input_file, @@ -121,8 +118,6 @@ pub async fn module_entry_run(args: RunModuleArgs) -> Result<()> { pub async fn datalake_entry_run(args: RunDatalakeArgs) -> Result<()> { let config = hdp_run::HdpRunConfig::init( - args.rpc_url, - args.chain_id, None, args.sound_run_cairo_file, args.program_input_file, @@ -133,18 +128,20 @@ pub async fn datalake_entry_run(args: RunDatalakeArgs) -> Result<()> { ); let parsed_datalake = match args.datalake { DataLakeCommands::BlockSampled { + chain_id, block_range_start, block_range_end, sampled_property, increment, } => DatalakeEnvelope::BlockSampled(BlockSampledDatalake::new( - ChainId::EthereumSepolia, + chain_id, block_range_start, block_range_end, increment, sampled_property, )), DataLakeCommands::TransactionsInBlock { + chain_id, target_block, sampled_property, start_index, @@ -152,7 +149,7 @@ pub async fn datalake_entry_run(args: RunDatalakeArgs) -> Result<()> { increment, included_types, } => DatalakeEnvelope::TransactionsInBlock(TransactionsInBlockDatalake::new( - ChainId::EthereumSepolia, + chain_id, target_block, sampled_property, start_index, @@ -176,8 +173,6 @@ pub async fn entry_run(args: RunArgs) -> Result<()> { let parsed: SubmitBatchQuery = serde_json::from_str(&request_context) .expect("Invalid format of request. Cannot parse it."); let config = hdp_run::HdpRunConfig::init( - args.rpc_url, - Some(parsed.destination_chain_id), args.dry_run_cairo_file, args.sound_run_cairo_file, args.program_input_file, diff --git a/cli/src/commands/run.rs b/cli/src/commands/run.rs index 2e316263..43ba9356 100644 --- a/cli/src/commands/run.rs +++ b/cli/src/commands/run.rs @@ -1,5 +1,4 @@ use crate::commands::Parser; -use starknet::providers::Url; use std::path::PathBuf; #[derive(Parser, Debug)] @@ -8,12 +7,6 @@ pub struct RunArgs { #[arg(short, long)] pub request_file: PathBuf, - /// The RPC URL to fetch the data. - /// - /// Can be overwritten by `RPC_URL` environment variable. - #[arg(long)] - pub rpc_url: Option, - /// dry run contract bootloader program. /// only used for module task #[arg(long)] diff --git a/cli/src/commands/run_datalake.rs b/cli/src/commands/run_datalake.rs index be21fcba..8feedeca 100644 --- a/cli/src/commands/run_datalake.rs +++ b/cli/src/commands/run_datalake.rs @@ -10,7 +10,6 @@ use hdp::primitives::{ }, ChainId, }; -use starknet::providers::Url; #[derive(Parser, Debug)] pub struct RunDatalakeArgs { @@ -24,12 +23,6 @@ pub struct RunDatalakeArgs { #[command(subcommand)] pub datalake: DataLakeCommands, - /// The RPC URL to fetch the datalake - pub rpc_url: Option, - - /// The chain id to fetch the datalake - pub chain_id: Option, - /// Path to save program input file after pre-processing. /// /// This will be input data for cairo program @@ -64,6 +57,8 @@ pub enum DataLakeCommands { #[command(arg_required_else_help = true)] #[command(short_flag = 's')] BlockSampled { + /// Chain id + chain_id: ChainId, /// Block number range start (inclusive) block_range_start: BlockNumber, /// Block number range end (inclusive) @@ -78,6 +73,8 @@ pub enum DataLakeCommands { #[command(arg_required_else_help = true)] #[command(short_flag = 't')] TransactionsInBlock { + /// Chain id + chain_id: ChainId, /// Target block number target_block: BlockNumber, /// Sampled property diff --git a/cli/src/commands/run_module.rs b/cli/src/commands/run_module.rs index b36395e9..2f79925a 100644 --- a/cli/src/commands/run_module.rs +++ b/cli/src/commands/run_module.rs @@ -1,6 +1,4 @@ use clap::{arg, Parser}; -use hdp::primitives::ChainId; -use starknet::providers::Url; use std::path::PathBuf; #[derive(Parser, Debug)] @@ -29,18 +27,6 @@ pub struct RunModuleArgs { #[arg(long)] pub save_fetch_keys_file: Option, - /// The RPC URL to fetch the data. - /// - /// Can be overwritten by `RPC_URL` environment variable. - #[arg(long)] - pub rpc_url: Option, - - /// The chain id to fetch the data. - /// - /// Can be overwritten by `CHAIN_ID` environment variable - #[arg(long)] - pub chain_id: Option, - /// dry run contract bootloader program. /// only used for module task #[arg(long)] diff --git a/cli/src/interactive.rs b/cli/src/interactive.rs index 0dbdbbe7..7a186d39 100644 --- a/cli/src/interactive.rs +++ b/cli/src/interactive.rs @@ -350,8 +350,6 @@ pub async fn run_interactive() -> anyhow::Result<()> { .prompt()? .into(); let config = hdp_run::HdpRunConfig::init( - rpc_url, - chain_id, None, None, cairo_input, diff --git a/hdp-config.example.toml b/hdp-config.example.toml deleted file mode 100644 index 8a8e07fc..00000000 --- a/hdp-config.example.toml +++ /dev/null @@ -1,31 +0,0 @@ -# TOML configuration file to build hdp -# All options are commented out by default in this file, and they're commented -# out with their default values - - -# dry-run-cairo-path = "build/contract_dry_run.json" - -# ============================================================================= -# provider option -# ============================================================================= - -[[chains]] -chain-id = 1 -rpc-url = "https://ethereum-rpc.publicnode.com" -# rpc-chunk-size = 100 - -[[chains]] -chain-id = 11155111 -rpc-url = "https://ethereum-sepolia-rpc.publicnode.com" -# rpc-chunk-size = 100 - - -# ============================================================================= -# output file option -# ============================================================================= - -# pre-processor-output-file = "preprocess_output.json" - - -# if you add this option, fetch keys file will be saved in target path -# save-fetch-keys-file = "dry_run_output.json" diff --git a/hdp/src/hdp_run.rs b/hdp/src/hdp_run.rs index 74bd195f..5b39640b 100644 --- a/hdp/src/hdp_run.rs +++ b/hdp/src/hdp_run.rs @@ -43,8 +43,6 @@ impl Default for HdpRunConfig { impl HdpRunConfig { pub fn init( - cli_rpc_url: Option, - cli_chain_id: Option, cli_dry_run_cairo_file: Option, cli_sound_run_cairo_file: Option, program_input_file: PathBuf, @@ -53,22 +51,33 @@ impl HdpRunConfig { batch_proof_file: Option, cli_cairo_pie_file: Option, ) -> Self { - let chain_id = cli_chain_id.unwrap_or_else(|| { - env::var("CHAIN_ID") - .expect("CHAIN_ID must be set") - .parse() - .expect("CHAIN_ID must be a number") - }); - let rpc_url = cli_rpc_url.unwrap_or_else(|| { - env::var("RPC_URL") - .expect("RPC_URL must be set") - .parse() - .expect("RPC_URL must be a valid URL") - }); - let rpc_chunk_size = env::var("RPC_CHUNK_SIZE") - .unwrap_or_else(|_| "40".to_string()) - .parse() - .expect("RPC_CHUNK_SIZE must be a number"); + let mut provider_config = HashMap::new(); + + // Iterate through environment variables to find RPC_URL and RPC_CHUNK_SIZE configurations + for (key, value) in env::vars() { + if key.starts_with("RPC_URL_") { + let chain_id: ChainId = key[8..] + .parse() + .expect("Invalid chain ID in RPC_URL env var"); + let rpc_url: Url = value.parse().expect("Invalid URL in RPC_URL env var"); + + let chunk_size_key = format!("RPC_CHUNK_SIZE_{}", chain_id); + let rpc_chunk_size: u64 = env::var(&chunk_size_key) + .unwrap_or_else(|_| "40".to_string()) + .parse() + .expect(&format!("{} must be a number", chunk_size_key)); + + provider_config.insert( + chain_id, + ProviderConfig { + rpc_url, + chain_id, + max_requests: rpc_chunk_size, + }, + ); + } + } + let save_fetch_keys_file: Option = cli_save_fetch_keys_file .or_else(|| env::var("SAVE_FETCH_KEYS_FILE").ok().map(PathBuf::from)); let dry_run_cairo_path: PathBuf = cli_dry_run_cairo_file.unwrap_or_else(|| { @@ -84,16 +93,6 @@ impl HdpRunConfig { .expect("SOUND_RUN_CAIRO_PATH must be a path to a cairo file") }); - let mut provider_config = HashMap::new(); - provider_config.insert( - chain_id, - ProviderConfig { - rpc_url, - chain_id, - max_requests: rpc_chunk_size, - }, - ); - let config = HdpRunConfig { provider_config, dry_run_program_path: dry_run_cairo_path, From 17d8c5e87b780608f264499f35f48052a703d8ed Mon Sep 17 00:00:00 2001 From: Pia Date: Tue, 3 Sep 2024 11:44:41 +0900 Subject: [PATCH 09/11] clippy --- batch.json | 40 --- cli/src/interactive.rs | 31 +- hdp/src/hdp_run.rs | 6 +- input.json | 776 ----------------------------------------- output.json | 39 --- 5 files changed, 9 insertions(+), 883 deletions(-) delete mode 100644 batch.json delete mode 100644 input.json delete mode 100644 output.json diff --git a/batch.json b/batch.json deleted file mode 100644 index 25bbae7b..00000000 --- a/batch.json +++ /dev/null @@ -1,40 +0,0 @@ -{ - "raw_results": [ - "0x496e736964652054657374206e616d6500000000000000000000000000000020" - ], - "results_commitments": [ - "0xf747c57ef547b1791842881a557f8da2d3bfcd529baabe39feecfef3eb194bbe" - ], - "tasks_commitments": [ - "0x77e994d9e435e91fb7a98242ce6aa460dc094888e2745cdd93727b93fac841ac" - ], - "task_inclusion_proofs": [ - [] - ], - "results_inclusion_proofs": [ - [] - ], - "results_root": "0x34b46123c4ab406cec0586364d8ed193353f0e9fb1b32cac0988fc0970dc50a2", - "tasks_root": "0xd900a4d980172ad23fafb579aeac7cff91c73636d334bc247a1c3142d8bffa78", - "mmr_metas": [ - { - "id": 26, - "root": "0x5358fbe594d3e8fdb3f6f7bbbe979fc3a377851a21909ea7bc1821e15cc6c4e", - "size": 12899969, - "peaks": [ - "0x262c4c9b1cb2a036924aecf563dc9952e5f8b41004310adde86f22abb793eb1", - "0x63e06c6dd962e6232140b8f20fc4972ee69ca29d1c6ca4455d80afd4be0f3de", - "0x48c9781f73635713eb8ef52890c481f4438c576baf01b31bc7935d9d42c1244", - "0x068c923e9bcc3df411575563e88a81cdef49ef6c4307efad707a8538114b753", - "0x54a48cae0defc94286e03d5c3abc53a399db7eb6207140f8d6f8d7322c9d1fc", - "0x1f31aea9b689fdab066317c08c865ae3b134adef05a744965a5741119a6c094", - "0x41dc23c0b0c18e7cc1d3f7148feabbe30269080cbe9b6ead6b718a2d1176382", - "0x1d04bc7dd1b40becbbfdf6a6971ef0e1ffc873087ed75bb2163dd2615d366de", - "0x5f3202e8d32391896022ddb916b83f165d2d7486261304f3e029aad6258ba2c", - "0x3a98faad3cc3bdeee0f2a346469fe4e67d364c98f8f5adf03f472000194081c", - "0x48bb57587a1e690409d81b70f3fe2ee625f25f008ec0773e55a0e1293c9e025" - ], - "chain_id": 11155111 - } - ] -} \ No newline at end of file diff --git a/cli/src/interactive.rs b/cli/src/interactive.rs index 7a186d39..2be26667 100644 --- a/cli/src/interactive.rs +++ b/cli/src/interactive.rs @@ -1,4 +1,4 @@ -use alloy::{primitives::U256, transports::http::reqwest::Url}; +use alloy::primitives::U256; use anyhow::bail; use hdp::hdp_run; use hdp::preprocessor::module_registry::ModuleRegistry; @@ -63,7 +63,7 @@ pub async fn run_interactive() -> anyhow::Result<()> { // 0. Chain ID let chain_id: String = inquire::Text::new("Chain ID") .with_help_message("What is the chain ID? (Enter to set default)") - .with_default("ETH_SEPOLIA") + .with_default("ETHEREUM_SEPOLIA") .prompt()?; // 1. Block range start let block_range_start: u64 = inquire::Text::new("Block range start") @@ -150,7 +150,7 @@ pub async fn run_interactive() -> anyhow::Result<()> { // 0. Chain ID let chain_id: String = inquire::Text::new("Chain ID") .with_help_message("What is the chain ID? (Enter to set default)") - .with_default("ETH_SEPOLIA") + .with_default("ETHEREUM_SEPOLIA") .prompt()?; let target_block: u64 = inquire::Text::new("Enter target block number") .with_help_message( @@ -316,29 +316,10 @@ pub async fn run_interactive() -> anyhow::Result<()> { .with_default(true) .prompt()?; if allow_run { - let rpc_url: Option = match inquire::Text::new("Enter RPC URL: ") - .with_help_message("Skip if you have it in your .env file") - .prompt() - { - Ok(url) => match url.as_str() { - "" => None, - _ => Some(url.parse()?), - }, - Err(_) => None, - }; - let chain_id: Option = match inquire::Text::new("Enter Chain ID: ") - .with_help_message("Skip if you have it in your .env file") - .prompt() - { - Ok(chain_id) => match chain_id.as_str() { - "" => None, - _ => Some(chain_id.parse()?), - }, - Err(_) => None, - }; + println!("Make sure to position correct rpc url related env variables."); - let output_file: PathBuf = inquire::Text::new("Enter Output file path: ") - .with_default("output.json") + let output_file: PathBuf = inquire::Text::new("Enter Batch proof file path: ") + .with_default("batch.json") .prompt()? .into(); let cairo_input: PathBuf = inquire::Text::new("Enter Cairo input file path:") diff --git a/hdp/src/hdp_run.rs b/hdp/src/hdp_run.rs index 5b39640b..4b84ecf5 100644 --- a/hdp/src/hdp_run.rs +++ b/hdp/src/hdp_run.rs @@ -55,8 +55,8 @@ impl HdpRunConfig { // Iterate through environment variables to find RPC_URL and RPC_CHUNK_SIZE configurations for (key, value) in env::vars() { - if key.starts_with("RPC_URL_") { - let chain_id: ChainId = key[8..] + if let Some(stripped_chain_id) = key.strip_prefix("RPC_URL_") { + let chain_id: ChainId = stripped_chain_id .parse() .expect("Invalid chain ID in RPC_URL env var"); let rpc_url: Url = value.parse().expect("Invalid URL in RPC_URL env var"); @@ -65,7 +65,7 @@ impl HdpRunConfig { let rpc_chunk_size: u64 = env::var(&chunk_size_key) .unwrap_or_else(|_| "40".to_string()) .parse() - .expect(&format!("{} must be a number", chunk_size_key)); + .unwrap_or_else(|_| panic!("{} must be a number", chunk_size_key)); provider_config.insert( chain_id, diff --git a/input.json b/input.json deleted file mode 100644 index 5fd18be0..00000000 --- a/input.json +++ /dev/null @@ -1,776 +0,0 @@ -{ - "cairo_run_output_path": "cairo_run_output.json", - "task_root": "0xd900a4d980172ad23fafb579aeac7cff91c73636d334bc247a1c3142d8bffa78", - "result_root": "0x34b46123c4ab406cec0586364d8ed193353f0e9fb1b32cac0988fc0970dc50a2", - "proofs": { - "mmr_metas": [ - { - "id": 26, - "root": "0x5358fbe594d3e8fdb3f6f7bbbe979fc3a377851a21909ea7bc1821e15cc6c4e", - "size": 12899969, - "peaks": [ - "0x262c4c9b1cb2a036924aecf563dc9952e5f8b41004310adde86f22abb793eb1", - "0x63e06c6dd962e6232140b8f20fc4972ee69ca29d1c6ca4455d80afd4be0f3de", - "0x48c9781f73635713eb8ef52890c481f4438c576baf01b31bc7935d9d42c1244", - "0x068c923e9bcc3df411575563e88a81cdef49ef6c4307efad707a8538114b753", - "0x54a48cae0defc94286e03d5c3abc53a399db7eb6207140f8d6f8d7322c9d1fc", - "0x1f31aea9b689fdab066317c08c865ae3b134adef05a744965a5741119a6c094", - "0x41dc23c0b0c18e7cc1d3f7148feabbe30269080cbe9b6ead6b718a2d1176382", - "0x1d04bc7dd1b40becbbfdf6a6971ef0e1ffc873087ed75bb2163dd2615d366de", - "0x5f3202e8d32391896022ddb916b83f165d2d7486261304f3e029aad6258ba2c", - "0x3a98faad3cc3bdeee0f2a346469fe4e67d364c98f8f5adf03f472000194081c", - "0x48bb57587a1e690409d81b70f3fe2ee625f25f008ec0773e55a0e1293c9e025" - ], - "chain_id": 11155111 - } - ], - "headers": [ - { - "rlp": [ - "0x216f1eb0a05c02f9", - "0x4de0372b4bed3c60", - "0x8e23a0628d6c899f", - "0x65105b263ee0b4f5", - "0x4dcc1da057420e26", - "0xb585ab7a5dc7dee8", - "0x4512d31ad4ccb667", - "0x42a1f013748a941b", - "0xe2c6944793d440fd", - "0x6dca7ce2bf919945", - "0xe4a123da352f7286", - "0x9b608182bda097cb", - "0x29e3b5d6b2eb735d", - "0x453e78855ad3ad56", - "0x385cd72fd2f23ff9", - "0x6a7132d6a0e509c3", - "0x44cd18a4510c63cf", - "0x77919e8f9a1667c4", - "0x414bad92d40a9154", - "0x446e34a0813f946c", - "0xbe9450981b4e25eb", - "0x3dac7c23f5bb80be", - "0xf687f40adf699e82", - "0x1b9f087b04080", - "0xc8c910cce7c486d2", - "0xe59016a45e2698a1", - "0x82b4c33d7c5f5332", - "0xd446f24a5ed5b7cc", - "0xdf996f696b144e29", - "0xe24f0c6659dc1e54", - "0x4fa0a9d3141e3c9a", - "0xd9ecef0a2c5e6c94", - "0x2ac5a6ea467f7470", - "0x829130f6af92b658", - "0xe261af81856c3116", - "0x7b00b19847d30f60", - "0xdbc971aad011c5e7", - "0xd64f4cb7209bd6d0", - "0x70442fd0a28ca850", - "0x5c2cd3d036bc0140", - "0x9e437f250c8ac88f", - "0x9e28395a49ac6876", - "0xf6a43f3f0328bc0d", - "0xd9b4ecd529b403f8", - "0x59d6efe506742a33", - "0x7664561421b64d04", - "0x1c8f18660a1d4837", - "0x1c8ad7be7da7180c", - "0x47df73de1f95de05", - "0xd167b65b1edfe383", - "0x6b45c814dfc3b9d8", - "0x20e161a0d09691ac", - "0xb290d5b6ab793ef1", - "0x9a850b64eaf115a5", - "0x6274b7e9d0975fc9", - "0x94ee5d102c0a774b", - "0xc90184c546618380", - "0x8459b853018480c3", - "0x74657291bcaca266", - "0x332e302e31762f68", - "0x6ca078756e696c2f", - "0xd3a5a7ee7bde8cac", - "0x60f7893db4ae18f6", - "0x58536e554021926d", - "0x8887bc7cf3c65be6", - "0x0", - "0xe560a08f6e329484", - "0x1a6b0adc0ebec001", - "0x82c517e276bbf0d1", - "0x28ffa87f26c06564", - "0x283435c3242e723", - "0xaca0000098830000", - "0x73d11f799a08a6eb", - "0x1579c174a76155bc", - "0x9e37c7cb80c29381", - "0xacba28e2aceec8" - ], - "rlp_bytes_len": 607, - "proof": { - "leaf_idx": 12739496, - "mmr_path": [ - "0x291adc0ff3f5eb31376d2dc882c4a0b612ee00b536b484d9d68533db47b1a55", - "0x577884cce23db95312ef380a904afccab7fbd9cf34e84777adf2813bc92a413", - "0x71426cc21537949a45197dd3a57b397d86d3302dc894173068585b7631ebb25", - "0x6ebf678bb0eb572f157cf9ca66d1c27754c20986de0335382c12afd8fcd26fb", - "0x20dfc647656b4c039bf946a56d2695fd631a2226fd815a83b69e18b543b9dd5", - "0x1ea310f504c5c7c6d43642ba2c09fa8f66edd91a6d3e965dec30db6ec9aa030", - "0x18ca5daed2c274cf2215dd11b3c5875b740df446360af179c95a0ec53c58f13", - "0x59417edcf79f38992d51563fb1e2af608dff9f2371fef973b0cdac2febc526f", - "0x45a9615d78011e7752d3e3f3f6e11f0de5b8fe531a0959d0f6e5041e1b5ba6f", - "0x1e94c6fa131239300669cb31c1ced02d1ad800fac561e092ab8b843cb0e6111", - "0x767920b8e4e378c8a1e55f812ea4579e6deb7584eab1325bcf5bad57b442cf7", - "0x2bfb39d36fcf83d18b05565fb4ae8de38453d439db185160c0cb541df2255f7", - "0x3a5f673a2f7d7cacff677177483259b7b9161dde49603a3523909a74dcf58eb", - "0x63cb7951cbce300498bb8868a619f6ae7179d5ed1a5d832859e870de3e5c011", - "0x5dfc985941ef9d1bae4a5bcddb23a338c70248a43107555df4cc20f81423721", - "0x07a25a1fdea49b07bbf8231ad4e7c00dc020b85c183f91022abd7c7baf1f42d", - "0x3d088c444fcc7a0083f3cb9d95d56975d22a8ac1171fcf5c0d8fa325fcff4db" - ] - } - } - ], - "accounts": [ - { - "address": [ - "0x5d89d5862ca7e8af", - "0x36b7d426ab6d61d6", - "0x2f4722cf" - ], - "account_key": "0x7fd6daf0de598ff611452d8eb4ec5f7e99e8ef74d175073be14cdc936830b5d3", - "proofs": [ - { - "block_number": 6375109, - "proof_bytes_len": [ - 532, - 532, - 532, - 532, - 532, - 404, - 83, - 104 - ], - "proof": [ - [ - "0x444e529da01102f9", - "0xf37544b888708d51", - "0x4c73181251ca8773", - "0xca042799a2381be", - "0x8f891aa08f7a0b4b", - "0x1a73b84327366212", - "0xe20ac0516697c8bd", - "0x6fc64891e36ca714", - "0xd808a02db30e1217", - "0x607e5eea121e89d4", - "0x17b487cd624bab57", - "0x3f5938c05a0ffbd6", - "0x7a081e913a93e5b", - "0x4cacd321d5a138bd", - "0xeea00b2128a12212", - "0x5320f46d51ce5b74", - "0xa0fcde49c74a4e21", - "0xf4f5e9953107eadd", - "0x9b742e5b58a0b03a", - "0xf840bf140ca4f854", - "0xbbcf9e589f3860ab", - "0xb2347ff3a6618ba0", - "0xd30ef52d45438b70", - "0x5d2ff37033210e6c", - "0xe8d2cdc675a9a230", - "0x7b6e8ca5b604a080", - "0xfdaff0383e2cf2f2", - "0x43b00d14850f7873", - "0x32259e9638884225", - "0xdb2a38f356a0d615", - "0xdd66b426e3ee70dc", - "0xcb2a87f92ce4f59a", - "0x3558c02b067b0f76", - "0xd441ac8aa0542ab1", - "0x33a7053e7510a439", - "0x7bfc53cb480af51", - "0x917e6bc2d32e31a0", - "0x7e22ca0a3172bee", - "0x171aa595ef249e65", - "0x208430e2b9b2840", - "0x374f95bcc70a084f", - "0xb982a06bc37beb57", - "0xa307195ab46d773d", - "0x7d158a83f588227c", - "0x9bdf8627dbf1a4b6", - "0x68a069b7ad9561fd", - "0x711bc0fd99a56731", - "0xe16f9014a1da14da", - "0x1998ccb79dd40fee", - "0xa084c2deda7009ad", - "0xfec128291c32139c", - "0xf45b263525bbc1bc", - "0xea18c1d000803bd8", - "0xbc6e26a2759645b1", - "0xe5b26ed4928d5a0", - "0xd261b3306613ca46", - "0x118fcfd107367472", - "0x5750921a2a88ba9f", - "0xa0383126830ca0d9", - "0xfe03bb87ac16126e", - "0xd1b081e732ece6fe", - "0x14dba318c57c7fe1", - "0x6c9c7b30cca06837", - "0xa523ed9e811d73ec", - "0x9b98ace58bd45b0c", - "0xd81bb282de7c44ee", - "0x8048f498" - ], - [ - "0x1be4de43a01102f9", - "0x5b34e092388e9421", - "0xbbd32e19fe740815", - "0x57057ce6e1f2644c", - "0x1d9df4a0a4e1c960", - "0x798f1be9df913cae", - "0xb30f19e7d6597147", - "0x11c742452bd94bf5", - "0x68e8a054ddb0b4ee", - "0xebfbe7754b250c66", - "0xae0ee2ae31a2188b", - "0x2810698530f06730", - "0x89a074edd683c4eb", - "0x5f97b1a37b93f4c8", - "0x71766d0f37c01dac", - "0xceb278e3002bf14a", - "0xa05fc915f988d02d", - "0x44096c084c7724ec", - "0x55ca8edd889c1770", - "0xc74bcb8a87a3b3c5", - "0x3deab16eedc763a3", - "0x958ebb0ed20204a0", - "0xe0d7842550e1f7fa", - "0x50378dcc62cf1f85", - "0x1f8580288af2906e", - "0x101b530e575ba0de", - "0x72c2c377c188c834", - "0x547c9b315322f81a", - "0xcae4953a6575c1e9", - "0x41b8d3a8a7a04482", - "0x6c10c919bc7e59fb", - "0x832c3b8673380b0e", - "0x6022da748383ca14", - "0x5668c9ca0dc3dd8", - "0x7c7f8ff768d7a1a3", - "0x2f2acbd07b06820d", - "0xb3b9895140569141", - "0x3b6e69a00740897b", - "0x26a2b25238b65af3", - "0xa386028d7baff6dc", - "0x11ad051616033e5d", - "0x96eea067010faa37", - "0xed9d9c9bcedf5af0", - "0x37fb98d62dbd1dd6", - "0x1f414dbe76c464fd", - "0xdaa08bc0cb33fc60", - "0xb08cb9c2085cfc71", - "0xe189139d5391d4e6", - "0x81d62c2a3dd95aec", - "0xa0dda1a58913281d", - "0xe1e15f468c7be8f4", - "0x65e2cfcdbc79758a", - "0x25ede651e43dd045", - "0x1a230ebf6ee33052", - "0x19d7bd1e8c7550a0", - "0x94ac7048d3482b8d", - "0x4712f434347bd5f3", - "0x880f325e69627cba", - "0x4771673871e9a0b2", - "0x76e996ee04ef431", - "0x2032636c635156d2", - "0x6fd0c2a5bab4d2", - "0xf91fee1389a05181", - "0xb27b11ed5629c41a", - "0xed1c9dcc37b3085d", - "0xd493606d4ca0d3d3", - "0x801bdb72" - ], - [ - "0x71b960fa01102f9", - "0xbe1fe01634ea6e64", - "0xf41a59ac121ab0c7", - "0x11e95a4610790b44", - "0xb55cb6a0d1fb205a", - "0xadc9623e6edbc11c", - "0xfddc0a1821ba0cf0", - "0xd53be648834ef0f0", - "0xdbb3a033efba1484", - "0x56bdb101631c76f", - "0xd7d4f6591a171443", - "0xae600196088ef39", - "0x5aa07ece61ce4d49", - "0xfde31c1a7f893138", - "0xcb4c4365813b31ac", - "0x44e9682ec2fb5add", - "0xa064828756abd703", - "0x658940a7e900dedf", - "0x9ca2692bc72e0dd9", - "0x98f612838e0975f6", - "0xc0df161b8509e12d", - "0x48cd9012fce98a0", - "0xe861b22ec42d85f7", - "0x3cdd46ba75e86818", - "0xaf04e750b297489e", - "0xc43beb370e43a015", - "0xdd1b4d4edbb176aa", - "0xa5c2422d0bf6e6c4", - "0xc55773d8da6facaa", - "0x24ff6b6229a083da", - "0xa99e9a8bcd8eda00", - "0x3c3feb7198579ee1", - "0x1f60a3b2c54965a3", - "0xa97bcaa2a0872921", - "0xacc08b0b6f7d237d", - "0x6800e1bcd674c94d", - "0xa8c833699d7d8aeb", - "0xb245eca05d102c80", - "0x6fb43714b5bad4d7", - "0x94f615ad1da741fb", - "0x6d2e560d0e41ff56", - "0xa4f6a0208423a3cf", - "0x5b2e046e7d074f35", - "0xa098289f7f01d0bd", - "0x2265a4a7bfebcecc", - "0x7ca007262c28d797", - "0x6af5f9ed4ff17ff1", - "0x8b88a3ee112ee6a3", - "0xca661abf2cb29191", - "0xa066abc586c64a8a", - "0x813b3cd8cb48fcd8", - "0x72494ff3567ed250", - "0xb1d3cd4907b614c2", - "0xf1256dd9567b6a94", - "0xddeea9f55da583a0", - "0xe51a6c75910e4d4a", - "0xaa1ef569451c7ad3", - "0x15c29d58e7b28540", - "0xc98d543b0a3ba0e1", - "0x4ac2a8d446a1bab8", - "0xb1924632c4a3a8d7", - "0x1fb62fac04c4a758", - "0x82068bfc8fa002cb", - "0xa49507b0d33f4ae8", - "0xeaa341d28d10ad45", - "0xe8b0b5a713f7300e", - "0x8062325a" - ], - [ - "0xf1af50daa01102f9", - "0xc45148a86edcfbfe", - "0x7ff915197b189f26", - "0x7f92e3cf79221546", - "0x2650c9a0433b2cba", - "0x18c1ca0bbe0b9385", - "0xe4ca0208b3d7628d", - "0x184082fb648501bc", - "0x64f7a05428e26594", - "0x25ada2a637e5f953", - "0x8a3a6b896604586e", - "0xad9c09b75d0b3eae", - "0x7aa01f3891ebd29c", - "0x4124ff872109dbdd", - "0x576bba0fccf024df", - "0xfb686bbc7bf54546", - "0xa06ac78578ce9466", - "0x253055df1f76d334", - "0x32cd652eb86671d2", - "0x6f106a856b73968c", - "0x7c49da01208a387f", - "0x2c13a33c7ca8aaa0", - "0x17a3b5e952302372", - "0xddc268c59cc4adc2", - "0x61aa3d293992472b", - "0xf32780d28c36a098", - "0x7c451b5fd225caf6", - "0xe95f518a00b6b4fa", - "0xd7db61a9257c1e15", - "0x73454d87fda0ab26", - "0x339ba009944d4d6b", - "0x9ed08a8230482a69", - "0xd1390999b8312afb", - "0xb82fcc9ba067c7d8", - "0x52664c6dab495e", - "0x3615ae6770edd2df", - "0xca1d2b4eebb71e91", - "0x9ab8daa0a6974282", - "0xd86e2ff1acc6b40d", - "0xfc68716c52d3d232", - "0xa45ba0d42fa38799", - "0xca41a04157354876", - "0x6c5deaef8c318a58", - "0x84f555dd0a2f68c0", - "0x62f259ab51b8f292", - "0xc0a05a6da52a93c0", - "0x4cf6c19ee0c127b4", - "0xb489a44989226930", - "0x15b88d62aa535053", - "0xa01815e279cd3a5c", - "0x47a1c105c66321b7", - "0xe8f13ba36264077f", - "0x7044f9a89efa4755", - "0xff6a9dc4269cd9d6", - "0xf152d0d450e75fa0", - "0x9da8e15a468f5584", - "0x3b614f00a6312bdd", - "0x853af8603c6914a6", - "0x5722714ca459a07c", - "0x534f2f14c7b9cd", - "0xe0a40b78e069c271", - "0xed02a93532cfdd30", - "0x477474322da07ec5", - "0xcfb69eba40e8e83c", - "0x95c19429516b7e83", - "0xe72ddd0ce13f244", - "0x80a9427c" - ], - [ - "0x5e19c1aea01102f9", - "0x82653e9435c27456", - "0x6c85883c66d32d77", - "0x997434564679b8ed", - "0x2aef61a0f9dfcf06", - "0x1f4f35bac04c70c", - "0xa3aced786d2fc676", - "0x4cd55bd8c5ccb479", - "0xaadaa0a1c0b578e6", - "0xa12cde6061675c15", - "0x45238e8841693826", - "0xe8dbefccec975c1", - "0x56a0a6b6b1dd4f2c", - "0xb944f12d50702aa1", - "0x1962bfe45b3d41f7", - "0x18fbb405a9b11839", - "0xa0222a38518e0a92", - "0x7869cb59ae1871d6", - "0x96be8e6e205d11cd", - "0xaec0280b20553a28", - "0xfe34dfc43cf3707f", - "0x72a18de82ee33a0", - "0x941258afc42170f7", - "0x1dd489e0f8a60d0c", - "0x59158dad07c465e3", - "0xe309286a4e6aa0f2", - "0x635af7f158cfca48", - "0x7b2f709560ce8fe8", - "0x39568e381a5f6fac", - "0x55878a22dda0df02", - "0xe2fc664542c3871e", - "0xbce6bb844165bc3c", - "0x14531b77f59c916a", - "0xd184add5a0b662d9", - "0x6bb294447da0e26", - "0xc6e0912f0991e654", - "0x558e6ccc5c7c7392", - "0xd61712a0fc21c1dd", - "0x43a26c7177ccaaa", - "0x6ffc3b67472915e5", - "0x45049c641967f271", - "0x1dd8a0d6b5ebcb0c", - "0xc71045de4a959bf7", - "0x8676de566a1f1eb7", - "0xd297084c4019e127", - "0xbea0193d2b42415d", - "0x1e7d7514391790f0", - "0x1c60f3c5d6570922", - "0xffd71c6b9f149a42", - "0xa052b5f86b064bad", - "0xb22ccc5257cf30a8", - "0x42c32663548bedb5", - "0xdf128dce6daec770", - "0x703f370ed71eed6a", - "0x37144c12faac56a0", - "0x64dbc0bc53b88eda", - "0xd2b9768bdc6b752e", - "0x28b8f6798920547b", - "0xede378a44b10a0dc", - "0x5636f5174e54387d", - "0x324818ff66de2edf", - "0xf08cc6d4ecf1c385", - "0xadf4aa0d16a06a6c", - "0xeed518f3bdb6dfaa", - "0xd6c7bd0495a7a0f7", - "0x2a6d07385d918513", - "0x80da117b" - ], - [ - "0xd376880ca09101f9", - "0xc97a529699654659", - "0xe8ac8108a83209a4", - "0x4e90f78c7707d12d", - "0xe292da0e39f3515", - "0x6d8331ad2c6ba1f", - "0xc01c99e896c384d1", - "0x6adae583c2208211", - "0x1365a0287453f65b", - "0x5477cb087a0a097c", - "0xb62cab2d3021e6b", - "0xa505941c03ea474e", - "0x50a040f37a8034f6", - "0x6f086c0e8faa1381", - "0xc3bb7f31e0ab3cef", - "0x8b769bdb4289370e", - "0x80d08a156e708dab", - "0xd1acab94c25b04a0", - "0x2972012216221b7b", - "0xade04d0214fe47b8", - "0x839ac2f611f43d80", - "0xc6a86e9be4a8a05b", - "0xfd20f82104943ff3", - "0xddf3cf80aeb0c53c", - "0x76834fab7712248b", - "0x47106ea9a0800b84", - "0x20541efe5f40c0e2", - "0xc7452c160a02b5c4", - "0xc2e5cbff68c6f3d1", - "0xafdaffa0ee2e6571", - "0x9c6bb900257b102", - "0xb2d792bc50f15215", - "0x51be63015351d2fc", - "0x3ac6a0702f7569f8", - "0xfdcffc05cdff59b1", - "0x468880e764c84d44", - "0xd912199f06de7a7f", - "0x5ca0a7db843632ee", - "0xc0d628da52ba5c67", - "0xb12a761721d9d3a1", - "0xce173c16111f4289", - "0x8040db137a7bc4c1", - "0xfb5cf5c514ee43a0", - "0xffe55b93cd035f3e", - "0x5336d6af7ff71d8b", - "0xe4858f9a1352908e", - "0xc7ca89cbeea080c8", - "0xbe4d58304e68d653", - "0x2a798b994bb2daeb", - "0x70d1151e834cf123", - "0x803df2ce" - ], - [ - "0xa0808080808051f8", - "0x89aec71f036ca173", - "0xc99d552fcd9c02ee", - "0x64638627851c62cc", - "0x450cef2e7d51ed32", - "0x8080808080808080", - "0x56fda7cbf4e7a080", - "0x500f0ee84c586361", - "0xdeccd5de16f9e35d", - "0xa84323f9c25b7078", - "0x80c9ce" - ], - [ - "0xf68f59de309d66f8", - "0x7e5fecb48e2d4511", - "0x3b0775d174efe899", - "0xd3b5306893dc4ce1", - "0xaa0800144f846b8", - "0x73ca4134ac04ce06", - "0x8a77b72d70eb37a9", - "0xacd0554ca3b91104", - "0xa0f25962fc91ed4f", - "0x876b309aa39be0b3", - "0x591938a3cd5995be", - "0x4ba3f3e5d6246d61", - "0xa181627de4401423" - ] - ] - } - ] - } - ], - "storages": [ - { - "address": [ - "0x5d89d5862ca7e8af", - "0x36b7d426ab6d61d6", - "0x2f4722cf" - ], - "slot": [ - "0x0", - "0x0", - "0x0", - "0x1000000000000000" - ], - "storage_key": "0x1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae672", - "proofs": [ - { - "block_number": 6375109, - "proof_bytes_len": [ - 532, - 83, - 69 - ], - "proof": [ - [ - "0xdaaaa563a01102f9", - "0x53733b89af92fdbc", - "0x227bd6cee31ca3e9", - "0x336db59681c1265b", - "0x7d7780a0509e595e", - "0x7310f9ca15df6350", - "0x2cabd610c8b53725", - "0xadbb21b0304fb72e", - "0xebda0d73dfe99f7", - "0x9ca6efeaf56b9b49", - "0xbc955048ac3d5fe2", - "0xcc33f505be97fb68", - "0xf2a0bc4d1ca2189d", - "0xd6fec3fed9cc776e", - "0x2cdfad8829638de5", - "0xb45659b7b4880241", - "0xa0b2c0c42a8b68fa", - "0x124ea6c73242e630", - "0x980e5879cc375472", - "0xcee0f874c5686418", - "0x969bcca76c6785d0", - "0x2df84ea10d9388a0", - "0xb82c15fe0e46f64a", - "0x984ecc65972203c3", - "0xcc4050165d2c602e", - "0xa7e41fa0d715a056", - "0x4b56009614424972", - "0xfdc53ee84e7e95fd", - "0x2dea4431fe1070d1", - "0xc864595a66a0e3f4", - "0xd17f80d096431b16", - "0xb51f6788c53e6caa", - "0x60ed6c03838c7510", - "0x39067cd5a0ce9ea9", - "0xb62a0e234fd40583", - "0x72e16ce793841c85", - "0x35322107af4919fa", - "0xf9272da039bdc793", - "0xd7d2f60de50aa21d", - "0x961d1a598e8c03b6", - "0x67df3a6bb55d1a9b", - "0xf8e1a0e89a0e6d62", - "0x3ede8e86c0e4dfdd", - "0xd8befa2a92c3ff26", - "0x3e13839c33dfae35", - "0x8ba06ee1a9e3ab0a", - "0x7c9ef401225bf5f3", - "0x4b8ac462c655ceff", - "0x1feec82f659f9b5b", - "0xa041d35933716a17", - "0xabad1dc62c18c692", - "0x936b6b57f845b3f7", - "0xfbd1e711de6e6536", - "0xa6014cee1d92b9f0", - "0x8bd8fb8e3eabfa0", - "0xba8bf46a6a1b7a92", - "0xa2a4e0cb613e9f70", - "0xf77aa9d38589e6a7", - "0x4062ee9d1fe3a033", - "0xba2bc68979de97bf", - "0xbdaf7bfec356fb9a", - "0x18c3a4aa9f3c07ef", - "0x1dcbed5fbba0aa9d", - "0x81f5631f4cb93054", - "0x406b742b1184064e", - "0x9e1d337f94beb2e8", - "0x80456c83" - ], - [ - "0x80808080808051f8", - "0xb8b52a1f7ea08080", - "0x7e61781d2a5e06f2", - "0xc001b39cbb1985d0", - "0x66be391c1b432d93", - "0x3beca0808097599d", - "0x54112b4e9235e5e3", - "0xa1558e7687ac1dab", - "0x818b16e5a58051e1", - "0x80809b39735f0bf6", - "0x808080" - ], - [ - "0x74dc476820a043f8", - "0x4588278dd00c1b1a", - "0x5947737bd819d8f9", - "0x2ab85cdee25fb5af", - "0x736e49a0a172e69a", - "0x7473655420656469", - "0x656d616e20", - "0x0", - "0x2000000000" - ] - ] - } - ] - } - ], - "transactions": [], - "transaction_receipts": [] - }, - "tasks": [ - { - "type": "datalake_compute", - "context": { - "task_bytes_len": 128, - "encoded_task": [ - "0xb7d65362098af8fc", - "0xbb9ce9daf3acf4f", - "0x7764468b86369c36", - "0xfefccffceae47099", - "0x0", - "0x0", - "0x0", - "0x0", - "0x0", - "0x0", - "0x0", - "0x0", - "0x0", - "0x0", - "0x0", - "0x0" - ], - "datalake_bytes_len": 288, - "encoded_datalake": [ - "0x0", - "0x0", - "0x0", - "0x0", - "0x0", - "0x0", - "0x0", - "0xa736aa0000000000", - "0x0", - "0x0", - "0x0", - "0xc546610000000000", - "0x0", - "0x0", - "0x0", - "0xc546610000000000", - "0x0", - "0x0", - "0x0", - "0x100000000000000", - "0x0", - "0x0", - "0x0", - "0xc000000000000000", - "0x0", - "0x0", - "0x0", - "0x3500000000000000", - "0x89d5862ca7e8af03", - "0xb7d426ab6d61d65d", - "0x2f4722cf36", - "0x0", - "0x0", - "0x0", - "0x1000000000", - "0x0" - ], - "datalake_type": 0, - "property_type": 3 - } - } - ] -} \ No newline at end of file diff --git a/output.json b/output.json deleted file mode 100644 index 4250a303..00000000 --- a/output.json +++ /dev/null @@ -1,39 +0,0 @@ -{ - "raw_results": [ - "0x0000000000000000000000000000000000000000000000000000000000000000" - ], - "results_commitments": [ - "0x6539b66f7f8b7f4ae54abdfd7b0b403df5f326f422fbb178c675c6b8bddeaaf5" - ], - "tasks_commitments": [ - "0xe5d53290ecf6ebdf78189c67c45a6d0882b0d199e714c855052a7166b6da7ff0" - ], - "task_inclusion_proofs": [ - [] - ], - "results_inclusion_proofs": [ - [] - ], - "results_root": "0xb1b4ea77b125a3360e3fb683830d3c44d6ccfed08c820e39fb0487b0da0a7168", - "tasks_root": "0xe48e52ac91f5fdec65517efdcaa48eb44b43259adc615cf67b210d2316d5ba86", - "mmr_metas": [ - { - "id": 2, - "root": "0x10985193855d9de012ae065d02e15676aa2cce031b18290d3b48fb8e410d3bc", - "size": 56994, - "peaks": [ - "0x0794bd0825d51a5662ba8ca27d71d1000b8e1bfb708b34b6541428d6da58795", - "0x527ab023c7fdc1afa3c25885e4c2ae47522cde5ddf49c2bc20dccace24bfad4", - "0x04c8c7e945aafd7ec5a7d376bab269e42a9589fe7064a986c4e4d9d05f6e72e", - "0x5ad67d05125b5d17dc14c91938218edd87689e09a4eac8be311485125ccb301", - "0x3331f3ebc157027bdbbac2478ea7e164edc8b80b21ff34867551b7204d05392", - "0x3da3dedfb8f9e4d8abb4ac4722b85f3dd960a85850bf49294c480a46c540535", - "0x4495fa03fc69c5356b41a8d51fffbba196122fc62a05bae47c4b44669090fb2", - "0x76d7442003ddf6d8b6b29c42c3ba9b56f52309619b16f9aaf46ee13263d62f8", - "0x05996b64edff625e7f7443af14adf9d920f3ff4ff75a18bd1f93a209ec3fef4", - "0x5417f6fb234889a2c018bf05eef24cebd8ba29595df9ca880e0f856162c1bb7" - ], - "chain_id": 11155111 - } - ] -} \ No newline at end of file From f9ecdb874280eac450a98ed4e472551d37638be4 Mon Sep 17 00:00:00 2001 From: Pia Date: Tue, 3 Sep 2024 11:52:09 +0900 Subject: [PATCH 10/11] test: config --- hdp/src/hdp_run.rs | 85 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 85 insertions(+) diff --git a/hdp/src/hdp_run.rs b/hdp/src/hdp_run.rs index 4b84ecf5..a67f0b4d 100644 --- a/hdp/src/hdp_run.rs +++ b/hdp/src/hdp_run.rs @@ -177,3 +177,88 @@ pub async fn run(hdp_run_config: &HdpRunConfig, tasks: Vec) -> Res Ok(()) } } + +#[cfg(test)] +mod tests { + use super::*; + use std::env; + + #[test] + fn test_hdp_run_config_init_with_env() { + // Set up environment variables + env::set_var("RPC_URL_ETHEREUM_MAINNET", "https://example.com/rpc1"); + env::set_var("RPC_CHUNK_SIZE_ETHEREUM_MAINNET", "50"); + env::set_var("RPC_URL_STARKNET_MAINNET", "https://example.com/rpc2"); + env::set_var("RPC_CHUNK_SIZE_STARKNET_MAINNET", "60"); + env::set_var("DRY_RUN_CAIRO_PATH", "/path/to/dry_run.cairo"); + env::set_var("SOUND_RUN_CAIRO_PATH", "/path/to/sound_run.cairo"); + env::set_var("SAVE_FETCH_KEYS_FILE", "/path/to/save_fetch_keys.json"); + + // Initialize HdpRunConfig + let config = HdpRunConfig::init( + None, + None, + PathBuf::from("input.json"), + false, + None, + None, + None, + ); + + // Assert provider configurations + assert_eq!(config.provider_config.len(), 2); + assert!(config + .provider_config + .contains_key(&ChainId::EthereumMainnet)); + assert!(config + .provider_config + .contains_key(&ChainId::StarknetMainnet)); + + let provider_config_1 = config + .provider_config + .get(&ChainId::EthereumMainnet) + .unwrap(); + assert_eq!( + provider_config_1.rpc_url.to_string(), + "https://example.com/rpc1" + ); + assert_eq!(provider_config_1.max_requests, 50); + + let provider_config_2 = config + .provider_config + .get(&ChainId::StarknetMainnet) + .unwrap(); + assert_eq!( + provider_config_2.rpc_url.to_string(), + "https://example.com/rpc2" + ); + assert_eq!(provider_config_2.max_requests, 60); + + // Assert other configurations + assert_eq!( + config.dry_run_program_path, + PathBuf::from("/path/to/dry_run.cairo") + ); + assert_eq!( + config.sound_run_program_path, + PathBuf::from("/path/to/sound_run.cairo") + ); + assert_eq!(config.program_input_file, PathBuf::from("input.json")); + assert_eq!(config.is_cairo_format, false); + assert_eq!( + config.save_fetch_keys_file, + Some(PathBuf::from("/path/to/save_fetch_keys.json")) + ); + assert_eq!(config.batch_proof_file, None); + assert_eq!(config.cairo_pie_file, None); + + // Clean up environment variables + env::remove_var("RPC_URL_1"); + env::remove_var("RPC_CHUNK_SIZE_1"); + env::remove_var("RPC_URL_2"); + env::remove_var("RPC_CHUNK_SIZE_2"); + env::remove_var("DRY_RUN_CAIRO_PATH"); + env::remove_var("SOUND_RUN_CAIRO_PATH"); + env::remove_var("SAVE_FETCH_KEYS_FILE"); + } +} From 90c3ca5f5669dfc184707aab9090925279729338 Mon Sep 17 00:00:00 2001 From: Pia Date: Tue, 3 Sep 2024 11:54:54 +0900 Subject: [PATCH 11/11] clippy --- hdp/src/hdp_run.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hdp/src/hdp_run.rs b/hdp/src/hdp_run.rs index a67f0b4d..897359aa 100644 --- a/hdp/src/hdp_run.rs +++ b/hdp/src/hdp_run.rs @@ -244,7 +244,7 @@ mod tests { PathBuf::from("/path/to/sound_run.cairo") ); assert_eq!(config.program_input_file, PathBuf::from("input.json")); - assert_eq!(config.is_cairo_format, false); + assert!(!config.is_cairo_format); assert_eq!( config.save_fetch_keys_file, Some(PathBuf::from("/path/to/save_fetch_keys.json"))