From c59960d54dc511b990c33c92b3ce309c044b95ef Mon Sep 17 00:00:00 2001 From: Alexandru Vasile Date: Thu, 21 Aug 2025 07:41:39 +0000 Subject: [PATCH 01/67] revive: Implement latest tx type Signed-off-by: Alexandru Vasile --- Cargo.lock | 13 + substrate/frame/revive/Cargo.toml | 1 + .../frame/revive/src/evm/api/rlp_codec.rs | 83 +++++ .../frame/revive/src/evm/api/rpc_types.rs | 1 + .../frame/revive/src/evm/api/rpc_types_gen.rs | 290 ++++++++++++++++++ substrate/frame/revive/src/evm/api/type_id.rs | 1 + 6 files changed, 389 insertions(+) diff --git a/Cargo.lock b/Cargo.lock index 8008eeeeac681..537e13a250e59 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -114,12 +114,18 @@ dependencies = [ "alloy-eips", "alloy-primitives", "alloy-rlp", + "alloy-serde", "alloy-trie", "alloy-tx-macros", "auto_impl", + "c-kzg", "derive_more 2.0.1", "either", + "k256", "once_cell", + "rand 0.8.5", + "secp256k1 0.30.0", + "serde", "thiserror 2.0.12", ] @@ -362,6 +368,7 @@ dependencies = [ "arrayvec 0.7.4", "derive_more 2.0.1", "nybbles", + "serde", "smallvec", "tracing", ] @@ -1075,6 +1082,9 @@ name = "arrayvec" version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" +dependencies = [ + "serde", +] [[package]] name = "asn1-rs" @@ -11104,6 +11114,7 @@ checksum = "63cb50036b1ad148038105af40aaa70ff24d8a14fbc44ae5c914e1348533d12e" dependencies = [ "cfg-if", "ruint", + "serde", "smallvec", ] @@ -18136,6 +18147,7 @@ dependencies = [ "libc", "rand_chacha 0.3.1", "rand_core 0.6.4", + "serde", ] [[package]] @@ -21440,6 +21452,7 @@ dependencies = [ "bitcoin_hashes 0.14.0", "rand 0.8.5", "secp256k1-sys 0.10.1", + "serde", ] [[package]] diff --git a/substrate/frame/revive/Cargo.toml b/substrate/frame/revive/Cargo.toml index afde2d9ad93bd..1a3329b8ec76f 100644 --- a/substrate/frame/revive/Cargo.toml +++ b/substrate/frame/revive/Cargo.toml @@ -64,6 +64,7 @@ sp-version = { workspace = true } subxt-signer = { workspace = true, optional = true, features = ["unstable-eth"] } [dev-dependencies] +alloy-consensus = { workspace = true, features = ["serde"] } array-bytes = { workspace = true, default-features = true } assert_matches = { workspace = true } pretty_assertions = { workspace = true } diff --git a/substrate/frame/revive/src/evm/api/rlp_codec.rs b/substrate/frame/revive/src/evm/api/rlp_codec.rs index 4094c963ac204..4a0230745ad89 100644 --- a/substrate/frame/revive/src/evm/api/rlp_codec.rs +++ b/substrate/frame/revive/src/evm/api/rlp_codec.rs @@ -39,6 +39,10 @@ impl TransactionUnsigned { s.append(&tx.r#type.value()); s.append(tx); }, + Transaction7702Unsigned(ref tx) => { + s.append(&tx.r#type.value()); + s.append(tx); + }, TransactionLegacyUnsigned(ref tx) => { s.append(tx); }, @@ -57,6 +61,7 @@ impl TransactionSigned { Transaction2930Signed(tx) => Transaction2930Unsigned(tx.transaction_2930_unsigned), Transaction1559Signed(tx) => Transaction1559Unsigned(tx.transaction_1559_unsigned), Transaction4844Signed(tx) => Transaction4844Unsigned(tx.transaction_4844_unsigned), + Transaction7702Signed(tx) => Transaction7702Unsigned(tx.transaction_7702_unsigned), TransactionLegacySigned(tx) => TransactionLegacyUnsigned(tx.transaction_legacy_unsigned), } @@ -79,6 +84,10 @@ impl TransactionSigned { s.append(&tx.transaction_4844_unsigned.r#type.value()); s.append(tx); }, + Transaction7702Signed(ref tx) => { + s.append(&tx.transaction_7702_unsigned.r#type.value()); + s.append(tx); + }, TransactionLegacySigned(ref tx) => { s.append(tx); }, @@ -96,6 +105,7 @@ impl TransactionSigned { TYPE_EIP2930 => rlp::decode::(&data[1..]).map(Into::into), TYPE_EIP1559 => rlp::decode::(&data[1..]).map(Into::into), TYPE_EIP4844 => rlp::decode::(&data[1..]).map(Into::into), + TYPE_EIP7702 => rlp::decode::(&data[1..]).map(Into::into), _ => rlp::decode::(data).map(Into::into), } } @@ -198,6 +208,31 @@ impl Decodable for AccessListEntry { } } +impl Encodable for SetCodeAuthorizationEntry { + fn rlp_append(&self, s: &mut rlp::RlpStream) { + s.begin_list(6); + s.append(&self.chain_id); + s.append(&self.address); + s.append(&self.nonce); + s.append(&self.r); + s.append(&self.s); + s.append(&self.y_parity); + } +} + +impl Decodable for SetCodeAuthorizationEntry { + fn decode(rlp: &rlp::Rlp) -> Result { + Ok(SetCodeAuthorizationEntry { + chain_id: rlp.val_at(0)?, + address: rlp.val_at(1)?, + nonce: rlp.val_at(2)?, + r: rlp.val_at(3)?, + s: rlp.val_at(4)?, + y_parity: rlp.val_at(5)?, + }) + } +} + /// See impl Encodable for Transaction1559Unsigned { fn rlp_append(&self, s: &mut rlp::RlpStream) { @@ -410,6 +445,54 @@ impl Decodable for Transaction4844Signed { } } +impl Encodable for Transaction7702Signed { + fn rlp_append(&self, s: &mut rlp::RlpStream) { + let tx = &self.transaction_7702_unsigned; + s.begin_list(10); + s.append(&tx.chain_id); + s.append(&tx.nonce); + s.append(&tx.max_priority_fee_per_gas); + s.append(&tx.max_fee_per_gas); + s.append(&tx.gas_price); + s.append(&tx.gas); + s.append(&tx.to); + s.append(&tx.value); + s.append(&tx.input.0); + s.append_list(&tx.access_list); + s.append_list(&tx.auth_list); + s.append(&self.y_parity); + s.append(&self.r); + s.append(&self.s); + } +} + +impl Decodable for Transaction7702Signed { + fn decode(rlp: &rlp::Rlp) -> Result { + Ok(Transaction7702Signed { + transaction_7702_unsigned: { + Transaction7702Unsigned { + chain_id: rlp.val_at(0)?, + nonce: rlp.val_at(1)?, + max_priority_fee_per_gas: rlp.val_at(2)?, + max_fee_per_gas: rlp.val_at(3)?, + gas_price: rlp.val_at(4)?, + gas: rlp.val_at(5)?, + to: rlp.val_at(6)?, + value: rlp.val_at(7)?, + input: Bytes(rlp.val_at(8)?), + access_list: rlp.list_at(9)?, + auth_list: rlp.list_at(10)?, + ..Default::default() + } + }, + y_parity: rlp.val_at(11)?, + r: rlp.val_at(12)?, + s: rlp.val_at(13)?, + ..Default::default() + }) + } +} + /// See impl Decodable for TransactionLegacySigned { fn decode(rlp: &rlp::Rlp) -> Result { diff --git a/substrate/frame/revive/src/evm/api/rpc_types.rs b/substrate/frame/revive/src/evm/api/rpc_types.rs index 195c1c5fd4623..3f97b5e32b817 100644 --- a/substrate/frame/revive/src/evm/api/rpc_types.rs +++ b/substrate/frame/revive/src/evm/api/rpc_types.rs @@ -35,6 +35,7 @@ impl From for TransactionUnsigned { Transaction4844Signed(tx) => tx.transaction_4844_unsigned.into(), Transaction1559Signed(tx) => tx.transaction_1559_unsigned.into(), Transaction2930Signed(tx) => tx.transaction_2930_unsigned.into(), + Transaction7702Signed(tx) => tx.transaction_7702_unsigned.into(), TransactionLegacySigned(tx) => tx.transaction_legacy_unsigned.into(), } } diff --git a/substrate/frame/revive/src/evm/api/rpc_types_gen.rs b/substrate/frame/revive/src/evm/api/rpc_types_gen.rs index 7ee7093add162..3551ae95c3f8b 100644 --- a/substrate/frame/revive/src/evm/api/rpc_types_gen.rs +++ b/substrate/frame/revive/src/evm/api/rpc_types_gen.rs @@ -135,6 +135,7 @@ pub struct Block { /// Total difficulty #[serde(rename = "totalDifficulty", skip_serializing_if = "Option::is_none")] pub total_difficulty: Option, + #[serde(rename = "transactions")] pub transactions: HashesOrTransactionInfos, /// Transactions root #[serde(rename = "transactionsRoot")] @@ -427,6 +428,7 @@ pub enum TransactionUnsigned { Transaction4844Unsigned(Transaction4844Unsigned), Transaction1559Unsigned(Transaction1559Unsigned), Transaction2930Unsigned(Transaction2930Unsigned), + Transaction7702Unsigned(Transaction7702Unsigned), TransactionLegacyUnsigned(TransactionLegacyUnsigned), } impl Default for TransactionUnsigned { @@ -435,6 +437,9 @@ impl Default for TransactionUnsigned { } } +/// Authorization list +pub type AuthList = Vec; + /// Access list pub type AccessList = Vec; @@ -494,11 +499,13 @@ pub enum HashesOrTransactionInfos { /// Full transactions TransactionInfos(Vec), } + impl Default for HashesOrTransactionInfos { fn default() -> Self { HashesOrTransactionInfos::Hashes(Default::default()) } } + /// log #[derive(Debug, Default, Clone, Serialize, Deserialize, Eq, PartialEq)] pub struct Log { @@ -691,6 +698,47 @@ pub struct Transaction4844Unsigned { pub value: U256, } +/// EIP-7702 transaction. +#[derive( + Debug, Default, Clone, Serialize, Deserialize, Eq, PartialEq, TypeInfo, Encode, Decode, +)] +pub struct Transaction7702Unsigned { + /// chainId + /// Chain ID that this transaction is valid on. + #[serde(rename = "chainId")] + pub chain_id: U256, + /// nonce + pub nonce: U256, + /// gas limit + pub gas: U256, + /// gas price + /// The gas price willing to be paid by the sender in wei + #[serde(rename = "gasPrice")] + pub gas_price: U256, + /// gas price + /// The gas price willing to be paid by the sender in wei + #[serde(rename = "maxFeePerGas")] + pub max_fee_per_gas: U256, + /// The gas price willing to be paid by the sender in wei + #[serde(rename = "maxPriorityFeePerGas")] + pub max_priority_fee_per_gas: U256, + /// to address + pub to: Address, + /// value + pub value: U256, + /// input data + pub input: Bytes, + /// accessList + /// EIP-2930 access list + #[serde(rename = "accessList")] + pub access_list: AccessList, + /// Authorization list. + #[serde(rename = "authorizationList")] + pub auth_list: Vec, + /// type + pub r#type: TypeEip2930, +} + /// Legacy transaction. #[derive( Debug, @@ -747,6 +795,7 @@ pub enum TransactionSigned { Transaction4844Signed(Transaction4844Signed), Transaction1559Signed(Transaction1559Signed), Transaction2930Signed(Transaction2930Signed), + Transaction7702Signed(Transaction7702Signed), TransactionLegacySigned(TransactionLegacySigned), } @@ -769,6 +818,7 @@ impl TransactionSigned { .saturating_add(tx.transaction_1559_unsigned.max_priority_fee_per_gas) .min(tx.transaction_1559_unsigned.max_fee_per_gas), TransactionSigned::Transaction2930Signed(tx) => tx.transaction_2930_unsigned.gas_price, + TransactionSigned::Transaction7702Signed(tx) => tx.transaction_7702_unsigned.gas_price, } } } @@ -809,6 +859,29 @@ pub struct AccessListEntry { pub storage_keys: Vec, } +/// Set code authorization entry +#[derive( + Debug, Default, Clone, Encode, Decode, TypeInfo, Serialize, Deserialize, Eq, PartialEq, +)] +pub struct SetCodeAuthorizationEntry { + /// chainId + /// Chain ID that this transaction is valid on. + #[serde(rename = "chainId")] + pub chain_id: U256, + /// Address. + pub address: Address, + /// nonce + pub nonce: U256, + /// r + pub r: U256, + /// s + pub s: U256, + /// yParity + /// The parity (0 for even, 1 for odd) of the y-value of the secp256k1 signature. + #[serde(rename = "yParity")] + pub y_parity: U256, +} + /// Filter Topic List Entry #[derive(Debug, Clone, Serialize, Deserialize, From, TryInto, Eq, PartialEq)] #[serde(untagged)] @@ -940,6 +1013,28 @@ pub struct TransactionLegacySigned { pub v: U256, } +/// Signed 7702 Transaction +#[derive( + Debug, Default, Clone, Serialize, Deserialize, Eq, PartialEq, TypeInfo, Encode, Decode, +)] +pub struct Transaction7702Signed { + #[serde(flatten)] + pub transaction_7702_unsigned: Transaction7702Unsigned, + /// r + pub r: U256, + /// s + pub s: U256, + /// v + /// For backwards compatibility, `v` is optionally provided as an alternative to `yParity`. + /// This field is DEPRECATED and all use of it should migrate to `yParity`. + #[serde(skip_serializing_if = "Option::is_none")] + pub v: Option, + /// yParity + /// The parity (0 for even, 1 for odd) of the y-value of the secp256k1 signature. + #[serde(rename = "yParity")] + pub y_parity: U256, +} + #[derive(Debug, Clone, Serialize, Deserialize, PartialEq)] #[serde(rename_all = "camelCase")] pub struct FeeHistoryResult { @@ -965,3 +1060,198 @@ pub struct FeeHistoryResult { #[serde(default, skip_serializing_if = "Vec::is_empty")] pub reward: Vec>, } + +#[cfg(test)] + +mod test { + use super::*; + + #[test] + fn test_hashes_or_transaction_infos_deserialization() { + let json = r#"["0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef"]"#; + let result: HashesOrTransactionInfos = serde_json::from_str(json).unwrap(); + assert!(matches!(result, HashesOrTransactionInfos::Hashes(_))); + + let json = r#"[]"#; + let result: HashesOrTransactionInfos = serde_json::from_str(json).unwrap(); + assert!(matches!(result, HashesOrTransactionInfos::Hashes(_))); + + let json = r#"[{"invalid": "data"}]"#; + let result: Result = serde_json::from_str(json); + assert!(result.is_err()); + + // Real block representation. + let json = r#"[{ + "accessList": [], + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "chainId": "0x1", + "from": "0x693ca5c6852a7d212dabc98b28e15257465c11f3", + "gas": "0x70bdb", + "gasPrice": "0x23cf3fd4", + "hash": "0xf6d8b07ddcf9a9d44c99c3665fd8c78f0ccd32506350ea5a9be1a68ba08bfd1f", + "input": "0x09c5eabe000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000002a90000cca0b86991c6218b36c1d19d4a2e9eb0ce3606eb48000000000000000000000000000000020000000000000000000000035c9618f600000000000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc20000000000000000000000002374fed200000000000000000001528fd550bc9a0000000000000000351e55bea6d51900dac17f958d2ee523a2206206994597c13d831ec7000000000000000000000000000000000000000000000000000000005c0c965e0000000000000000000000000000000000004c00000001000000000000000000000000000000000000002e24cd1d61a63f43658ed73b6ddeba00010002000100000000000000000000000000000000000000000000000039d622818daae62900006602000000000000000000002ff9e9686fa6ac00000000000000000000000000007f88ca000000000000000004caaa5ba8029c920300010000000000000000052319c661ddb06600000000000000000001528fd550bc9a0000000000000000005049606b67676100011c0c00000000000000002ff9e9686fa6ac000000000000000000000000035c16902c0000000000000000000000000000000200000000000000000000000000000002000073d53553ee552c1f2a9722e6407d43e41e19593f1cbc3d63300bfc6e48709f5b5ed98f228c70104e8c5d570b5608b47dca95ce6e371636965b6fdcab3613b6b65f061a44b7132011bb97a768bd238eacb62d7109920b000000000000000005246c56372e6d000000000000000000000000005c0c965e0000000000000000000000002374fed20000000000000000000000002374fed200011cc19621f6edbb9c02b95055b9f52eba0e2cb954c259f42aeca488551ea82b72f2504bbd310eb7145435e258751ab6854ab08b1630b89d6621dc1398c5d0c43b480000000000000000000000000000000000000000000000000000", + "maxFeePerGas": "0x47ca802f", + "maxPriorityFeePerGas": "0x0", + "nonce": "0x40c6", + "r": "0xb3e71bd95d73e965495b17647f5faaf058e13af7dd21f2af24eac16f7e9d06a1", + "s": "0x58775b0c15075fb7f007b88e88605ae5daec1ffbac2771076e081c8c2b005c20", + "to": "0x0000000aa232009084bd71a5797d089aa4edfad4", + "transactionIndex": "0x0", + "type": "0x2", + "v": "0x1", + "value": "0x0", + "yParity": "0x1" + }] + "#; + let result: HashesOrTransactionInfos = serde_json::from_str(json).unwrap(); + assert!(matches!(result, HashesOrTransactionInfos::TransactionInfos(_))); + + // Complex real block representation. + let json = r#"[{ + "accessList": [ + { + "address": "0x9008d19f58aabd9ed0d60971565aa8510560ab41", + "storageKeys": [ + "0x0000000000000000000000000000000000000000000000000000000000000001", + "0x650f69dead2eeee68214ac0bc29f23bc7e2f82c89293ef4b23dc1591bc737c67" + ] + }, + { + "address": "0x2c4c28ddbdac9c5e7055b4c863b72ea0149d8afe", + "storageKeys": [ + "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc", + "0x88d075c869ce192f20da9bfc0d2db81b73b4aa4af2ce17e52384cb021d06bd06" + ] + }, + { + "address": "0x9e7ae8bdba9aa346739792d219a808884996db67", + "storageKeys": [] + }, + { + "address": "0x800c32eaa2a6c93cf4cb51794450ed77fbfbb172", + "storageKeys": [] + }, + { + "address": "0x366aa56191e89d219ac36b33406fce85da1e7554", + "storageKeys": [] + }, + { + "address": "0xc92e8bdf79f0507f65a392b0ab4667716bfe0110", + "storageKeys": [] + }, + { + "address": "0xbbbbbbb520d69a9775e85b458c58c648259fad5f", + "storageKeys": [ + "0xa3b7a258ccc3c19490a94edab51a442dd2eeac4318bddede8cd899595d08f28a" + ] + }, + { + "address": "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2", + "storageKeys": [ + "0xb84fbcd09e20fa700ddef111765a21785d2290b3c7c8719a27e4b60b59126522", + "0xda591c30fe54b3edd3bcb5d0d916c5c472e3ad81645d0312a5e73f3708e8708b", + "0x0bc90c98aed598fd15d9075ded522981aeb2ee369c8117e46bd494dc17c29999", + "0xdbde769b5281dad4214cceeb1871ab281fb8fd2a4443141db1078642029ae248", + "0x9d98752c354deebddd53535455198eacf8cfb934237d3523207f70386be5e3dc" + ] + }, + { + "address": "0x60bf78233f48ec42ee3f101b9a05ec7878728006", + "storageKeys": [] + }, + { + "address": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48", + "storageKeys": [ + "0x0000000000000000000000000000000000000000000000000000000000000001", + "0x0000000000000000000000000000000000000000000000000000000000000004", + "0x44624a8a323b583a84b5812478c554a5e284223b469e9f7039175023c0e54c3e", + "0x3ad18d7747f05925bebbb1df8860daa9cd402d902420f95ce10c49792803c3d6", + "0xcc236083e86ee3df0f3160002f381f1404bd44c4dec1322196f34d52548202f5", + "0x88afba62e6432e4d0a3e39a2be587d39c0b93368d66cedb0531bb5292040a552", + "0x10d6a54a4754c8869d6886b5f5d7fbfa5b4522237ea5c60d11bc4e7a1ff9390b", + "0x5cfccd15aa8eff180914a82b4caf3b39b3c62421a17404ea7a7d0c80fe766666", + "0x659f5b53123b3e7a886575e106645d4d7c5af120440f3f409542b3987fa1ea07", + "0x77d5014beb071d1c3dabbdbdba61f9a5cc3ffedca11c102ef7e2fae619d04e12", + "0x6e91f60197c982353033e86512311820683e018e0f39963c5d00c2c490bc45d3", + "0x7050c9e0f4ca769c69bd3a8ef740bc37934f8e2c036e5a723fd8ee048ed3f8c3" + ] + }, + { + "address": "0x43506849d7c04f9138d1a2050bbf3a0c054402dd", + "storageKeys": [] + }, + { + "address": "0x68b3465833fb72a70ecdf485e0e4c7bd8665fc45", + "storageKeys": [] + }, + { + "address": "0x1346d1ee3fb1b65fecfcb65c149ca0702c286f53", + "storageKeys": [ + "0x0000000000000000000000000000000000000000000000000000000000000004", + "0x0000000000000000000000000000000000000000000000000000000000000002", + "0xc0d1c00078410fd0164580b0bad93d8a579580d06cf45fc2696a823498097b8a", + "0x0000000000000000000000000000000000000000000000000000000000000008", + "0x0000000000000000000000000000000000000000000000000000000000000000" + ] + }, + { + "address": "0x899d774e0f8e14810d628db63e65dfacea682343", + "storageKeys": [ + "0xd64773870f40323194fda2d1773a23183ba723843a4aa8fb90d5eaf49c342f55", + "0xef7cf59cb40a7ae1b5e03b08af7ed07c83f41406ca13eaeed923c1f2fc8bbb2a", + "0x70f537a6c3c5e23e6deecb5baafd173071015ed695aa4c5ab2072a13f49234e4", + "0x8eb102192bd88c1782b7bb42421db4a5cda302102196a664e54ad03c03e19e1e" + ] + } + ], + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "chainId": "0x1", + "from": "0x6bf97afe2d2c790999cded2a8523009eb8a0823f", + "gas": "0x15d818", + "gasPrice": "0x65045d54", + "hash": "0xcd1ae1806eebfe30add1509b02c6f89e85865c7243450742ac86d402507667fd", + "input": "0x13d79a0b0000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000012000000000000000000000000000000000000000000000000000000000000001c000000000000000000000000000000000000000000000000000000000000003e00000000000000000000000000000000000000000000000000000000000000004000000000000000000000000899d774e0f8e14810d628db63e65dfacea682343000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48000000000000000000000000899d774e0f8e14810d628db63e65dfacea6823430000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000a374bf76d4c42c8c8c00000000000000000000000000000000005cd4d66627e732daca892b48abb16400000000000000000000000000000000000000000000000006b06fe010314e3e0681000000000000000000000000000000000000000000000000000000000bebc2000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000003000000000000000000000000366aa56191e89d219ac36b33406fce85da1e7554000000000000000000000000000000000000000000000000000000000bebc2000000000000000000000000000000000000000000000006ac7510475c22e2e3060000000000000000000000000000000000000000000000000000000068a5d4fb98b80e71c53f4b325f7753088b0d8ee55933f28c326277958a47f93bc54a095400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000bebc200000000000000000000000000000000000000000000000000000000000000016000000000000000000000000000000000000000000000000000000000000000414a13957a7c51fc3c1579a62c6160cf8fdf6cbdb186688f8a71c5085ce84e5cfe6cdd79d18f7e34d99a555aaf04a2c7787f9ad58f7bab041c8a94500b5f051a201b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000032000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000002000000000000000000000000060bf78233f48ec42ee3f101b9a05ec78787280060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000001e4760f2a0b000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000020000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb480000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000001388000000000000000000000000000000000000000000000000000000000000000e4d505accf000000000000000000000000366aa56191e89d219ac36b33406fce85da1e7554000000000000000000000000c92e8bdf79f0507f65a392b0ab4667716bfe0110ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000000000000000000000000000000000000000000000720d7562000000000000000000000000000000000000000000000000000000000000001c219463f0255ddbed6266f8998f2c3d706c12eaf9de73c3b9f082b0a583fce90546a423f6fe118493aa5f9f57adfd73963e67bb89e6b20faf95821275b6b1607e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000340000000000000000000000000bbbbbbb520d69a9775e85b458c58c648259fad5f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000002644dcebcba0000000000000000000000000000000000000000000000000000000068a5ce680000000000000000000000009008d19f58aabd9ed0d60971565aa8510560ab4100000000000000000000000067336cec42645f55059eff241cb02ea5cc52ff860000000000000000000000000000000000000000000000002d2e61b16af396e5000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2000000000000000000000000000000000000000000000000000000000bebc20000000000000000000000000000000000000000000000000000aa03ac85e927d00000000000000000000000009008d19f58aabd9ed0d60971565aa8510560ab4100000000000000000000000000000000000000000000000000000000000000006d9aa07971bc4e6731b47ed80776c5740000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000419969dd20c05e5c0ca3d82fed5f912ae3678db7452adc4bffeb8ae098920f9e2a7804cfa5e1e42f85209c494f49914c39258c7668a992f59a01b2fe2d73d445771b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000068b3465833fb72a70ecdf485e0e4c7bd8665fc450000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000e404e45aaf000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2000000000000000000000000899d774e0f8e14810d628db63e65dfacea68234300000000000000000000000000000000000000000000000000000000000027100000000000000000000000009008d19f58aabd9ed0d60971565aa8510560ab4100000000000000000000000000000000000000000000000000aa03ac85e927d00000000000000000000000000000000000000000000006b3d96e8c277e88e06c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ab81f1", + "maxFeePerGas": "0x76630193", + "maxPriorityFeePerGas": "0x41351d80", + "nonce": "0x18733", + "r": "0x6f71e41e8630b35dea48e57d1afd291651a5f15c338133c4976267ac00dd9e56", + "s": "0x45689f732b0a8e6be5bdf5a45db561f33cae7e976f8e8ebdbcbe2e51dc40869c", + "to": "0x9008d19f58aabd9ed0d60971565aa8510560ab41", + "transactionIndex": "0x7", + "type": "0x2", + "v": "0x0", + "value": "0x0", + "yParity": "0x0" + }]"#; + let result: HashesOrTransactionInfos = serde_json::from_str(json).unwrap(); + assert!(matches!(result, HashesOrTransactionInfos::TransactionInfos(_))); + + let json = r#"[{ + "accessList": [], + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "chainId": "0x1", + "from": "0x4838b106fce9647bdf1e7877bf73ce8b0bad5f97", + "gas": "0x565f", + "gasPrice": "0x23cf3fd4", + "hash": "0x2c522d01183e9ed70caaf75c940ba9908d573cfc9996b3e7adc90313798279c8", + "input": "0x", + "maxFeePerGas": "0x23cf3fd4", + "maxPriorityFeePerGas": "0x0", + "nonce": "0x2c5ce1", + "r": "0x4a5703e4d8daf045f021cb32897a25b17d61b9ab629a59f0731ef4cce63f93d6", + "s": "0x711812237c1fed6aaf08e9f47fc47e547fdaceba9ab7507e62af29a945354fb6", + "to": "0x388c818ca8b9251b393131c08a736a67ccb19297", + "transactionIndex": "0x7a", + "type": "0x2", + "v": "0x0", + "value": "0x12bf92aae0c2e70", + "yParity": "0x0" + }] + "#; + let result: HashesOrTransactionInfos = serde_json::from_str(json).unwrap(); + assert!(matches!(result, HashesOrTransactionInfos::TransactionInfos(_))); + } +} diff --git a/substrate/frame/revive/src/evm/api/type_id.rs b/substrate/frame/revive/src/evm/api/type_id.rs index 843eab280fb9c..b055cb59dbe1b 100644 --- a/substrate/frame/revive/src/evm/api/type_id.rs +++ b/substrate/frame/revive/src/evm/api/type_id.rs @@ -118,6 +118,7 @@ transaction_type!(TypeLegacy, 0); transaction_type!(TypeEip2930, 1); transaction_type!(TypeEip1559, 2); transaction_type!(TypeEip4844, 3); +transaction_type!(TypeEip7702, 4); #[test] fn transaction_type() { From c23e01fd892bed0c43a92900a19934cd4a1e82c1 Mon Sep 17 00:00:00 2001 From: Alexandru Vasile Date: Thu, 21 Aug 2025 16:58:34 +0000 Subject: [PATCH 02/67] revive: Implement signature type Signed-off-by: Alexandru Vasile --- substrate/frame/revive/src/evm/api/signature.rs | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/substrate/frame/revive/src/evm/api/signature.rs b/substrate/frame/revive/src/evm/api/signature.rs index de4ac428ffe4e..a210312dc54c7 100644 --- a/substrate/frame/revive/src/evm/api/signature.rs +++ b/substrate/frame/revive/src/evm/api/signature.rs @@ -48,6 +48,8 @@ impl TransactionUnsigned { Self::Transaction1559Unsigned(signed.transaction_1559_unsigned), TransactionSigned::Transaction2930Signed(signed) => Self::Transaction2930Unsigned(signed.transaction_2930_unsigned), + TransactionSigned::Transaction7702Signed(signed) => + Self::Transaction7702Unsigned(signed.transaction_7702_unsigned), } } @@ -67,6 +69,15 @@ impl TransactionUnsigned { y_parity: U256::from(recovery_id), } .into(), + TransactionUnsigned::Transaction7702Unsigned(transaction_7702_unsigned) => + Transaction7702Signed { + transaction_7702_unsigned, + r, + s, + v: None, + y_parity: U256::from(recovery_id), + } + .into(), TransactionUnsigned::Transaction1559Unsigned(transaction_1559_unsigned) => Transaction1559Signed { transaction_1559_unsigned, @@ -111,6 +122,7 @@ impl TransactionSigned { Transaction4844Signed(tx) => (tx.r, tx.s, tx.y_parity.try_into().map_err(|_| ())?), Transaction1559Signed(tx) => (tx.r, tx.s, tx.y_parity.try_into().map_err(|_| ())?), Transaction2930Signed(tx) => (tx.r, tx.s, tx.y_parity.try_into().map_err(|_| ())?), + Transaction7702Signed(tx) => (tx.r, tx.s, tx.y_parity.try_into().map_err(|_| ())?), }; let mut sig = [0u8; 65]; r.write_as_big_endian(sig[0..32].as_mut()); @@ -144,6 +156,11 @@ impl TransactionSigned { s.append(&tx.r#type.value()); s.append(tx); }, + Transaction7702Signed(tx) => { + let tx = &tx.transaction_7702_unsigned; + s.append(&tx.r#type.value()); + s.append(tx); + }, } let bytes = s.out().to_vec(); let signature = self.raw_signature()?; From 242020674207984af58cf139527393267d8dadab Mon Sep 17 00:00:00 2001 From: Alexandru Vasile Date: Thu, 21 Aug 2025 16:58:48 +0000 Subject: [PATCH 03/67] revive: Implement Encode and Decode Signed-off-by: Alexandru Vasile --- .../frame/revive/src/evm/api/rlp_codec.rs | 20 ++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/substrate/frame/revive/src/evm/api/rlp_codec.rs b/substrate/frame/revive/src/evm/api/rlp_codec.rs index 4a0230745ad89..67cdf9045ce8c 100644 --- a/substrate/frame/revive/src/evm/api/rlp_codec.rs +++ b/substrate/frame/revive/src/evm/api/rlp_codec.rs @@ -445,10 +445,28 @@ impl Decodable for Transaction4844Signed { } } +// See https://eips.ethereum.org/EIPS/eip-7702 +impl Encodable for Transaction7702Unsigned { + fn rlp_append(&self, s: &mut rlp::RlpStream) { + s.begin_list(10); + s.append(&self.chain_id); + s.append(&self.nonce); + s.append(&self.max_priority_fee_per_gas); + s.append(&self.max_fee_per_gas); + s.append(&self.gas_price); + s.append(&self.gas); + s.append(&self.to); + s.append(&self.value); + s.append(&self.input.0); + s.append_list(&self.access_list); + } +} + +// See https://eips.ethereum.org/EIPS/eip-7702 impl Encodable for Transaction7702Signed { fn rlp_append(&self, s: &mut rlp::RlpStream) { let tx = &self.transaction_7702_unsigned; - s.begin_list(10); + s.begin_list(14); s.append(&tx.chain_id); s.append(&tx.nonce); s.append(&tx.max_priority_fee_per_gas); From efffc740c5408c6ab0bc6ad6181905f0dc06c4a7 Mon Sep 17 00:00:00 2001 From: Alexandru Vasile Date: Thu, 21 Aug 2025 16:59:05 +0000 Subject: [PATCH 04/67] revive: Fixes and testing cases Signed-off-by: Alexandru Vasile --- .../frame/revive/src/evm/api/rpc_types.rs | 13 ++ .../frame/revive/src/evm/api/rpc_types_gen.rs | 149 ++++++++++++++++-- 2 files changed, 147 insertions(+), 15 deletions(-) diff --git a/substrate/frame/revive/src/evm/api/rpc_types.rs b/substrate/frame/revive/src/evm/api/rpc_types.rs index 3f97b5e32b817..0d91c059809d5 100644 --- a/substrate/frame/revive/src/evm/api/rpc_types.rs +++ b/substrate/frame/revive/src/evm/api/rpc_types.rs @@ -282,6 +282,19 @@ impl GenericTransaction { access_list: Some(tx.access_list), ..Default::default() }, + Transaction7702Unsigned(tx) => GenericTransaction { + from, + r#type: Some(tx.r#type.as_byte()), + chain_id: Some(tx.chain_id), + input: tx.input.into(), + nonce: Some(tx.nonce), + value: Some(tx.value), + to: Some(tx.to), + gas: Some(tx.gas), + gas_price: Some(tx.gas_price), + access_list: Some(tx.access_list), + ..Default::default() + }, } } diff --git a/substrate/frame/revive/src/evm/api/rpc_types_gen.rs b/substrate/frame/revive/src/evm/api/rpc_types_gen.rs index 3551ae95c3f8b..5010519c0c103 100644 --- a/substrate/frame/revive/src/evm/api/rpc_types_gen.rs +++ b/substrate/frame/revive/src/evm/api/rpc_types_gen.rs @@ -17,7 +17,7 @@ //! Generated JSON-RPC types. #![allow(missing_docs)] -use super::{byte::*, TypeEip1559, TypeEip2930, TypeEip4844, TypeLegacy}; +use super::{byte::*, TypeEip1559, TypeEip2930, TypeEip4844, TypeEip7702, TypeLegacy}; use alloc::vec::Vec; use codec::{Decode, DecodeWithMemTracking, Encode}; use derive_more::{From, TryInto}; @@ -700,7 +700,17 @@ pub struct Transaction4844Unsigned { /// EIP-7702 transaction. #[derive( - Debug, Default, Clone, Serialize, Deserialize, Eq, PartialEq, TypeInfo, Encode, Decode, + Debug, + Default, + Clone, + Serialize, + Deserialize, + Eq, + PartialEq, + TypeInfo, + Encode, + Decode, + DecodeWithMemTracking, )] pub struct Transaction7702Unsigned { /// chainId @@ -723,6 +733,10 @@ pub struct Transaction7702Unsigned { #[serde(rename = "maxPriorityFeePerGas")] pub max_priority_fee_per_gas: U256, /// to address + /// + /// # Note + /// + /// Extracted from eip-7702: `Note, this implies a null destination is not valid.` pub to: Address, /// value pub value: U256, @@ -736,7 +750,7 @@ pub struct Transaction7702Unsigned { #[serde(rename = "authorizationList")] pub auth_list: Vec, /// type - pub r#type: TypeEip2930, + pub r#type: TypeEip7702, } /// Legacy transaction. @@ -861,7 +875,17 @@ pub struct AccessListEntry { /// Set code authorization entry #[derive( - Debug, Default, Clone, Encode, Decode, TypeInfo, Serialize, Deserialize, Eq, PartialEq, + Debug, + Default, + Clone, + Encode, + Decode, + TypeInfo, + Serialize, + Deserialize, + Eq, + PartialEq, + DecodeWithMemTracking, )] pub struct SetCodeAuthorizationEntry { /// chainId @@ -1015,7 +1039,17 @@ pub struct TransactionLegacySigned { /// Signed 7702 Transaction #[derive( - Debug, Default, Clone, Serialize, Deserialize, Eq, PartialEq, TypeInfo, Encode, Decode, + Debug, + Default, + Clone, + Serialize, + Deserialize, + Eq, + PartialEq, + TypeInfo, + Encode, + Decode, + DecodeWithMemTracking, )] pub struct Transaction7702Signed { #[serde(flatten)] @@ -1082,28 +1116,27 @@ mod test { // Real block representation. let json = r#"[{ - "accessList": [], "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", "blockNumber": "0x161bd0f", - "chainId": "0x1", "from": "0x693ca5c6852a7d212dabc98b28e15257465c11f3", "gas": "0x70bdb", "gasPrice": "0x23cf3fd4", + "maxPriorityFeePerGas": "0x0", + "maxFeePerGas": "0x47ca802f", "hash": "0xf6d8b07ddcf9a9d44c99c3665fd8c78f0ccd32506350ea5a9be1a68ba08bfd1f", "input": "0x09c5eabe000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000002a90000cca0b86991c6218b36c1d19d4a2e9eb0ce3606eb48000000000000000000000000000000020000000000000000000000035c9618f600000000000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc20000000000000000000000002374fed200000000000000000001528fd550bc9a0000000000000000351e55bea6d51900dac17f958d2ee523a2206206994597c13d831ec7000000000000000000000000000000000000000000000000000000005c0c965e0000000000000000000000000000000000004c00000001000000000000000000000000000000000000002e24cd1d61a63f43658ed73b6ddeba00010002000100000000000000000000000000000000000000000000000039d622818daae62900006602000000000000000000002ff9e9686fa6ac00000000000000000000000000007f88ca000000000000000004caaa5ba8029c920300010000000000000000052319c661ddb06600000000000000000001528fd550bc9a0000000000000000005049606b67676100011c0c00000000000000002ff9e9686fa6ac000000000000000000000000035c16902c0000000000000000000000000000000200000000000000000000000000000002000073d53553ee552c1f2a9722e6407d43e41e19593f1cbc3d63300bfc6e48709f5b5ed98f228c70104e8c5d570b5608b47dca95ce6e371636965b6fdcab3613b6b65f061a44b7132011bb97a768bd238eacb62d7109920b000000000000000005246c56372e6d000000000000000000000000005c0c965e0000000000000000000000002374fed20000000000000000000000002374fed200011cc19621f6edbb9c02b95055b9f52eba0e2cb954c259f42aeca488551ea82b72f2504bbd310eb7145435e258751ab6854ab08b1630b89d6621dc1398c5d0c43b480000000000000000000000000000000000000000000000000000", - "maxFeePerGas": "0x47ca802f", - "maxPriorityFeePerGas": "0x0", "nonce": "0x40c6", - "r": "0xb3e71bd95d73e965495b17647f5faaf058e13af7dd21f2af24eac16f7e9d06a1", - "s": "0x58775b0c15075fb7f007b88e88605ae5daec1ffbac2771076e081c8c2b005c20", "to": "0x0000000aa232009084bd71a5797d089aa4edfad4", "transactionIndex": "0x0", + "value": "0x0", "type": "0x2", + "accessList": [], + "chainId": "0x1", "v": "0x1", - "value": "0x0", - "yParity": "0x1" - }] - "#; + "yParity": "0x1", + "r": "0xb3e71bd95d73e965495b17647f5faaf058e13af7dd21f2af24eac16f7e9d06a1", + "s": "0x58775b0c15075fb7f007b88e88605ae5daec1ffbac2771076e081c8c2b005c20" + }]"#; let result: HashesOrTransactionInfos = serde_json::from_str(json).unwrap(); assert!(matches!(result, HashesOrTransactionInfos::TransactionInfos(_))); @@ -1254,4 +1287,90 @@ mod test { let result: HashesOrTransactionInfos = serde_json::from_str(json).unwrap(); assert!(matches!(result, HashesOrTransactionInfos::TransactionInfos(_))); } + + #[test] + fn test_block_decode() { + let json = r#"{ + "baseFeePerGas": "0x23cf3fd4", + "blobGasUsed": "0x0", + "difficulty": "0x0", + "excessBlobGas": "0x80000", + "extraData": "0x546974616e2028746974616e6275696c6465722e78797a29", + "gasLimit": "0x2aea4ea", + "gasUsed": "0xe36e2f", + "hash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logsBloom": "0xb56c514421c05ba024436428e2487b83134983e9c650686421bd10588512e0a9a55d51e8e84c868446517ed5e90609dd43aad1edcc1462b8e8f15763b3ff6e62a506d3d910d0aae829786fac994a6de34860263be47eb8300e91dd2cc3110a22ba0d60008e6a0362c5a3ffd5aa18acc8c22b6fe02c54273b12a841bc958c9ae12378bc0e5881c2d840ff677f8038243216e5c105e58819bc0cbb8c56abb7e490cf919ceb85702e5d54dece9332a00c9e6ade9cb47d42440201ecd7704088236b39037c9ff189286e3e5d6657aa389c2d482e337af5cfc45b0d25ad0e300c2b6bf599bc2007008830226612a4e7e7cae4e57c740205a809dc280825165b98559c", + "miner": "0x4838b106fce9647bdf1e7877bf73ce8b0bad5f97", + "mixHash": "0x11b02e97eaa48bc83cbb6f9478f32eaf7e8b67fead4edeef945822612f1854f6", + "nonce": "0x0000000000000000", + "number": "0x161bd0f", + "parentBeaconBlockRoot": "0xd8266eb7bb40e4e5e3beb9caed7ccaa448ce55203a03705c87860deedcf7236d", + "parentHash": "0x7c9625cc198af5cf677a15cdc38da3cf64d57b9729de5bd1c96b3c556a84aa7d", + "receiptsRoot": "0x758614638725ede86a2f4c8339eb79b84ae346915319dc286643c9324e34f28a", + "requestsHash": "0xd9267a5ab4782c4e0bdc5fcd2fefb53c91f92f91b6059c8f13343a0691ba77d1", + "sha3Uncles": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347", + "size": "0x14068", + "stateRoot": "0x7ed9726e3172886af5301968c2ddb7c38f8adf99c99ec10fdfaab66c610854bb", + "timestamp": "0x68a5ce5b", + "transactions": [ + { + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "from": "0x693ca5c6852a7d212dabc98b28e15257465c11f3", + "gas": "0x70bdb", + "gasPrice": "0x23cf3fd4", + "maxPriorityFeePerGas": "0x0", + "maxFeePerGas": "0x47ca802f", + "hash": "0xf6d8b07ddcf9a9d44c99c3665fd8c78f0ccd32506350ea5a9be1a68ba08bfd1f", + "input": "0x09c5eabe000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000002a90000cca0b86991c6218b36c1d19d4a2e9eb0ce3606eb48000000000000000000000000000000020000000000000000000000035c9618f600000000000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc20000000000000000000000002374fed200000000000000000001528fd550bc9a0000000000000000351e55bea6d51900dac17f958d2ee523a2206206994597c13d831ec7000000000000000000000000000000000000000000000000000000005c0c965e0000000000000000000000000000000000004c00000001000000000000000000000000000000000000002e24cd1d61a63f43658ed73b6ddeba00010002000100000000000000000000000000000000000000000000000039d622818daae62900006602000000000000000000002ff9e9686fa6ac00000000000000000000000000007f88ca000000000000000004caaa5ba8029c920300010000000000000000052319c661ddb06600000000000000000001528fd550bc9a0000000000000000005049606b67676100011c0c00000000000000002ff9e9686fa6ac000000000000000000000000035c16902c0000000000000000000000000000000200000000000000000000000000000002000073d53553ee552c1f2a9722e6407d43e41e19593f1cbc3d63300bfc6e48709f5b5ed98f228c70104e8c5d570b5608b47dca95ce6e371636965b6fdcab3613b6b65f061a44b7132011bb97a768bd238eacb62d7109920b000000000000000005246c56372e6d000000000000000000000000005c0c965e0000000000000000000000002374fed20000000000000000000000002374fed200011cc19621f6edbb9c02b95055b9f52eba0e2cb954c259f42aeca488551ea82b72f2504bbd310eb7145435e258751ab6854ab08b1630b89d6621dc1398c5d0c43b480000000000000000000000000000000000000000000000000000", + "nonce": "0x40c6", + "to": "0x0000000aa232009084bd71a5797d089aa4edfad4", + "transactionIndex": "0x0", + "value": "0x0", + "type": "0x2", + "accessList": [], + "chainId": "0x1", + "v": "0x1", + "yParity": "0x1", + "r": "0xb3e71bd95d73e965495b17647f5faaf058e13af7dd21f2af24eac16f7e9d06a1", + "s": "0x58775b0c15075fb7f007b88e88605ae5daec1ffbac2771076e081c8c2b005c20" + }, + { + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "from": "0x4791eb2224d272655e8d5da171bb07dd5a805ff6", + "hash": "0xda8bc5dc5617758c6af0681d71642f68ce679bb92df4d8cf48493f0cfad14e20", + "transactionIndex": "0x19", + + "gas": "0x186a0", + "gasPrice": "0x6a5efc76", + "maxPriorityFeePerGas": "0x6a5efc76", + "maxFeePerGas": "0x6a5efc76", + + "input": "0x2c7bddf4", + "nonce": "0x6233", + "to": "0x62b53c45305d29bbe4b1bfa49dd78766b2f1e624", + + "value": "0x0", + "type": "0x4", + "accessList": [], + "chainId": "0x1", + "authorizationList": [ + + ], + "v": "0x1", + "yParity": "0x1", + "r": "0x3b863c04d39f70e499ffb176376128a57481727116027a92a364b6e1668d13a7", + "s": "0x39b13f0597c509de8260c7808057e64126e7d0715044dda908d1f513e1ed79ad" + } + ], + "transactionsRoot": "0xca2e7e6ebe1b08030fe5b9efabee82b95e62f07cff5a4298354002c46b41a216", + "uncles": [], + "withdrawals": [ + ], + "withdrawalsRoot": "0x7a3ad42fdb774c0e662597141f52a81210ffec9ce0db9dfcd841f747b0909010" + }"#; + + let _result: Block = serde_json::from_str(json).unwrap(); + } } From 2d02c9622e45b9af3aa0a77bffeb117192025c9c Mon Sep 17 00:00:00 2001 From: Alexandru Vasile Date: Thu, 21 Aug 2025 17:23:43 +0000 Subject: [PATCH 05/67] revive/block: Ensure ETH block hash is identical Signed-off-by: Alexandru Vasile --- substrate/frame/revive/src/evm/block_hash.rs | 37 ++++++++++++++++++-- 1 file changed, 35 insertions(+), 2 deletions(-) diff --git a/substrate/frame/revive/src/evm/block_hash.rs b/substrate/frame/revive/src/evm/block_hash.rs index 834f0b62eda88..ebd8c57ebce07 100644 --- a/substrate/frame/revive/src/evm/block_hash.rs +++ b/substrate/frame/revive/src/evm/block_hash.rs @@ -223,7 +223,7 @@ impl Block { let gas_limit = self.gas_limit.try_into().unwrap_or(u64::MAX); let alloy_header = alloy_consensus::Header { - state_root: self.transactions_root.0.into(), + state_root: self.state_root.0.into(), transactions_root: self.transactions_root.0.into(), receipts_root: self.receipts_root.0.into(), @@ -235,9 +235,42 @@ impl Block { gas_used: self.gas_used.as_u64(), timestamp: self.timestamp.as_u64(), - ..alloy_consensus::Header::default() + ommers_hash: self.sha_3_uncles.0.into(), + extra_data: self.extra_data.clone().0.into(), + mix_hash: self.mix_hash.0.into(), + nonce: self.nonce.0.into(), + base_fee_per_gas: self.base_fee_per_gas.map(|gas| gas.as_u64()), + withdrawals_root: self.withdrawals_root.map(|root| root.0.into()), + blob_gas_used: self.blob_gas_used.map(|gas| gas.as_u64()), + excess_blob_gas: self.excess_blob_gas.map(|gas| gas.as_u64()), + parent_beacon_block_root: self.parent_beacon_block_root.map(|root| root.0.into()), + requests_hash: self.requests_hash.map(|hash| hash.0.into()), + + difficulty: Default::default(), }; alloy_header.hash_slow().0.into() } } + +#[cfg(test)] +mod test { + use super::*; + use crate::evm::{Block, ReceiptInfo}; + + #[test] + fn ensure_identical_hashes() { + // curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getBlockByNumber","params":["0x161bd0f", true],"id":1}' -H "Content-Type: application/json" https://ethereum-rpc.publicnode.com | jq .result + const BLOCK_PATH: &str = "./test-assets/eth_block.json"; + // curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getBlockReceipts","params":["0x161bd0f"],"id":1}' -H "Content-Type: application/json" https://ethereum-rpc.publicnode.com | jq .result + const BLOCK_RECEIPTS: &str = "./test-assets/eth_receipts.json"; + + let json = std::fs::read_to_string(BLOCK_PATH).unwrap(); + let block: Block = serde_json::from_str(&json).unwrap(); + + let json = std::fs::read_to_string(BLOCK_RECEIPTS).unwrap(); + let receipts: Vec = serde_json::from_str(&json).unwrap(); + + assert_eq!(block.header_hash(), receipts[0].block_hash); + } +} From fa02002f1218649059e49957b63de570006c39a0 Mon Sep 17 00:00:00 2001 From: Alexandru Vasile Date: Thu, 21 Aug 2025 17:24:37 +0000 Subject: [PATCH 06/67] revive/tests: Add tests assets with receipt and blocks Signed-off-by: Alexandru Vasile --- .../frame/revive/test-assets/eth_block.json | 3387 +++++++ .../revive/test-assets/eth_receipts.json | 7779 +++++++++++++++++ 2 files changed, 11166 insertions(+) create mode 100644 substrate/frame/revive/test-assets/eth_block.json create mode 100644 substrate/frame/revive/test-assets/eth_receipts.json diff --git a/substrate/frame/revive/test-assets/eth_block.json b/substrate/frame/revive/test-assets/eth_block.json new file mode 100644 index 0000000000000..9cbd0b32f901f --- /dev/null +++ b/substrate/frame/revive/test-assets/eth_block.json @@ -0,0 +1,3387 @@ +{ + "baseFeePerGas": "0x23cf3fd4", + "blobGasUsed": "0x0", + "difficulty": "0x0", + "excessBlobGas": "0x80000", + "extraData": "0x546974616e2028746974616e6275696c6465722e78797a29", + "gasLimit": "0x2aea4ea", + "gasUsed": "0xe36e2f", + "hash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logsBloom": "0xb56c514421c05ba024436428e2487b83134983e9c650686421bd10588512e0a9a55d51e8e84c868446517ed5e90609dd43aad1edcc1462b8e8f15763b3ff6e62a506d3d910d0aae829786fac994a6de34860263be47eb8300e91dd2cc3110a22ba0d60008e6a0362c5a3ffd5aa18acc8c22b6fe02c54273b12a841bc958c9ae12378bc0e5881c2d840ff677f8038243216e5c105e58819bc0cbb8c56abb7e490cf919ceb85702e5d54dece9332a00c9e6ade9cb47d42440201ecd7704088236b39037c9ff189286e3e5d6657aa389c2d482e337af5cfc45b0d25ad0e300c2b6bf599bc2007008830226612a4e7e7cae4e57c740205a809dc280825165b98559c", + "miner": "0x4838b106fce9647bdf1e7877bf73ce8b0bad5f97", + "mixHash": "0x11b02e97eaa48bc83cbb6f9478f32eaf7e8b67fead4edeef945822612f1854f6", + "nonce": "0x0000000000000000", + "number": "0x161bd0f", + "parentBeaconBlockRoot": "0xd8266eb7bb40e4e5e3beb9caed7ccaa448ce55203a03705c87860deedcf7236d", + "parentHash": "0x7c9625cc198af5cf677a15cdc38da3cf64d57b9729de5bd1c96b3c556a84aa7d", + "receiptsRoot": "0x758614638725ede86a2f4c8339eb79b84ae346915319dc286643c9324e34f28a", + "requestsHash": "0xd9267a5ab4782c4e0bdc5fcd2fefb53c91f92f91b6059c8f13343a0691ba77d1", + "sha3Uncles": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347", + "size": "0x14068", + "stateRoot": "0x7ed9726e3172886af5301968c2ddb7c38f8adf99c99ec10fdfaab66c610854bb", + "timestamp": "0x68a5ce5b", + "transactions": [ + { + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "from": "0x693ca5c6852a7d212dabc98b28e15257465c11f3", + "gas": "0x70bdb", + "gasPrice": "0x23cf3fd4", + "maxPriorityFeePerGas": "0x0", + "maxFeePerGas": "0x47ca802f", + "hash": "0xf6d8b07ddcf9a9d44c99c3665fd8c78f0ccd32506350ea5a9be1a68ba08bfd1f", + "input": "0x09c5eabe000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000002a90000cca0b86991c6218b36c1d19d4a2e9eb0ce3606eb48000000000000000000000000000000020000000000000000000000035c9618f600000000000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc20000000000000000000000002374fed200000000000000000001528fd550bc9a0000000000000000351e55bea6d51900dac17f958d2ee523a2206206994597c13d831ec7000000000000000000000000000000000000000000000000000000005c0c965e0000000000000000000000000000000000004c00000001000000000000000000000000000000000000002e24cd1d61a63f43658ed73b6ddeba00010002000100000000000000000000000000000000000000000000000039d622818daae62900006602000000000000000000002ff9e9686fa6ac00000000000000000000000000007f88ca000000000000000004caaa5ba8029c920300010000000000000000052319c661ddb06600000000000000000001528fd550bc9a0000000000000000005049606b67676100011c0c00000000000000002ff9e9686fa6ac000000000000000000000000035c16902c0000000000000000000000000000000200000000000000000000000000000002000073d53553ee552c1f2a9722e6407d43e41e19593f1cbc3d63300bfc6e48709f5b5ed98f228c70104e8c5d570b5608b47dca95ce6e371636965b6fdcab3613b6b65f061a44b7132011bb97a768bd238eacb62d7109920b000000000000000005246c56372e6d000000000000000000000000005c0c965e0000000000000000000000002374fed20000000000000000000000002374fed200011cc19621f6edbb9c02b95055b9f52eba0e2cb954c259f42aeca488551ea82b72f2504bbd310eb7145435e258751ab6854ab08b1630b89d6621dc1398c5d0c43b480000000000000000000000000000000000000000000000000000", + "nonce": "0x40c6", + "to": "0x0000000aa232009084bd71a5797d089aa4edfad4", + "transactionIndex": "0x0", + "value": "0x0", + "type": "0x2", + "accessList": [], + "chainId": "0x1", + "v": "0x1", + "yParity": "0x1", + "r": "0xb3e71bd95d73e965495b17647f5faaf058e13af7dd21f2af24eac16f7e9d06a1", + "s": "0x58775b0c15075fb7f007b88e88605ae5daec1ffbac2771076e081c8c2b005c20" + }, + { + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "from": "0xc445a471debbc8ef54dbfd90af406b6a682313e3", + "gas": "0x62e08", + "gasPrice": "0x23cf3fd4", + "maxPriorityFeePerGas": "0x0", + "maxFeePerGas": "0x23cf3fd4", + "hash": "0xa4d83b0f03540b4659285e886c75e06cb1dffbda15bc9042db68c63ac948593d", + "input": "0x078fc43000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000de0b6b3a764000000000000000000000000000000000000000000000000000000000000000001f4000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc20000000000000000000000000000000000000000000000000000004d0563b78d0000000000000000000000000000000000000000000000044cca9748c816200e0000000000000000000000000000000000000000000000000000000010cb11ad0000000000000000000000000000000000000000000000000ede120b0b0b800000000000000000000000000000000000000000000000000005f3f3c10cd7400000000000000000000000000000000000000000000000000000000000000baa240000000000000000000000000000000000003c7ce03ee690113f579b1bcb93c1000000000000000000000000000000000000000000c6467309887ae60c8000004342b77fe3417bcb09d0a4383301b0dc733c755b00020000000000000000000200000000000000000000000000000000000000000000000000000000000001c000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000018000000000000000000000000000000000000000000000000000063cca0fafb5280000000000000000000000000000000000000000000000000000000068a5ce5d00000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000c445a471debbc8ef54dbfd90af406b6a682313e3000000000000000000000000000000000000000000000000000000000000000000000000000000e214d604044df5ba5f000000000000000457cc9deaca1658b10000000000006f9e4169d6f2c9919000000000000000001cc8f062718bfb1dcc0000000000000000000000000000000000000000000e8f80a0fffc209f777a9600000000000000004563918244f400000000000000000000006a94d74f43000000000000000000000000000068a5ce5b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004134c551c8d6c4f84a61a779134ed200c4d154e9904ad7b5a78c4d917f5b2b34a506596488971df877891a98c370f1a4a1c3aa42f05088d48253ac7be9e9840d7a1c00000000000000000000000000000000000000000000000000000000000000", + "nonce": "0x288c", + "to": "0xc90d7c41974397cb8b260238ec9ecb6bbd965259", + "transactionIndex": "0x1", + "value": "0x0", + "type": "0x2", + "accessList": [], + "chainId": "0x1", + "v": "0x1", + "yParity": "0x1", + "r": "0x7900ae1a7b6c21f147f6ad27d8b2822a30803d6380f55d0eb33ed36e1dc35d10", + "s": "0x4401c414cb2291df96a75a433f26bf05abed976487b43a704d85572438877741" + }, + { + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "from": "0x8361a4786bd2081acbf4a0802aab618d6aa1c674", + "gas": "0x5b8d8", + "gasPrice": "0x23cf3fd4", + "maxPriorityFeePerGas": "0x0", + "maxFeePerGas": "0x23cf3fd4", + "hash": "0xbd48baa01338f5d923f6f2f3e38958854e3c40f1c02a6636100a85072db66168", + "input": "0x078fc43000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000de0b6b3a76400000000000000000000000000000000000000000000000000000000000000000064000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec7000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc20000000000000000000000000000000000000000000000000000000f115584f7000000000000000000000000000000000000000000000000d763281af8acbffc00000000000000000000000000000000000000000000000000000000034e01a70000000000000000000000000000000000000000000000000ede120b0b0b800000000000000000000000000000000000000000000000000005f3f3c10cd7400000000000000000000000000000000000000000000000000000000000000a834d000000000000000000000000000000000000000000043b5c9e50ece56a7cc95e000000000000000000000000000000000000000000c65ba00c505c3103000000315a892a4d02c5c1169d5f0e4f7cb4130cc0d13800020000000000000000000900000000000000000000000000000000000000000000000000000000000001c000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000018000000000000000000000000000000000000000000000000000063cca0fafb52a0000000000000000000000000000000000000000000000000000000068a5ce5d00000000000000000000000000000000000000000000000000000000000000e00000000000000000000000008361a4786bd2081acbf4a0802aab618d6aa1c674000000000000000000000000000000000000000000000000000000000000000000000000000000e20a8903d9fa15ca380000000000000000d98a8c58ae5c8eb4000000000000aaac7ccf4f95012fb000000000000000001518a6cb136ff2ec07000000000000000000000000000000000000000000131ba2ee23a8d1d090000000000000000000004563918244f400000000000000000000006a94d74f43000000000000000000000000000068a5ce5b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000041ca4402002b4df0c349b539ad62d7b8eb2c396e7a2a2a4fce9a253a9485c781b156ac977f9ba4a18f69e5a54261bf94f16ecb245b164a102fd2078985497b51d91c00000000000000000000000000000000000000000000000000000000000000", + "nonce": "0xda3", + "to": "0xc90d7c41974397cb8b260238ec9ecb6bbd965259", + "transactionIndex": "0x2", + "value": "0x0", + "type": "0x2", + "accessList": [], + "chainId": "0x1", + "v": "0x0", + "yParity": "0x0", + "r": "0xac496ed50541793c57be842cb4ec3ef4b934bc082c296da66f81925129a89509", + "s": "0x53b96d8ad942ab7743890b25d3e7af790a28d6bd116cfaf2bd2135c659bae2e4" + }, + { + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "from": "0x6b063481f8216b5624ec496dd72376bef00faffd", + "gas": "0xc3620", + "gasPrice": "0x2d2a4df1", + "maxPriorityFeePerGas": "0x95b0e1d", + "maxFeePerGas": "0x97f474e8", + "hash": "0x634164bee85be6e15815df5f3d000f1a5ab87106bd7a73c77602db8a12d916c6", + "input": "0x13d79a0b0000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000012000000000000000000000000000000000000000000000000000000000000001c000000000000000000000000000000000000000000000000000000000000003e0000000000000000000000000000000000000000000000000000000000000000400000000000000000000000084ca8bc7997272c7cfb4d0cd3d55cd942b3c9419000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4800000000000000000000000084ca8bc7997272c7cfb4d0cd3d55cd942b3c9419000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb480000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000097d5014cb66f000000000000000000000000000000000000000000c570539d7c13b90257976a000000000000000000000000000000000000000000000000000000001ae32af80000000000000000000000000000000000000000000000230ec810de9c63d000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000300000000000000000000000089b537d4e0de035303dc1bdae18394f7a6c15c360000000000000000000000000000000000000000000000230ec810de9c63d000000000000000000000000000000000000000000000000000000000001ac76e250000000000000000000000000000000000000000000000000000000068a5cea0506ca878e4bf5525292d5c63dfb3f96c2d1e319ae14bc546dc75b9d61da6b4f7000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000230ec810de9c63d000000000000000000000000000000000000000000000000000000000000000016000000000000000000000000000000000000000000000000000000000000000416b237d30af3fa86383cdb796eb81403acfbcd2b5b16c085c6aec00549e91d60a08d87f822a06b411f335be0e4a16bde6e630a2697e7cf553e4314d09257287031c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000004c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000002db07a3a657b6e16999b67d48500486a1cb0d64900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000036447a4a98900000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000203165e06d852288d50b640d10e4f50000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000001400000000000000000000000000000000000000000000000000000000000000220000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000de0b6b3a7640000000000000000000000000000000000000000000000000000000000000000004104000000000000000000000000b60b34d830f26c5a11c47ddb1e0a1f31d90a78b10000000000000000000000000000000000000000000000134f6e6f97fa338eb80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000c601d4ad4d401000000000000000000000000000000000000000000000000000000000000000000000004104000000000000000000000000a14afc841a2742cbd52587b705f00f322309580e00000000000000000000000000000000000000000000000fa7469b560e4519070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000c601d4ad4d4010000000000000000000000000000000000000000000000000000000000000000000000041050000000000000000000000007858e59e0c01ea06df3af3d20ac7b0003275d4bf000000000000000000000000000000000000000000000000000000000edb15d4000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ab81f0", + "nonce": "0x1585", + "to": "0xa9d635ef85bc37eb9ff9d6165481ea230ed32392", + "transactionIndex": "0x3", + "value": "0x0", + "type": "0x2", + "accessList": [ + { + "address": "0x2c4c28ddbdac9c5e7055b4c863b72ea0149d8afe", + "storageKeys": [ + "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc", + "0xa214b15162c78c6464e5ab06ab626d767ffac37a0858a2cbd1ab2e078f4bfd88" + ] + }, + { + "address": "0x2db07a3a657b6e16999b67d48500486a1cb0d649", + "storageKeys": [ + "0xf297cbbe3a3ff7264e184be5e03b61da7ac48af65d6ce5972c71bf59570c7406" + ] + }, + { + "address": "0x43506849d7c04f9138d1a2050bbf3a0c054402dd", + "storageKeys": [] + }, + { + "address": "0x7858e59e0c01ea06df3af3d20ac7b0003275d4bf", + "storageKeys": [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000002", + "0x0000000000000000000000000000000000000000000000000000000000000004", + "0x54cdd369e4e8a8515e52ca72ec816c2101831ad1f18bf44102ed171459c9b4f8" + ] + }, + { + "address": "0x84ca8bc7997272c7cfb4d0cd3d55cd942b3c9419", + "storageKeys": [ + "0x3756065a1737877f5b2bc32c8c3f70b69057844ed80018b7b266bffc54ef98fd", + "0x50b15c2f32347ba182685596e2bd684e73b17d41f907c1d56bd125291ba3009f", + "0x618059526d7d1bb5608c8e3a0740d1f656fa8a764ecca600a8e0e3e0c313ce66", + "0x8de37585c313a58117507b9d5d325d1ed41e8e98deeee1ae5852b930e365e5b0", + "0x982ddcb64cfb6b923c9d3f3239160c877d57f1425dd7a125c7ebd1de727ae229", + "0xc877f7c350d0ae49415387c376c008036a6d8a86d61bcbab69c1f22659674f4c" + ] + }, + { + "address": "0x9008d19f58aabd9ed0d60971565aa8510560ab41", + "storageKeys": [ + "0x0000000000000000000000000000000000000000000000000000000000000001", + "0x406a6663cff73aaf362dd9ff433725f76c50718c3325dccceca1eb4b4f496798" + ] + }, + { + "address": "0x9e7ae8bdba9aa346739792d219a808884996db67", + "storageKeys": [] + }, + { + "address": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48", + "storageKeys": [ + "0x0000000000000000000000000000000000000000000000000000000000000001", + "0x10d6a54a4754c8869d6886b5f5d7fbfa5b4522237ea5c60d11bc4e7a1ff9390b", + "0x5838486f9709d509ca183bfd62059dc0b93c11a7aeb478ba6d797befb42741ce", + "0x7050c9e0f4ca769c69bd3a8ef740bc37934f8e2c036e5a723fd8ee048ed3f8c3", + "0x93c40640380b12c4457039f9068961907821d6675c1c864b3d7911da89086f7f", + "0xcc236083e86ee3df0f3160002f381f1404bd44c4dec1322196f34d52548202f5", + "0xfeb6616e93dc1fa98d03f6845393dc522313be256222f7c27d490e56de385c92" + ] + }, + { + "address": "0xa14afc841a2742cbd52587b705f00f322309580e", + "storageKeys": [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000001", + "0x0000000000000000000000000000000000000000000000000000000000000004", + "0x000000000000000000000000000000000000000000000000000000000000003e", + "0x000000000000000000000000000000000000000000000000000000000000003f", + "0xf38081dfdf02e3ffc50aad06e4e2844f32f17b04fcae6b632a7977242c8e0838" + ] + }, + { + "address": "0xb60b34d830f26c5a11c47ddb1e0a1f31d90a78b1", + "storageKeys": [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000001", + "0x0000000000000000000000000000000000000000000000000000000000000004", + "0x0000000000000000000000000000000000000000000000000000000000000008", + "0x0000000000000000000000000000000000000000000000000000000000000009", + "0x9b637a02e6f8cc8aa1e3935c0b27bde663b11428c7707039634076a3fb8a0c48" + ] + }, + { + "address": "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2", + "storageKeys": [ + "0x9d98752c354deebddd53535455198eacf8cfb934237d3523207f70386be5e3dc", + "0xafe9768e778c9438b5b48d29377de15c330f2905e9106aecbd6ac88e3f82cea3" + ] + }, + { + "address": "0xc92e8bdf79f0507f65a392b0ab4667716bfe0110", + "storageKeys": [] + }, + { + "address": "0xdac17f958d2ee523a2206206994597c13d831ec7", + "storageKeys": [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000003", + "0x0000000000000000000000000000000000000000000000000000000000000004", + "0x000000000000000000000000000000000000000000000000000000000000000a", + "0x31adef62206227419133dd9a6b4041532c22595206a596cf74f19493bfc8f368", + "0x47f0d8c24352282bd22f6c16110950f1718ca728a004736610a9835aafa6c77c", + "0x8b5463664f7b4b91a8418860695dc9b177a054a3467899bfa0769d27d031a6f2", + "0xbcdfe241f132b38477ee35d4e497c725e4d20778d490eecefb1940b28dbce0ca" + ] + } + ], + "chainId": "0x1", + "v": "0x1", + "yParity": "0x1", + "r": "0xfb39be2cbd91adebb6d19764a63e590d26621a37e54664f44dc874d3e9a98e63", + "s": "0x3df8c4cd15e261ea7d2f52d5e48e0c9a45348024d994a2bb46fb83bde1f16d2c" + }, + { + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "from": "0xf70da97812cb96acdf810712aa562db8dfa3dbef", + "gas": "0x6270", + "gasPrice": "0x38cc2a7c", + "maxPriorityFeePerGas": "0x14fceaa8", + "maxFeePerGas": "0x3bfc6fc7", + "hash": "0xa655290cbb744571dd7455dacd45109cb3c7adce13392aa7ed3f2f64f5b644e4", + "input": "0x3e2cde32361a914a98179ab5c890c1e000b5d03fbf2f7db2d288ddfa477cf663", + "nonce": "0x324506", + "to": "0xfbd6acca70a8632061593f1a07056affb7965ac3", + "transactionIndex": "0x4", + "value": "0x1960988987cdc7", + "type": "0x2", + "accessList": [], + "chainId": "0x1", + "v": "0x1", + "yParity": "0x1", + "r": "0x50d24e5c7715bfa5a0ef2d74dcd9468bef8c23efe870dea425553fa945f05c6", + "s": "0x4a95f1d9194a3bf3b6a04e5bc438ca16d49daab68567fd6ecb989f568fac56e1" + }, + { + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "from": "0x6d478cb16317680a517ff89253f82032efdc31ba", + "gas": "0xafa0", + "gasPrice": "0x6b55cbd4", + "maxPriorityFeePerGas": "0x47868c00", + "maxFeePerGas": "0x792d1e40", + "hash": "0xfeee6a0b16850d3300339f32be2765355e301689b0f430b9f7db1695806ace46", + "input": "0x095ea7b3000000000000000000000000111111125421ca6dc452d289314280a0f8842a650000000000000000000000000000000000000000000000000000000000000000", + "nonce": "0xdbb", + "to": "0x3b50805453023a91a8bf641e279401a0b23fa6f9", + "transactionIndex": "0x5", + "value": "0x0", + "type": "0x2", + "accessList": [], + "chainId": "0x1", + "v": "0x0", + "yParity": "0x0", + "r": "0x9f714c12cf41e8bdb0e1756715e0d8b62d07e354dc87fcb11377556c56ec738", + "s": "0x279a0b129838df35a3da6adbe60a83729229f608f8654c5f8726e4bea4424f78" + }, + { + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "from": "0xf70da97812cb96acdf810712aa562db8dfa3dbef", + "gas": "0x79173", + "gasPrice": "0x708ad4a2", + "maxPriorityFeePerGas": "0x4cbb94ce", + "maxFeePerGas": "0x73bb19ed", + "hash": "0xcfe2a7a914c53bdfe847d9571acf416fa3b2c432157f35c6087936de0be2f4a9", + "input": "0x33739082000000000000000000000000f70da97812cb96acdf810712aa562db8dfa3dbef00000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000180000000000000000000000000fb6f757c7e98a124dad7b927025c8194576125c3000000000000000000000000fb6f757c7e98a124dad7b927025c8194576125c30000000000000000000000000000000000000000000000000000000000000b60000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000002b838c5e3c210000000000000000000000000000000000000000000000000000000068a5d0aa0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48000000000000000000000000000000000000000000000000000000001185c2f900000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000016000000000000000000000000000000000000000000000000000000000000007e0000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb480000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000044095ea7b30000000000000000000000000000000000001ff3684f28c67538d4d072c22734000000000000000000000000000000000000000000000000000000001185c2f9000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001ff3684f28c67538d4d072c2273400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000005c42213bc0b000000000000000000000000df31a70a21a1931e02033dbba7deace6c45cfd0f000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48000000000000000000000000000000000000000000000000000000001185c2f9000000000000000000000000df31a70a21a1931e02033dbba7deace6c45cfd0f00000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000004e41fff991f000000000000000000000000f5042e6ffac5a625d4e7848e0b01373d8eb9e222000000000000000000000000163f8c2467924be0ae7b5347228cabf26031875300000000000000000000000000000000000000000000001135683983035c6d9000000000000000000000000000000000000000000000000000000000000000a09ec76e970eebf8e87ffa04210af43c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000016000000000000000000000000000000000000000000000000000000000000000e4c1fb425e000000000000000000000000df31a70a21a1931e02033dbba7deace6c45cfd0f000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48000000000000000000000000000000000000000000000000000000001185c2f900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000068a5cf7d00000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000028438c9c147000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb480000000000000000000000000000000000000000000000000000000000002710000000000000000000000000def1c0ded9bec7f1a1670819833240f027b25eff000000000000000000000000000000000000000000000000000000000000018400000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000001a4dac748d4000000000000000000000000163f8c2467924be0ae7b5347228cabf260318753000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb480000000000000000000000000000000000000000000000114bfd68823e680000000000000000000000000000000000000000000000000000000000001185c2f900000000000000000000000051c72848c68a965f66fa7a88855f9f7784502a7f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f70da97812cb96acdf810712aa562db8dfa3dbef0000000068a5ce8e000000000000000000000000000000000000000068a5ce520000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000001c308445be1fba35529ad765babeb7d04e657d10b1e885929e9088fb8de4e8a73137377dc9e14ddb6b6209e77701b660572de494c7eab10db93d7249805bba87eb000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f5042e6ffac5a625d4e7848e0b01373d8eb9e22200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000001243b2253c8000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e00000000000000000000000000000000000000000000000000000000000000001000000000000000000000000163f8c2467924be0ae7b5347228cabf2603187530000000000000000000000000000000000000000000000000000000000000001000000000000000000000000fb6f757c7e98a124dad7b927025c8194576125c300000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000041cf307ce44d3877629b9e0188f9a2597ccac6729afd8aef39e6e2c2656685cec26a3a780a735e3399a023174e86b20c9c9f34621bf284c9ad465e94ff0ec532141c00000000000000000000000000000000000000000000000000000000000000f38077731f06dcf1ed1ab9112da6f1043441c3e18931b8b201a5332f021cbdcff38077731f06dcf1ed1ab9112da6f1043441c3e18931b8b201a5332f021cbdcf", + "nonce": "0x324507", + "to": "0xbbbfd134e9b44bfb5123898ba36b01de7ab93d98", + "transactionIndex": "0x6", + "value": "0x0", + "type": "0x2", + "accessList": [], + "chainId": "0x1", + "v": "0x0", + "yParity": "0x0", + "r": "0x685e8b339917d4d4b64a120035f225b0178ee8c98c3ba2aee1931ce5145bff06", + "s": "0x1998af1516cf3e23f3e8bb867bfc5b2fca88a21526d0863a0980726fc424a2e5" + }, + { + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "from": "0x6bf97afe2d2c790999cded2a8523009eb8a0823f", + "gas": "0x15d818", + "gasPrice": "0x65045d54", + "maxPriorityFeePerGas": "0x41351d80", + "maxFeePerGas": "0x76630193", + "hash": "0xcd1ae1806eebfe30add1509b02c6f89e85865c7243450742ac86d402507667fd", + "input": "0x13d79a0b0000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000012000000000000000000000000000000000000000000000000000000000000001c000000000000000000000000000000000000000000000000000000000000003e00000000000000000000000000000000000000000000000000000000000000004000000000000000000000000899d774e0f8e14810d628db63e65dfacea682343000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48000000000000000000000000899d774e0f8e14810d628db63e65dfacea6823430000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000a374bf76d4c42c8c8c00000000000000000000000000000000005cd4d66627e732daca892b48abb16400000000000000000000000000000000000000000000000006b06fe010314e3e0681000000000000000000000000000000000000000000000000000000000bebc2000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000003000000000000000000000000366aa56191e89d219ac36b33406fce85da1e7554000000000000000000000000000000000000000000000000000000000bebc2000000000000000000000000000000000000000000000006ac7510475c22e2e3060000000000000000000000000000000000000000000000000000000068a5d4fb98b80e71c53f4b325f7753088b0d8ee55933f28c326277958a47f93bc54a095400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000bebc200000000000000000000000000000000000000000000000000000000000000016000000000000000000000000000000000000000000000000000000000000000414a13957a7c51fc3c1579a62c6160cf8fdf6cbdb186688f8a71c5085ce84e5cfe6cdd79d18f7e34d99a555aaf04a2c7787f9ad58f7bab041c8a94500b5f051a201b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000032000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000002000000000000000000000000060bf78233f48ec42ee3f101b9a05ec78787280060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000001e4760f2a0b000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000020000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb480000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000001388000000000000000000000000000000000000000000000000000000000000000e4d505accf000000000000000000000000366aa56191e89d219ac36b33406fce85da1e7554000000000000000000000000c92e8bdf79f0507f65a392b0ab4667716bfe0110ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000000000000000000000000000000000000000000000720d7562000000000000000000000000000000000000000000000000000000000000001c219463f0255ddbed6266f8998f2c3d706c12eaf9de73c3b9f082b0a583fce90546a423f6fe118493aa5f9f57adfd73963e67bb89e6b20faf95821275b6b1607e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000340000000000000000000000000bbbbbbb520d69a9775e85b458c58c648259fad5f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000002644dcebcba0000000000000000000000000000000000000000000000000000000068a5ce680000000000000000000000009008d19f58aabd9ed0d60971565aa8510560ab4100000000000000000000000067336cec42645f55059eff241cb02ea5cc52ff860000000000000000000000000000000000000000000000002d2e61b16af396e5000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2000000000000000000000000000000000000000000000000000000000bebc20000000000000000000000000000000000000000000000000000aa03ac85e927d00000000000000000000000009008d19f58aabd9ed0d60971565aa8510560ab4100000000000000000000000000000000000000000000000000000000000000006d9aa07971bc4e6731b47ed80776c5740000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000419969dd20c05e5c0ca3d82fed5f912ae3678db7452adc4bffeb8ae098920f9e2a7804cfa5e1e42f85209c494f49914c39258c7668a992f59a01b2fe2d73d445771b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000068b3465833fb72a70ecdf485e0e4c7bd8665fc450000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000e404e45aaf000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2000000000000000000000000899d774e0f8e14810d628db63e65dfacea68234300000000000000000000000000000000000000000000000000000000000027100000000000000000000000009008d19f58aabd9ed0d60971565aa8510560ab4100000000000000000000000000000000000000000000000000aa03ac85e927d00000000000000000000000000000000000000000000006b3d96e8c277e88e06c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ab81f1", + "nonce": "0x18733", + "to": "0x9008d19f58aabd9ed0d60971565aa8510560ab41", + "transactionIndex": "0x7", + "value": "0x0", + "type": "0x2", + "accessList": [ + { + "address": "0x9008d19f58aabd9ed0d60971565aa8510560ab41", + "storageKeys": [ + "0x0000000000000000000000000000000000000000000000000000000000000001", + "0x650f69dead2eeee68214ac0bc29f23bc7e2f82c89293ef4b23dc1591bc737c67" + ] + }, + { + "address": "0x2c4c28ddbdac9c5e7055b4c863b72ea0149d8afe", + "storageKeys": [ + "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc", + "0x88d075c869ce192f20da9bfc0d2db81b73b4aa4af2ce17e52384cb021d06bd06" + ] + }, + { + "address": "0x9e7ae8bdba9aa346739792d219a808884996db67", + "storageKeys": [] + }, + { + "address": "0x800c32eaa2a6c93cf4cb51794450ed77fbfbb172", + "storageKeys": [] + }, + { + "address": "0x366aa56191e89d219ac36b33406fce85da1e7554", + "storageKeys": [] + }, + { + "address": "0xc92e8bdf79f0507f65a392b0ab4667716bfe0110", + "storageKeys": [] + }, + { + "address": "0xbbbbbbb520d69a9775e85b458c58c648259fad5f", + "storageKeys": [ + "0xa3b7a258ccc3c19490a94edab51a442dd2eeac4318bddede8cd899595d08f28a" + ] + }, + { + "address": "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2", + "storageKeys": [ + "0xb84fbcd09e20fa700ddef111765a21785d2290b3c7c8719a27e4b60b59126522", + "0xda591c30fe54b3edd3bcb5d0d916c5c472e3ad81645d0312a5e73f3708e8708b", + "0x0bc90c98aed598fd15d9075ded522981aeb2ee369c8117e46bd494dc17c29999", + "0xdbde769b5281dad4214cceeb1871ab281fb8fd2a4443141db1078642029ae248", + "0x9d98752c354deebddd53535455198eacf8cfb934237d3523207f70386be5e3dc" + ] + }, + { + "address": "0x60bf78233f48ec42ee3f101b9a05ec7878728006", + "storageKeys": [] + }, + { + "address": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48", + "storageKeys": [ + "0x0000000000000000000000000000000000000000000000000000000000000001", + "0x0000000000000000000000000000000000000000000000000000000000000004", + "0x44624a8a323b583a84b5812478c554a5e284223b469e9f7039175023c0e54c3e", + "0x3ad18d7747f05925bebbb1df8860daa9cd402d902420f95ce10c49792803c3d6", + "0xcc236083e86ee3df0f3160002f381f1404bd44c4dec1322196f34d52548202f5", + "0x88afba62e6432e4d0a3e39a2be587d39c0b93368d66cedb0531bb5292040a552", + "0x10d6a54a4754c8869d6886b5f5d7fbfa5b4522237ea5c60d11bc4e7a1ff9390b", + "0x5cfccd15aa8eff180914a82b4caf3b39b3c62421a17404ea7a7d0c80fe766666", + "0x659f5b53123b3e7a886575e106645d4d7c5af120440f3f409542b3987fa1ea07", + "0x77d5014beb071d1c3dabbdbdba61f9a5cc3ffedca11c102ef7e2fae619d04e12", + "0x6e91f60197c982353033e86512311820683e018e0f39963c5d00c2c490bc45d3", + "0x7050c9e0f4ca769c69bd3a8ef740bc37934f8e2c036e5a723fd8ee048ed3f8c3" + ] + }, + { + "address": "0x43506849d7c04f9138d1a2050bbf3a0c054402dd", + "storageKeys": [] + }, + { + "address": "0x68b3465833fb72a70ecdf485e0e4c7bd8665fc45", + "storageKeys": [] + }, + { + "address": "0x1346d1ee3fb1b65fecfcb65c149ca0702c286f53", + "storageKeys": [ + "0x0000000000000000000000000000000000000000000000000000000000000004", + "0x0000000000000000000000000000000000000000000000000000000000000002", + "0xc0d1c00078410fd0164580b0bad93d8a579580d06cf45fc2696a823498097b8a", + "0x0000000000000000000000000000000000000000000000000000000000000008", + "0x0000000000000000000000000000000000000000000000000000000000000000" + ] + }, + { + "address": "0x899d774e0f8e14810d628db63e65dfacea682343", + "storageKeys": [ + "0xd64773870f40323194fda2d1773a23183ba723843a4aa8fb90d5eaf49c342f55", + "0xef7cf59cb40a7ae1b5e03b08af7ed07c83f41406ca13eaeed923c1f2fc8bbb2a", + "0x70f537a6c3c5e23e6deecb5baafd173071015ed695aa4c5ab2072a13f49234e4", + "0x8eb102192bd88c1782b7bb42421db4a5cda302102196a664e54ad03c03e19e1e" + ] + } + ], + "chainId": "0x1", + "v": "0x0", + "yParity": "0x0", + "r": "0x6f71e41e8630b35dea48e57d1afd291651a5f15c338133c4976267ac00dd9e56", + "s": "0x45689f732b0a8e6be5bdf5a45db561f33cae7e976f8e8ebdbcbe2e51dc40869c" + }, + { + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "from": "0xc8ad355c8291cbd52e738ed1df1f5ccbbbbf00ee", + "gas": "0x76186", + "gasPrice": "0x2d50b891", + "maxPriorityFeePerGas": "0x98178bd", + "maxFeePerGas": "0x9e685dbf", + "hash": "0x3441b6c4db11204dd038658ebd8ef15db513e8a24bab123454a76cf2f04b0e3c", + "input": "0x13d79a0b0000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000012000000000000000000000000000000000000000000000000000000000000001c000000000000000000000000000000000000000000000000000000000000003e00000000000000000000000000000000000000000000000000000000000000004000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec7000000000000000000000000f4308b0263723b121056938c2172868e408079d0000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec7000000000000000000000000f4308b0263723b121056938c2172868e408079d00000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000c5d6c3b2125dc8000000000000000000000000000000000000000000000000000000000000f810081d2232000000000000000000000000000000000000000000000001a0d9ab1774735d130000000000000000000000000000000000000000000000000000000002160ec00000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000003000000000000000000000000ee007a00b876742c33491454447a40bc63d3d4680000000000000000000000000000000000000000000000000000000002160ec000000000000000000000000000000000000000000000000199b40c6d1c841a520000000000000000000000000000000000000000000000000000000068a5d50f222f46d540f557f4c5cf7864f3cdddcc5ecfdce6ccc7d7fa9401501c00c6eb28000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002160ec000000000000000000000000000000000000000000000000000000000000001600000000000000000000000000000000000000000000000000000000000000041d9644c6be7266136904797f084e8352986344bd869f4a9731be80d21ebbee746515f68447acfcdeb724248b251dd1b22b0fc5b6a7a551eb9bb54d9de4e2925fc1b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000003c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000020000000000000000000000000bbbbbbb520d69a9775e85b458c58c648259fad5f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000002644dcebcba0000000000000000000000000000000000000000000000000000000068a5ce680000000000000000000000009008d19f58aabd9ed0d60971565aa8510560ab4100000000000000000000000067336cec42645f55059eff241cb02ea5cc52ff860000000000000000000000000000000000000000000000002d2e61b16af396e4000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec7000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc200000000000000000000000000000000000000000000000000000000020b32aa000000000000000000000000000000000000000000000000001d27419875a7660000000000000000000000009008d19f58aabd9ed0d60971565aa8510560ab4100000000000000000000000000000000000000000000000000000000000000003eeca8e9088f6bdbdb18cf66347231200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001a000000000000000000000000000000000000000000000000000000000020b32aa00000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004151d76016fd78972466adf9211a6ed7f7920ebefdd05878b2aa1147c8516d7cdf0725c40332cdf2196f02bb1af34b17b21e703acd2d67eab2204dfcab55e8023b1b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ab81f1", + "nonce": "0x15d2", + "to": "0xa9d635ef85bc37eb9ff9d6165481ea230ed32392", + "transactionIndex": "0x8", + "value": "0x0", + "type": "0x2", + "accessList": [ + { + "address": "0x2c4c28ddbdac9c5e7055b4c863b72ea0149d8afe", + "storageKeys": [ + "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc", + "0xa214b15162c78c6464e5ab06ab626d767ffac37a0858a2cbd1ab2e078f4bfd88" + ] + }, + { + "address": "0x9008d19f58aabd9ed0d60971565aa8510560ab41", + "storageKeys": [ + "0x0000000000000000000000000000000000000000000000000000000000000001", + "0x3ac39fa695c7fcc2f08ed03f39a14f6200dcd6d70476484cefdbd20e318a12f6" + ] + }, + { + "address": "0x9e7ae8bdba9aa346739792d219a808884996db67", + "storageKeys": [] + }, + { + "address": "0xbbbbbbb520d69a9775e85b458c58c648259fad5f", + "storageKeys": [ + "0xa3b7a258ccc3c19490a94edab51a442dd2eeac4318bddede8cd899595d08f28a" + ] + }, + { + "address": "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2", + "storageKeys": [ + "0x0bc90c98aed598fd15d9075ded522981aeb2ee369c8117e46bd494dc17c29999", + "0x9d98752c354deebddd53535455198eacf8cfb934237d3523207f70386be5e3dc", + "0xdbde769b5281dad4214cceeb1871ab281fb8fd2a4443141db1078642029ae248" + ] + }, + { + "address": "0xc92e8bdf79f0507f65a392b0ab4667716bfe0110", + "storageKeys": [] + }, + { + "address": "0xdac17f958d2ee523a2206206994597c13d831ec7", + "storageKeys": [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000003", + "0x0000000000000000000000000000000000000000000000000000000000000004", + "0x000000000000000000000000000000000000000000000000000000000000000a", + "0x2f4eccef1a2ac26ee311f5ed3175b060e147894716e6aef238fb247a8c0442ca", + "0x31adef62206227419133dd9a6b4041532c22595206a596cf74f19493bfc8f368", + "0x4282b1b811d28a715ea8710781664398187c8e7782bfa23d89b52b7df4a2d8f3", + "0x735ee752cf3aae249c79a037f284ac2a506e6033138d147b09b48992c871ad59", + "0xbcdfe241f132b38477ee35d4e497c725e4d20778d490eecefb1940b28dbce0ca", + "0xd7a51ade5c6492019478dc383052660ff7a3e7e43c6807d36c3e98ca0308f43a", + "0xded6b53414d9315f8b52550ee338588467e17d823032131926cff044d8e24022" + ] + }, + { + "address": "0xf4308b0263723b121056938c2172868e408079d0", + "storageKeys": [ + "0x0c80462f4c67c47b6702d5d78f89be290cda72230796295a3f0d81e5ea5efacf", + "0x2f4eccef1a2ac26ee311f5ed3175b060e147894716e6aef238fb247a8c0442ca", + "0x618059526d7d1bb5608c8e3a0740d1f656fa8a764ecca600a8e0e3e0c313ce66", + "0xbcdfe241f132b38477ee35d4e497c725e4d20778d490eecefb1940b28dbce0ca" + ] + } + ], + "chainId": "0x1", + "v": "0x1", + "yParity": "0x1", + "r": "0xaecfe2fed3c701d85e5ab7a4429e75d30863c4e9f3bf2447e8776ae94dfbb299", + "s": "0x4736b0a001b7ab77ff092200b51f95a847da9e4ba87e19091f90b36445f1d7ca" + }, + { + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "from": "0x943810707e090f1bdc486c4c990d43da3b162e52", + "gas": "0xf456c", + "gasPrice": "0x2d50b891", + "maxPriorityFeePerGas": "0x98178bd", + "maxFeePerGas": "0x9e685dbf", + "hash": "0x701f3baa584c50d52e6b4e1fa9f54a6413298cf889af51e9b3475804a4baeb12", + "input": "0x13d79a0b0000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000012000000000000000000000000000000000000000000000000000000000000001c000000000000000000000000000000000000000000000000000000000000003e00000000000000000000000000000000000000000000000000000000000000004000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48000000000000000000000000f5581dfefd8fb0e4aec526be659cfab1f8c781da000000000000000000000000f5581dfefd8fb0e4aec526be659cfab1f8c781da000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb480000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000c601d4ad4d40100000000000000000000000000000000000000000000000000000000000000f08207d3003000000000000000000000000000000000000000000000000000000003c18ecd8000000000000000000000000000000000000000000000318d845d95db27be800000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000300000000000000000000000089b537d4e0de035303dc1bdae18394f7a6c15c36000000000000000000000000000000000000000000000318d845d95db27be800000000000000000000000000000000000000000000000000000000003be8c78f0000000000000000000000000000000000000000000000000000000068a5ce8d506ca878e4bf5525292d5c63dfb3f96c2d1e319ae14bc546dc75b9d61da6b4f700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000318d845d95db27be8000000000000000000000000000000000000000000000000000000000000000160000000000000000000000000000000000000000000000000000000000000004108bd95c77ca0e0300f77d6084f777c937cdf6c73440bcb8bef9555851961773079721b9c1449707d60e2310bbbbb4cd73197ce25c4acc60262db616181d421b51c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000004c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000003400000000000000000000000002db07a3a657b6e16999b67d48500486a1cb0d64900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000026447a4a989000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000002e563eed429041ddf3b86e77d08986000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000d9b4f53e13ad00000000000000000000000000000000000000000000000000000000000000410500000000000000000000000087986ae1e99f99da1f955d16930dc8914ffbed560000000000000000000000000000000000000000000002c2b9c5fcc62d54533900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000d9b4f53e13ad00000000000000000000000000000000000000000000000000000000000000410100000000000000000000000092c2fc5f306405eab0ff0958f6d85d7f8892cf4d000000000000000000000000000000000000000000000054e9ab31a1339be5930000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f6e72db5454dd049d0788e411b06cfaf168530420000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000448d7ef9bb0000000000000000000000009008d19f58aabd9ed0d60971565aa8510560ab41000000000000000000000000000000000000000000000000000000003c196d470000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ab81f1", + "nonce": "0x1539", + "to": "0xa9d635ef85bc37eb9ff9d6165481ea230ed32392", + "transactionIndex": "0x9", + "value": "0x0", + "type": "0x2", + "accessList": [ + { + "address": "0x1820a4b7618bde71dce8cdc73aab6c95905fad24", + "storageKeys": [ + "0x26ffaf3a152d9fc724f491aa88ce2ea63ad2e54309955f7fd1c8cc431e36cd34", + "0x65e2bcb9b53b49e6a207a8cad45c445797ac132820851a5c2ca766f4bf70616b", + "0x6651bfb587c6c83e7c5b50954a25fb69217eaf629b55ce7bce79d7e0393b515c", + "0xa208009c466c46de16aa4c0f6ebe699a7e5312ea2340511e7a3493d58c777750", + "0xb2d447267ac2372fd4f82b45f0b2a765998bdb05d5e4e3ea4ea1196b5b7d4055" + ] + }, + { + "address": "0x2c4c28ddbdac9c5e7055b4c863b72ea0149d8afe", + "storageKeys": [ + "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc", + "0xa214b15162c78c6464e5ab06ab626d767ffac37a0858a2cbd1ab2e078f4bfd88" + ] + }, + { + "address": "0x2db07a3a657b6e16999b67d48500486a1cb0d649", + "storageKeys": [ + "0xb9a049cec27bd0e04f03ab406fe4a5b51e014bbb45dde170cb834dfe14d24e95" + ] + }, + { + "address": "0x43506849d7c04f9138d1a2050bbf3a0c054402dd", + "storageKeys": [] + }, + { + "address": "0x6b175474e89094c44da98b954eedeac495271d0f", + "storageKeys": [ + "0x07c7175170b0f7dbe5045e3aadd9d8d1a1bcd86d67b2f66b428714307f9deece", + "0x0e3d19729328f478ffc901c115f05d0195e5b68e282b84da93c6bafd953fdc80", + "0x31adef62206227419133dd9a6b4041532c22595206a596cf74f19493bfc8f368", + "0x5a57ab83a89afb99a56f8abebbc3d088fc84de8c39b430a65f65eb47fde6dad0", + "0x94cb0693589c4317987c2bdd65ee12478eaccf583a76f667a44bfc1f5ee9d33e" + ] + }, + { + "address": "0x87986ae1e99f99da1f955d16930dc8914ffbed56", + "storageKeys": [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000002", + "0x0000000000000000000000000000000000000000000000000000000000000004", + "0x000000000000000000000000000000000000000000000000000000000000000b", + "0x000000000000000000000000000000000000000000000000000000000000000c", + "0x3e5fec24aa4dc4e5aee2e025e51e1392c72a2500577559fae9665c6d52bd6a31" + ] + }, + { + "address": "0x9008d19f58aabd9ed0d60971565aa8510560ab41", + "storageKeys": [ + "0x0000000000000000000000000000000000000000000000000000000000000001", + "0x495bc0bde1e41fc4a3b21299a3f1a2ed0b63f941d98cd981904995296886f56f" + ] + }, + { + "address": "0x92c2fc5f306405eab0ff0958f6d85d7f8892cf4d", + "storageKeys": [ + "0x0000000000000000000000000000000000000000000000000000000000000006", + "0x0000000000000000000000000000000000000000000000000000000000000007", + "0x0000000000000000000000000000000000000000000000000000000000000008", + "0x0000000000000000000000000000000000000000000000000000000000000009", + "0x000000000000000000000000000000000000000000000000000000000000000a", + "0x000000000000000000000000000000000000000000000000000000000000000c" + ] + }, + { + "address": "0x9e7ae8bdba9aa346739792d219a808884996db67", + "storageKeys": [] + }, + { + "address": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48", + "storageKeys": [ + "0x0000000000000000000000000000000000000000000000000000000000000001", + "0x10d6a54a4754c8869d6886b5f5d7fbfa5b4522237ea5c60d11bc4e7a1ff9390b", + "0x2209089ff8bd3b7bac6ff21ec014fbd229af53b4ecc03dcfbd102128759cb6c8", + "0x33d96ce24063b8b087fa8c040c066e1b9739925a812f2a0c2202c9ef763d01be", + "0x5838486f9709d509ca183bfd62059dc0b93c11a7aeb478ba6d797befb42741ce", + "0x7050c9e0f4ca769c69bd3a8ef740bc37934f8e2c036e5a723fd8ee048ed3f8c3", + "0x9254cb65314db3d2d7ca17f753f1d9c7f1b6fa05111d18d10ed5b9519d1b247c", + "0xcc236083e86ee3df0f3160002f381f1404bd44c4dec1322196f34d52548202f5" + ] + }, + { + "address": "0xc92e8bdf79f0507f65a392b0ab4667716bfe0110", + "storageKeys": [] + }, + { + "address": "0xf5581dfefd8fb0e4aec526be659cfab1f8c781da", + "storageKeys": [ + "0x0e1b053921947bb61bee9f4bdc68bd6cab8cd39676a3cd25cbd3106515a600eb", + "0x463e11d6a09091abd5aa6409bcbdabd9d238935494dfe44240ecc5ea0b354ca3", + "0x5c53079ea7792e51eb61b662d072997b7fc830cb7c1fbf2e6dfc67a145adb39e", + "0x64ac251e964da0f5b6d07d47428fa7c41487ff293e1deb77eb407c15028dab0c", + "0x68d6103d434297b53d93172ff9b8e9fa609a873ee797a41b54b397befc982be5", + "0x7dd76b6185fc1dea9f4a90a6ff981e0a3e4f93b86e4ca82614c0e6daf68aa56c", + "0x7dd76b6185fc1dea9f4a90a6ff981e0a3e4f93b86e4ca82614c0e6daf68aa56d", + "0x80ff297fa2adcff46f46c76227076eddf7fcd5eb46559fed52522694ef9d5ca5", + "0x89ef6b4e32d5d82988d37d3a1fa7a16af850a0cec75c22bb7f54de6246e3415c", + "0x9ee8a636f0e458db742f50e2e2ad1530450af2611cd1652a371252abdedc2946", + "0xa5ab90ef73957dfec11eeabb333dccdc845a4f9bb24c2ecaa73241e72a97b1df", + "0xa5ab90ef73957dfec11eeabb333dccdc845a4f9bb24c2ecaa73241e72a97b1e0", + "0xae2dca3d72df02635ac422fe39c20b891efdf3630b23ee68b0b2cfeb0a922b20", + "0xb1622186449cb54cc8232698c69ae603adb41bb57566ca3651938555eb357a5a", + "0xb1622186449cb54cc8232698c69ae603adb41bb57566ca3651938555eb357a5b", + "0xbdd568ee226292b5392bccf8c984d00f7926aea871906d874009a37a5acb559f", + "0xd81a2e6b8d823272625dace0cd0304f8adc01aacbad3c8184dcbe8a3d88f83d0", + "0xd81a2e6b8d823272625dace0cd0304f8adc01aacbad3c8184dcbe8a3d88f83d1" + ] + }, + { + "address": "0xf6e72db5454dd049d0788e411b06cfaf16853042", + "storageKeys": [ + "0x0000000000000000000000000000000000000000000000000000000000000004" + ] + } + ], + "chainId": "0x1", + "v": "0x0", + "yParity": "0x0", + "r": "0x5efc73acc9209d3c66c2aeded4e4a875bd8856b1674c7ea9ac46a647cc76e183", + "s": "0x63ceb18132c678a51071f869b1637d33b53006e620bf6ec991fda5a458abd94d" + }, + { + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "from": "0xf70da97812cb96acdf810712aa562db8dfa3dbef", + "gas": "0x12b04", + "gasPrice": "0x708ad4a2", + "maxPriorityFeePerGas": "0x4cbb94ce", + "maxFeePerGas": "0x73bb19ed", + "hash": "0x9ff6af7f27a501a3f04503f82eca3d75470296a9c18ed65ea51951e820650066", + "input": "0x30be55670000000000000000000000000000000000000000000000000000000000000060000000000000000000000000ae1a530128950b1735674a975e1622872e556b59000000000000000000000000ae1a530128950b1735674a975e1622872e556b5900000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000020000000000000000000000000f5042e6ffac5a625d4e7848e0b01373d8eb9e22200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000304e4108473ed6d00000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000c53e91fb904a5426b90d2fce78b7a29058931688395e3f1203b7bd652866cce6", + "nonce": "0x324508", + "to": "0xf5042e6ffac5a625d4e7848e0b01373d8eb9e222", + "transactionIndex": "0xa", + "value": "0x304e4108473ed6d", + "type": "0x2", + "accessList": [], + "chainId": "0x1", + "v": "0x1", + "yParity": "0x1", + "r": "0xfcf73e22d0c3470cf5b073cdf239c1875127cefd0adcbfdc07df485e4f8ccf10", + "s": "0x118b537e5d953e7ae1082310a0a2cf80e1af3a0047d8aebf7144ed5fbbbb8148" + }, + { + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "from": "0x80c700683ec017a190b132a4ce042beeb7c6b821", + "gas": "0x493e0", + "gasPrice": "0x2c523e86", + "hash": "0x0c5250b391b89ddb6bcee896bf09c5419f4a8627f94c1c8ee0432c46259d5af2", + "input": "0x7ff36ab50000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000080c700683ec017a190b132a4ce042beeb7c6b8210000000000000000000000000000000000000000000000000000000068a5dc640000000000000000000000000000000000000000000000000000000000000002000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2000000000000000000000000e0265346277ad201609308b506e901b520150a08", + "nonce": "0x1", + "to": "0x7a250d5630b4cf539739df2c5dacb4c659f2488d", + "transactionIndex": "0xb", + "value": "0x621b921b80f2af", + "type": "0x0", + "chainId": "0x1", + "v": "0x26", + "r": "0xb99ac5e4528b39173dc5779c74f0e3a720f20531b73dad03f2596229cb3ab489", + "s": "0x17073a6061963ac8b4cef1ac5f57a703453c29f8b860f0045ffc1928bce0307" + }, + { + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "from": "0x7830c87c02e56aff27fa8ab1241711331fa86f43", + "gas": "0x1e8480", + "gasPrice": "0x5f6a09d4", + "maxPriorityFeePerGas": "0x3b9aca00", + "maxFeePerGas": "0xb2d05e00", + "hash": "0x65dfef793509b00a864042275789801fd0c89fe3fe1d67648c4bba8148fd511c", + "input": "0x1a1da07500000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000015694000000000000000000000000000000000000000000000000000000000000000b0000000000000000000000003840170eae1303ecb3b5809671b962b0b2d4f3aa000000000000000000000000000000000000000000000000003ad6b94d191000000000000000000000000000da80d2757f2eceab6c2c5a31e51c6db8b9af83720000000000000000000000000000000000000000000000000070413fe0b078000000000000000000000000001f7824205b9427666d6a4a35c223c2afdddb5f350000000000000000000000000000000000000000000000000671ab6cb65960000000000000000000000000009fcd0e5fb4e70845090ca8b61c9bcea79472f02e000000000000000000000000000000000000000000000000002f92040cf04c000000000000000000000000009a9a9aafed1590214f18ffd2c45b982ad05c96a4000000000000000000000000000000000000000000000000005ff4017bff8400000000000000000000000000d2ac77b70369bd47ba2e07004b42c12b5dae6d9200000000000000000000000000000000000000000000000000034e4695eac40000000000000000000000000075fb24e0faf3ae4057b6eb0ab567a3786d6b7dea0000000000000000000000000000000000000000000000000030994e318e0000000000000000000000000000ca74f404e0c7bfa35b13b511097df966d5a655970000000000000000000000000000000000000000000000022b1b746db77ef40000000000000000000000000093d3151e799c7c01a2bc24d9566bd64850f0d9ac000000000000000000000000000000000000000000000000005715aba96e5c0000000000000000000000000083a37983d7717dc946d6eb736e8be6cf3bb94b6700000000000000000000000000000000000000000000000001853a17d6a15000000000000000000000000000fbac3516677cc50dea378bc6452377e3bdfae7dc0000000000000000000000000000000000000000000000000075ec64cfa92400", + "nonce": "0x284ae6", + "to": "0xa9d1e08c7793af67e9d92fe308d5697fb81d3e43", + "transactionIndex": "0xc", + "value": "0x0", + "type": "0x2", + "accessList": [], + "chainId": "0x1", + "v": "0x0", + "yParity": "0x0", + "r": "0xbef5a78bce7f069bb85ece9f17a21ca4ff06156d81c1ff51e0f99f67d2f27c72", + "s": "0x416881a96e033a3b039e5cc791de1585c4338b94fa42b9563f0ebdfa91ab2894" + }, + { + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "from": "0x078430ebd8db8288fd056d137e0e11cf67fb8fc1", + "gas": "0x326fa", + "gasPrice": "0x9b04d3d4", + "maxPriorityFeePerGas": "0x77359400", + "maxFeePerGas": "0xa7c2cc55", + "hash": "0x26c30055f1b6d43badaa5b519480af74f120afac79589b30485dc872a06cac18", + "input": "0xc60db8a1000000000000000000000000000000000000000000000a2a792108221ac98c54000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000002200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000001c50000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000a2a792108221ac98c540000000000000000000000000000000000000000000000000000000068a67703000000000000000000000000000000000000000000000000000000000000001bf13c7019ddb500c11b8de954cfcce21aa46a6c287db7dd71d4c0c90cdeaba06743a4bdf8f0b9cb9a3dd580f4d57ad4de0a7b12c9125d1f97dd0bb19bca506ec1", + "nonce": "0x5d", + "to": "0x71a41517fe65890fe835d67fce17a9747112696c", + "transactionIndex": "0xd", + "value": "0x0", + "type": "0x2", + "accessList": [], + "chainId": "0x1", + "v": "0x1", + "yParity": "0x1", + "r": "0x746fa8b401730a75ff8832f0fe455f528f90cd5360bcb63f4364c5e397defcec", + "s": "0x695cd4e982301b54a79d0d66338485b28b51e27b220073931e1d370ec42a8c7a" + }, + { + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "from": "0x7830c87c02e56aff27fa8ab1241711331fa86f43", + "gas": "0x1e8480", + "gasPrice": "0x5f6a09d4", + "maxPriorityFeePerGas": "0x3b9aca00", + "maxFeePerGas": "0xb2d05e00", + "hash": "0xca596815ac0d42d85cd700df64d361590f1d06cf2d09806862d46944feda2044", + "input": "0xca350aa60000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000003d0900000000000000000000000000000000000000000000000000000000000000013000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec70000000000000000000000004fa31bbbb0729c76ca3fb7c5d466c1b30764749b0000000000000000000000000000000000000000000000000000000015476340000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec70000000000000000000000008e1e9185870f026be6b59219f673fe84481a329a000000000000000000000000000000000000000000000000000000002d27ecbb000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec700000000000000000000000060c531e7594102a7a9be19197c969639bebf5fae000000000000000000000000000000000000000000000000000000001cf8f755000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec7000000000000000000000000f8b2374fc5335176857aa83f8a37be8afdf8bac7000000000000000000000000000000000000000000000000000000002113fe2a000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec700000000000000000000000088a857dfc3ed7b4e326adbbe79224de634982235000000000000000000000000000000000000000000000000000000000e4e1c00000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec7000000000000000000000000f668293ea8362fe9dccd4499c23fcb00259196130000000000000000000000000000000000000000000000000000000002a9f1f7000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4800000000000000000000000026b23da6eb7d863bef139feb51ba027ec2f0769a0000000000000000000000000000000000000000000000000000000002faf080000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48000000000000000000000000de396526ede4218a67327cec9658e7571a0eac5c00000000000000000000000000000000000000000000000000000000017f2b8d000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48000000000000000000000000f5261acdfbe5b46b6c79271ea86d933603236899000000000000000000000000000000000000000000000000000000014437f0cd000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb480000000000000000000000006de7232e53fd11e218842e5506577837134a1171000000000000000000000000000000000000000000000000000000000311d3e0000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb480000000000000000000000006de7232e53fd11e218842e5506577837134a117100000000000000000000000000000000000000000000000000000000077e07a0000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48000000000000000000000000d5b12d6651b94d6340699077258feb3314d6b1ae0000000000000000000000000000000000000000000000000000000004661940000000000000000000000000be9895146f7af43049ca1c1ae358b0541ea4970400000000000000000000000051c72848c68a965f66fa7a88855f9f7784502a7f000000000000000000000000000000000000000000000002ec03212a197a0c0000000000000000000000000084ca8bc7997272c7cfb4d0cd3d55cd942b3c941900000000000000000000000089b537d4e0de035303dc1bdae18394f7a6c15c360000000000000000000000000000000000000000000000230ec810de9c63d0000000000000000000000000000d8775f648430679a709e98d2b0cb6250d2887ef0000000000000000000000007c06dfc7576ef157e111d80cd8ce98f8ab60feaf0000000000000000000000000000000000000000000000008b95e9381c0e24000000000000000000000000001f9840a85d5af5bf1d1762f925bdaddc4201f98400000000000000000000000006fd4ba7973a0d39a91734bbc35bc2bcaa99e3b00000000000000000000000000000000000000000000000334af9bea1f4c02c000000000000000000000000004a220e6096b25eadb88358cb44068a32482546750000000000000000000000009f3b333f36069244901885d5e520ffee722a4585000000000000000000000000000000000000000000000000106df6c44af68000000000000000000000000000faba6f8e4a5e8ab82f62fe7c39859fa577269be3000000000000000000000000c3bf801d58a4c0418d96eda0164fb743ad065aca0000000000000000000000000000000000000000000000016d4f1287753300000000000000000000000000006c3ea9036406852006290770bedfcaba0e23a0e80000000000000000000000002c8b4fba3b3706827c96f3e4ccbc0d1442dcd07400000000000000000000000000000000000000000000000000000016e43d727e", + "nonce": "0x284ae7", + "to": "0xa9d1e08c7793af67e9d92fe308d5697fb81d3e43", + "transactionIndex": "0xe", + "value": "0x0", + "type": "0x2", + "accessList": [], + "chainId": "0x1", + "v": "0x1", + "yParity": "0x1", + "r": "0xccb5a4f9cbbd52675934666dd5b55240a52fc8453a4ed02c0a667e222d7530fa", + "s": "0x5f1d42b6a68cd48c84bffb8d35663feeb910b2202d9ae077f34e0e47d7eed806" + }, + { + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "from": "0xa03400e098f4421b34a3a44a1b4e571419517687", + "gas": "0x15f90", + "gasPrice": "0xa6f095d4", + "maxPriorityFeePerGas": "0x83215600", + "maxFeePerGas": "0xc92b663a", + "hash": "0x706cc7072418792c08feb0ace7ba254538265f6bfdb6282584f936160791d8e1", + "input": "0xa9059cbb0000000000000000000000000fac5094987a848754db82a7db870e635f12693900000000000000000000000000000000000000006d06bff6e90832e72f68a000", + "nonce": "0x9c174", + "to": "0xf8ebf4849f1fa4faf0dff2106a173d3a6cb2eb3a", + "transactionIndex": "0xf", + "value": "0x0", + "type": "0x2", + "accessList": [], + "chainId": "0x1", + "v": "0x0", + "yParity": "0x0", + "r": "0xa6227d8331598c8b57b985e5e11b799c6f5e15b7e5b64e1d233783d5edf18084", + "s": "0x251e93d98b77b2ab2a270200fdb90dde273121fe2f7b5e8bcbbd1d687780c002" + }, + { + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "from": "0xae2fc483527b8ef99eb5d9b44875f005ba1fae13", + "gas": "0x544f2", + "gasPrice": "0x2f779f57", + "maxPriorityFeePerGas": "0x2f779f55", + "maxFeePerGas": "0x2f779f57", + "hash": "0x24070e8f3c56fa6b8da89ac744e37e1e2bad090ac3bc3e0ad637cd1e3dbe57b4", + "input": "0x2ba9dd6e1a4e35d307497da8d5d4052173410951b3d55eef268302615987d46003cc37387dbe544ff4f16fa1200077e0f63a424a4439cbe457d80e4f4b51ad25b2c56c271000a59e7c706586679af2ba6d1a9fc2da9c6af59883fdd3c83deea6ffc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2e0f63a424a4439cbe457d80e4f4b51ad25b2c56c0bb8353d6c618dd1040a79923cd74113ef0ed07c07d2b0e73e9e429906", + "nonce": "0x4cbf83", + "to": "0x1f2f10d1c40777ae1da742455c65828ff36df387", + "transactionIndex": "0x10", + "value": "0x5b", + "type": "0x2", + "accessList": [ + { + "address": "0xdd6e1a4e35d307497da8d5d4052173410951b3d5", + "storageKeys": [ + "0x0000000000000000000000000000000000000000000000000000000000000008", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000004", + "0x0000000000000000000000000000000000000000000000000000000000000002", + "0x9c04773acff4c5c42718bd0120c72761f458e43068a3961eb935577d1ed4effb" + ] + }, + { + "address": "0x615987d46003cc37387dbe544ff4f16fa1200077", + "storageKeys": [ + "0x000000000000000000000000000000000000000000000000000000000000000d", + "0x000000000000000000000000000000000000000000000000000000000000000c", + "0x0000000000000000000000000000000000000000000000000000000000000016", + "0x0000000000000000000000000000000000000000000000000000000000000013", + "0x000000000000000000000000000000000000000000000000000000000000000a", + "0x28d47d5a1b1bb6d81ee8f3296c3aabe6858274ba016748dc240a0c7b404bed4e", + "0x81578d72e57cfe5afd3cabf194b9dd0cd31cbf55328ad151e90cde0d8a724a2f", + "0x0000000000000000000000000000000000000000000000000000000000000008", + "0xc4cd4eff418a87bd16e163858527636e3f62260f9fd3e6abc04042e6b2a417ed", + "0x0000000000000000000000000000000000000000000000000000000000000010", + "0x0000000000000000000000000000000000000000000000000000000000000000" + ] + }, + { + "address": "0xe0f63a424a4439cbe457d80e4f4b51ad25b2c56c", + "storageKeys": [ + "0x0000000000000000000000000000000000000000000000000000000000000009", + "0xc02c10ae588f2466ea6e6350d07ab12ee7521cf6f0c110cec9b4bd1ec5838085", + "0x0000000000000000000000000000000000000000000000000000000000000006", + "0x0000000000000000000000000000000000000000000000000000000000000014", + "0x000000000000000000000000000000000000000000000000000000000000000b", + "0xac6fb4f0f81e11dc1f89f596e243b0ed419667343ccffe17523030f10980cedd", + "0x9d8106a7b639091777047eab6393a843ae4f778b78087f1dc0a2a206ede77128", + "0x28d47d5a1b1bb6d81ee8f3296c3aabe6858274ba016748dc240a0c7b404bed4e", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0cc3e71b6c8503b085fba098fa97a196e68800a75592ac94ee4fd52a7743498f", + "0x000000000000000000000000000000000000000000000000000000000000000e" + ] + }, + { + "address": "0x7c706586679af2ba6d1a9fc2da9c6af59883fdd3", + "storageKeys": [ + "0x0000000000000000000000000000000000000000000000000000000000000588", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000004", + "0x0000000000000000000000000000000000000000000000000000000000000001", + "0x087ee8928d220a836313fd42a2026f22b82c654c81888dac4ae8bd03caea005a", + "0x0000000000000000000000000000000000000000000000000000000000000587" + ] + }, + { + "address": "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2", + "storageKeys": [ + "0xf6cc6c4222dae194a09f19d368f4b2b85698ddef67e513b005143d861f8ea8e2", + "0xbd5af5151dcb9feb2c4ef23509c863dd4415e4d2c27b5c08786933a8ed41acc7", + "0x35425d932c70410b9314c106b34cf243d577a8b57c3baf57fb710448b88ade38" + ] + }, + { + "address": "0x6c618dd1040a79923cd74113ef0ed07c07d2b0e7", + "storageKeys": [ + "0x000000000000000000000000000000000000000000000000000000000000000c", + "0x0000000000000000000000000000000000000000000000000000000000000008", + "0x0000000000000000000000000000000000000000000000000000000000000006", + "0x0000000000000000000000000000000000000000000000000000000000000007", + "0x0000000000000000000000000000000000000000000000000000000000000009", + "0x000000000000000000000000000000000000000000000000000000000000000a" + ] + } + ], + "chainId": "0x1", + "v": "0x0", + "yParity": "0x0", + "r": "0xbb4c027501530e321903206f7cbaf17b7410586c68a6a75ffebd5a3c3f634232", + "s": "0x48896f0e5f5fec1b2d65c3cf6c04bd5ba55930b86f023b1059438343dc2e716e" + }, + { + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "from": "0xab97925eb84fe0260779f58b7cb08d77dcb1ee2b", + "gas": "0x15f90", + "gasPrice": "0x9b04d3d4", + "maxPriorityFeePerGas": "0x77359400", + "maxFeePerGas": "0x2e90edd000", + "hash": "0x341b093276998eaf55ba531d7cb2be1ff32f44a398c85b60d4180791cdadf218", + "input": "0x", + "nonce": "0x23db9d", + "to": "0xa5ccd022e4b4ac431deadb329e20aa76c4a80f5a", + "transactionIndex": "0x11", + "value": "0x3ff2e795f50000", + "type": "0x2", + "accessList": [], + "chainId": "0x1", + "v": "0x0", + "yParity": "0x0", + "r": "0xde0674de89b18bb5bc3c687263f58e7649bbc74344b35b95d891b22d465a5daf", + "s": "0x5729711edfae9add35453fd71f65a69aff60d1b7f7323efa79bfe19483b28bdf" + }, + { + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "from": "0xd24b2b3f3420cda82d40e0c8584b88ce7ec386e8", + "gas": "0xfde8", + "gasPrice": "0x4fb1722d", + "hash": "0xa7c324afd989fec33f0436d148f3e9ef90f7159b55075827aab7b72d6840a977", + "input": "0xa9059cbb0000000000000000000000005626213e557182a6d19048d29b535b5d7f5408be0000000000000000000000000000000000000000000000000000000129d00963", + "nonce": "0x0", + "to": "0xdac17f958d2ee523a2206206994597c13d831ec7", + "transactionIndex": "0x12", + "value": "0x0", + "type": "0x0", + "chainId": "0x1", + "v": "0x25", + "r": "0xa9a1b25fa18f5c88abb741c220dc4bea6660040c33c777fcac746a6edb6c4e86", + "s": "0x1f0d5d0cd66e7d4153759a7124be88be0e2fe6c9f7aa477b0604c6a6fb328266" + }, + { + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "from": "0x260b364fe0d3d37e6fd3cda0fa50926a06c54cea", + "gas": "0x15f90", + "gasPrice": "0x9b04d3d4", + "maxPriorityFeePerGas": "0x77359400", + "maxFeePerGas": "0x2e90edd000", + "hash": "0xe5cb77f931850a0890a14d4ae7f73fe1bad375114d0ccf680c7c744d1f73a045", + "input": "0xa9059cbb0000000000000000000000005a617641788bc9c3a91696eda1bb66c60034c9b60000000000000000000000000000000000000000000000000000000042636c39", + "nonce": "0x75b0", + "to": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48", + "transactionIndex": "0x13", + "value": "0x0", + "type": "0x2", + "accessList": [], + "chainId": "0x1", + "v": "0x0", + "yParity": "0x0", + "r": "0x957458fa189a658986928ed43f8867206b50af621a7311ecc38adc102f32dcd9", + "s": "0x9dd044eb1178b7b43402aa135d7be8ad5f4a3bbbd189a04c2be57b2f0f3b799" + }, + { + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "from": "0x5000afd95cbc51054caf4c5330342890ead87b70", + "gas": "0x3f950", + "gasPrice": "0x6b55cbd4", + "maxPriorityFeePerGas": "0x47868c00", + "maxFeePerGas": "0x792d1e40", + "hash": "0x6e1e0f9f8da08e644bd26763eb62a2b5dbe994ccfdc218de585989d06bdd1161", + "input": "0x3593564c000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000068a5d54f0000000000000000000000000000000000000000000000000000000000000003100604000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000044000000000000000000000000000000000000000000000000000000000000004c000000000000000000000000000000000000000000000000000000000000003c0000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000003070b0e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000022000000000000000000000000000000000000000000000000000000000000002a000000000000000000000000000000000000000000000000000000000000001a000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000001351609ff758000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000020000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4800000000000000000000000000000000000000000000000000000000000000640000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000060000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4800000000000000000000000027213e28d7fda5c57fe9e5dd923818dbccf71c4700000000000000000000000000000000000000000000000000000000000000190000000000000000000000000000000000000000000000000000000000000060000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb480000000000000000000000005000afd95cbc51054caf4c5330342890ead87b700000000000000000000000000000000000000000000000000000000015862eb60c", + "nonce": "0x117", + "to": "0x66a9893cc07d91d95644aedd05d03f95e1dba8af", + "transactionIndex": "0x14", + "value": "0x1351609ff758000", + "type": "0x2", + "accessList": [], + "chainId": "0x1", + "v": "0x0", + "yParity": "0x0", + "r": "0x50d994452bd34a1017f8dc01715c4314619e45386b47fdb5941c0774063c6e23", + "s": "0x19a353f77421f8b1b6f337318443ff1285049f98e20ed4fb696cf30d91fdb2a" + }, + { + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "from": "0xc35fb86f962ea955751a793a007b5cdd44f798d7", + "gas": "0x108bf", + "gasPrice": "0x2c523e86", + "hash": "0x8af00935a2db3f2e066c91359011f9e29093f62a7616e816413f2710dbfc4b41", + "input": "0x23b872dd0000000000000000000000007d7990b713c3497937fac4331176c127710b97d500000000000000000000000016fbc59070699f26c094fa8716b743561e0c53d300000000000000000000000000000000000000000000000000000000148b1abe", + "nonce": "0x62c25", + "to": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48", + "transactionIndex": "0x15", + "value": "0x0", + "type": "0x0", + "chainId": "0x1", + "v": "0x25", + "r": "0xa427d9860091d1c471e62fd44eb20562ed1cd42cd34fa0125a54479dc408d9d7", + "s": "0xdff66fea1e4737178aefac617bc5141e942818d9f6ef234add9380d741a9d06" + }, + { + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "from": "0x5de41533c43766bb1181de4826a7f8f2e4e64549", + "gas": "0x5208", + "gasPrice": "0x330fb22a", + "hash": "0x7c406076c4f872219370ca69e2e9dfb8096c47f514615aecda99577551b8cba1", + "input": "0x", + "nonce": "0x0", + "to": "0x0c8aa5263afde3c43a0fe88aed2b10ade922e666", + "transactionIndex": "0x16", + "value": "0x6c8ae427399ab0", + "type": "0x0", + "chainId": "0x1", + "v": "0x26", + "r": "0xc579b2efa5d6a1c35c409381fd366c9a02410bb576fd9382bdb8e8658b8263f1", + "s": "0x6e4bc46e650c4bb7c05f82bff0def0922414b9844680f7282425a21787443a9c" + }, + { + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "from": "0x3ffa6671d869ae0d923a17505e633e700fb8e35a", + "gas": "0x3d090", + "gasPrice": "0x14bfac694", + "maxPriorityFeePerGas": "0x12a05f200", + "maxFeePerGas": "0x14bfac694", + "hash": "0xef7c2d4ba0dbc86ccfd07a62ca7f843ea8cdc1587011fd8c14ba640f1535ac79", + "input": "0xa9059cbb000000000000000000000000842264311e492fdb425e8430472b6f9a4f66048300000000000000000000000000000000000000000000000000000000001ed2a0", + "nonce": "0x1c", + "to": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48", + "transactionIndex": "0x17", + "value": "0x0", + "type": "0x2", + "accessList": [], + "chainId": "0x1", + "v": "0x0", + "yParity": "0x0", + "r": "0xd1394a94128159724fdda3ee2861ebdf90cee5622051e4e0033d09ee3f3dca4", + "s": "0x6dcb716ca9c8bb2d4a3a036dc128b5a9d6f3580aa94951a60402e4fab1622ae9" + }, + { + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "from": "0x552fe7e19ecd9789e57131c09712977b4d075cbe", + "gas": "0x5208", + "gasPrice": "0xd69f9dd4", + "maxPriorityFeePerGas": "0xb2d05e00", + "maxFeePerGas": "0xe158605f", + "hash": "0xac88e9bd517db66ea5eebd8caba9d5c33ddfce1f779eef3e6821e15510f4c864", + "input": "0x", + "nonce": "0x0", + "to": "0x76eeb4c8b149738a9b198d866c80e8087a0a4f17", + "transactionIndex": "0x18", + "value": "0x2e8f847e4fef28", + "type": "0x2", + "accessList": [], + "chainId": "0x1", + "v": "0x1", + "yParity": "0x1", + "r": "0xaadb63e5503f6f955be7a06acd51010c00e6d49a2f79f186648be38bd81513b0", + "s": "0x4f542d1920058fdbaa15289d3cea5ab96edec8a2a2ae581c82e733795dce227" + }, + { + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "from": "0x4791eb2224d272655e8d5da171bb07dd5a805ff6", + "gas": "0x186a0", + "gasPrice": "0x6a5efc76", + "maxPriorityFeePerGas": "0x6a5efc76", + "maxFeePerGas": "0x6a5efc76", + "hash": "0xda8bc5dc5617758c6af0681d71642f68ce679bb92df4d8cf48493f0cfad14e20", + "input": "0x2c7bddf4", + "nonce": "0x6233", + "to": "0x62b53c45305d29bbe4b1bfa49dd78766b2f1e624", + "transactionIndex": "0x19", + "value": "0x0", + "type": "0x4", + "accessList": [], + "chainId": "0x1", + "authorizationList": [ + { + "chainId": "0x1", + "address": "0x89046d34e70a65acab2152c26a0c8e493b5ba629", + "nonce": "0x2946", + "yParity": "0x1", + "r": "0xa8a2a3ccf59245a4e58e863d0df6bb76f9aa2cb9c1d7eff9a39f29169a89d2a8", + "s": "0x7733d3223be9565ec2f827564f966ed0af413a91153eaddf4f6ab3304ea259db" + } + ], + "v": "0x1", + "yParity": "0x1", + "r": "0x3b863c04d39f70e499ffb176376128a57481727116027a92a364b6e1668d13a7", + "s": "0x39b13f0597c509de8260c7808057e64126e7d0715044dda908d1f513e1ed79ad" + }, + { + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "from": "0xab97925eb84fe0260779f58b7cb08d77dcb1ee2b", + "gas": "0x15f90", + "gasPrice": "0x9b04d3d4", + "maxPriorityFeePerGas": "0x77359400", + "maxFeePerGas": "0x2e90edd000", + "hash": "0xd7938913fd206fc1ef384e45dada725badd5a3ff87a793d9c432b70488a7bcdb", + "input": "0x", + "nonce": "0x23db9e", + "to": "0xe401a6a38024d8f5ab88f1b08cad476ccaca45e8", + "transactionIndex": "0x1a", + "value": "0x3ff2e795f50000", + "type": "0x2", + "accessList": [], + "chainId": "0x1", + "v": "0x0", + "yParity": "0x0", + "r": "0x6989bb3ab8e8886cc26c334042057b945fbafb19338cfa4a108c42ab6132d789", + "s": "0x3ddf325b978ef21761cb821b85b5b15a65ef412099cc91104039b5da122b5186" + }, + { + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "from": "0xab97925eb84fe0260779f58b7cb08d77dcb1ee2b", + "gas": "0x15f90", + "gasPrice": "0x9b04d3d4", + "maxPriorityFeePerGas": "0x77359400", + "maxFeePerGas": "0x2e90edd000", + "hash": "0x80c2402d4dbfadb46899b4ceb48f3851c8be0d08eb399608b6966f401653e60d", + "input": "0x", + "nonce": "0x23db9f", + "to": "0x3b26af33b78b1414e40c83be39a6f1b924b1e08a", + "transactionIndex": "0x1b", + "value": "0x3ff2e795f50000", + "type": "0x2", + "accessList": [], + "chainId": "0x1", + "v": "0x1", + "yParity": "0x1", + "r": "0xb9d797a14458207ec151efc427bf04203e663450d412f2edcb687b4c5cc0625f", + "s": "0x5a1e4dee44c870e45ef0aeb6373c8f87c2767f624b9c1c5eb120d37caba21816" + }, + { + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "from": "0x2c61206798f1ab3bce5833ecdd4a78aeba2e6b36", + "gas": "0x247020", + "gasPrice": "0x23d05144", + "maxPriorityFeePerGas": "0x11170", + "maxFeePerGas": "0x8f0d1800", + "hash": "0x17a42c2526e9ea212781d9c40ee9348737b2f9815b53610366dfa3b571fcab70", + "input": "0xf83374d2000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000001200000000000000000000000000000000000000000000000000000000000000006000000000000000000000000b167d99000cec6232e3b27f7f01d2b41c60f7fdc0000000000000000000000003b9c214a501b2ae33ab1793b57b09879a754f2ef000000000000000000000000c5327f8a6f6ea98928ff6a893d74a5cbc743f170000000000000000000000000f92c421115b1f11203abcfce78eed1aadad3e0a5000000000000000000000000f801db2654e911e922665c4cb885d8cca4c155bf000000000000000000000000c7e957681720875f3a2143f1afb72e7fb6ffdd78000000000000000000000000000000000000000000000000000000000000000600000000000000000000000073ada7d3ce2c1dcf9bb4100b650196ccc2ccdfa6000000000000000000000000df37c5d3eea96515faa286c30e8f6b05640cad00000000000000000000000000b21cef20389f300cdc7b2572f0a9a1afe62f4479000000000000000000000000f1edbdf579ad83cc86064bd089300b6b9362f084000000000000000000000000321166c624541dde00025d2d916d117410ba8421000000000000000000000000e1e82ee891f469897a815b0bfcc34dd5d597f76a", + "nonce": "0x4ba", + "to": "0xceb550db4b2f889782936bbedfe42ab406e8243d", + "transactionIndex": "0x1c", + "value": "0x0", + "type": "0x2", + "accessList": [], + "chainId": "0x1", + "v": "0x0", + "yParity": "0x0", + "r": "0xfbffa3c98d57923e4aabe7ddcad28263c456e4225c28bbe1c2bd989589120390", + "s": "0x3c04c706b36b0b24cf6c97b025eb29935a3112b4436bcc927ab82e0e8b0c28e8" + }, + { + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "from": "0xaf8648ea8cecb238158b6fdf3fd3faf57f7e5828", + "gas": "0x37d7e", + "gasPrice": "0x6b55cbd4", + "maxPriorityFeePerGas": "0x47868c00", + "maxFeePerGas": "0x792d1e40", + "hash": "0xb35c3c3a68b519d71d68889f3fb0a250f4deb043a8037c6e398875964cd505df", + "input": "0xfd9f1e10000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000044000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000bc0000000000000000000000000af8648ea8cecb238158b6fdf3fd3faf57f7e5828000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001600000000000000000000000000000000000000000000000000000000000000220000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000689fa0e400000000000000000000000000000000000000000000000000000000698ceee400000000000000000000000000000000000000000000000000000000000000003d958fe20000000000000000000000000000000000000000d7f47ee15044ce5c0000007b02230091a7ed01230072f7006a004d60a8d4e71d599b8104250f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000002000000000000000000000000364c828ee171616a39897688a831c2499ad972ec00000000000000000000000000000000000000000000000000000000000018b400000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000014b66cd7a745400000000000000000000000000000000000000000000000000014b66cd7a7454000000000000000000000000000af8648ea8cecb238158b6fdf3fd3faf57f7e5828000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001aa535d3d0c000000000000000000000000000000000000000000000000000001aa535d3d0c0000000000000000000000000000000a26b00c1f0df003000390027140000faa719000000000000000000000000af8648ea8cecb238158b6fdf3fd3faf57f7e5828000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001600000000000000000000000000000000000000000000000000000000000000220000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000689fa0e400000000000000000000000000000000000000000000000000000000698ceee400000000000000000000000000000000000000000000000000000000000000003d958fe20000000000000000000000000000000000000000a29357375656c9f90000007b02230091a7ed01230072f7006a004d60a8d4e71d599b8104250f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000002000000000000000000000000364c828ee171616a39897688a831c2499ad972ec0000000000000000000000000000000000000000000000000000000000000ef100000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000014b66cd7a745400000000000000000000000000000000000000000000000000014b66cd7a7454000000000000000000000000000af8648ea8cecb238158b6fdf3fd3faf57f7e5828000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001aa535d3d0c000000000000000000000000000000000000000000000000000001aa535d3d0c0000000000000000000000000000000a26b00c1f0df003000390027140000faa719000000000000000000000000af8648ea8cecb238158b6fdf3fd3faf57f7e582800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000160000000000000000000000000000000000000000000000000000000000000022000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000068a5c2e500000000000000000000000000000000000000000000000000000000699310e500000000000000000000000000000000000000000000000000000000000000003d958fe200000000000000000000000000000000000000002fe9624b3e78822e0000007b02230091a7ed01230072f7006a004d60a8d4e71d599b8104250f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000002000000000000000000000000364c828ee171616a39897688a831c2499ad972ec0000000000000000000000000000000000000000000000000000000000000ef1000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000139ba1106b264000000000000000000000000000000000000000000000000000139ba1106b264000000000000000000000000000af8648ea8cecb238158b6fdf3fd3faf57f7e58280000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000019396991e7c0000000000000000000000000000000000000000000000000000019396991e7c0000000000000000000000000000000a26b00c1f0df003000390027140000faa719000000000000000000000000af8648ea8cecb238158b6fdf3fd3faf57f7e582800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000160000000000000000000000000000000000000000000000000000000000000022000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000068a5c2e500000000000000000000000000000000000000000000000000000000699310e500000000000000000000000000000000000000000000000000000000000000003d958fe20000000000000000000000000000000000000000624359a486d8b48b0000007b02230091a7ed01230072f7006a004d60a8d4e71d599b8104250f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000002000000000000000000000000364c828ee171616a39897688a831c2499ad972ec00000000000000000000000000000000000000000000000000000000000018b4000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000139ba1106b264000000000000000000000000000000000000000000000000000139ba1106b264000000000000000000000000000af8648ea8cecb238158b6fdf3fd3faf57f7e58280000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000019396991e7c0000000000000000000000000000000000000000000000000000019396991e7c0000000000000000000000000000000a26b00c1f0df003000390027140000faa719", + "nonce": "0xb2", + "to": "0x0000000000000068f116a894984e2db1123eb395", + "transactionIndex": "0x1d", + "value": "0x0", + "type": "0x2", + "accessList": [], + "chainId": "0x1", + "v": "0x0", + "yParity": "0x0", + "r": "0x9f60f2ef3f5228b21403114f8429bbac75b92450e22f725fdb9b059a28c9dde9", + "s": "0x3602001215d9f8703ce93e1c669c67046b6bdf31dbb7fac375f3503d06e74135" + }, + { + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "from": "0xe75de7c288e72bb44ce46d4a795bb794bd19664b", + "gas": "0xfde8", + "gasPrice": "0x4fb1722d", + "hash": "0xffe56e6ac055509a585cbce2c45f16125695652d5214c2d06b0c4a1646780b0e", + "input": "0xa9059cbb000000000000000000000000408cb2bb16d073f0b6d4785fdab75b184e59e41e00000000000000000000000000000000000000000000000000000000831967dc", + "nonce": "0x1", + "to": "0xdac17f958d2ee523a2206206994597c13d831ec7", + "transactionIndex": "0x1e", + "value": "0x0", + "type": "0x0", + "chainId": "0x1", + "v": "0x26", + "r": "0xc783ef9fa2f5689c52282e1b3c225ba0e9d85a30e4ca12169d5983df4bdc2177", + "s": "0x7eeba7844d4faf91a651e8db26d93cb431e9e50eae0cbf4221ca20f189feafb2" + }, + { + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "from": "0x1cca465c62fb70741dd181ee86b53974db7d4122", + "gas": "0x8f028", + "gasPrice": "0x5f6a09d4", + "maxPriorityFeePerGas": "0x3b9aca00", + "maxFeePerGas": "0x686bea4e", + "hash": "0x58cf8b1080f939e17a12a98187292e9dbfc3fd075db5db577997b1ba7f26021c", + "input": "0x049639fb00000000000000000000000000000000000000000000000000000000000000040000000000000000000000003ffeea07a27fab7ad1df5297fa75e77a43cb5790000000000000000000000000eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee000000000000000000000000000000000000000049101d6a5ed6b6800bdcca4900000000000000000000000000000000000000000000000002b477372c53d68000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000022812aa3caf0000000000000000000000005141b82f5ffda4c6fe1e372978f1c5427640a1900000000000000000000000003ffeea07a27fab7ad1df5297fa75e77a43cb5790000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2000000000000000000000000bf16540c857b4e32ce6c37d2f7725c8eec869b8b000000000000000000000000a7ca2c8673bcfa5a26d8ceec2887f2cc2b0db22a000000000000000000000000000000000000000049101d6a5ed6b6800bdcca4900000000000000000000000000000000000000000000000002b477372c53d6800000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000014000000000000000000000000000000000000000000000000000000000000001600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008500000000000000000000000000000000000000000000000000000000006700206ae40711b8002dc6c0bf16540c857b4e32ce6c37d2f7725c8eec869b8b1111111254eeb25477b68fb85ed929f73a96058200000000000000000000000000000000000000000000000002b477372c53d6803ffeea07a27fab7ad1df5297fa75e77a43cb5790000000000000000000000000000000000000000000000000000000c4e3736f000000000000000000000000000000000000000000000000", + "nonce": "0x12", + "to": "0x3c11f6265ddec22f4d049dde480615735f451646", + "transactionIndex": "0x1f", + "value": "0x0", + "type": "0x2", + "accessList": [], + "chainId": "0x1", + "v": "0x1", + "yParity": "0x1", + "r": "0xd6d31bd1912778e81e5f6b147983f1af9dce728da7bc5b247fad6332b82bc0dc", + "s": "0x6131aa416e85c9334e456fe83d148a1c337131ef66c3e2e4fa229d37b7a7a237" + }, + { + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "from": "0x776e7ad582e7ccc660f628774c54dd5aad1f14a1", + "gas": "0x5208", + "gasPrice": "0x495818a5", + "maxPriorityFeePerGas": "0x2588d8d1", + "maxFeePerGas": "0x4c885df0", + "hash": "0x0230cf61b59c8ac739a7cced4477df1611842ca8faeadeab19307145889782a7", + "input": "0x", + "nonce": "0xd4", + "to": "0xb9bd424575359fcc3d3c1538b2e11e37fb517fcf", + "transactionIndex": "0x20", + "value": "0x1141817eaf3e29a", + "type": "0x2", + "accessList": [], + "chainId": "0x1", + "v": "0x1", + "yParity": "0x1", + "r": "0xd130c8627f94d5fc6655556e7a2a4431f35a1f1c2d4513e401b5a08a44c77044", + "s": "0x528d66e37ccaac4a4b30186de4483879bb625bf8c11e62bc9d84d5d4e0139c82" + }, + { + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "from": "0xaf31d6f4e3841b28c5b0581770ffaf2e1f558515", + "gas": "0x30d40", + "gasPrice": "0x4182b434", + "maxPriorityFeePerGas": "0x1db37460", + "maxFeePerGas": "0x4bfef4c0", + "hash": "0x30c4df0d162a8e6b3a0677be57584d0a50da42677eff50c900f15f36ca1ad7a9", + "input": "0x8703a14049cde59eeb9733a488b963e44544990641bab848f807b8ccb680947fe318ac28dd993d7af5d9873f1127af77a360d4f3c1018b5a8782d75c7509fe8d383311432833c2c8a293f0a2a7b1bbcdbcc53df43624b7dea2c3eaa1e640bc5c", + "nonce": "0x12", + "to": "0x0000bbddc7ce488642fb579f8b00f3a590007251", + "transactionIndex": "0x21", + "value": "0x1", + "type": "0x2", + "accessList": [], + "chainId": "0x1", + "v": "0x0", + "yParity": "0x0", + "r": "0xf4c3510a1569fc094383d9c522a07506d021f1cee66fe364bf428b496f544a7f", + "s": "0x2047793252aabaf72b58eddcd7923d2b2c45ed4dd0ce508f4b238f66005b6f00" + }, + { + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "from": "0x70df61c20275d9088c4e50c12de9af6d23276e5c", + "gas": "0x11056", + "gasPrice": "0x5f6a09d4", + "maxPriorityFeePerGas": "0x3b9aca00", + "maxFeePerGas": "0x6625e6dc", + "hash": "0x315141d0a9a6f772f7a151235bdc319a32aed88e0ddd6ca34a94f903cdecd562", + "input": "0xa9059cbb00000000000000000000000069275b5c10143c8fd1cbdb2637348b1558c736600000000000000000000000000000000000000000000000000000000001312d00", + "nonce": "0x9d", + "to": "0xdac17f958d2ee523a2206206994597c13d831ec7", + "transactionIndex": "0x22", + "value": "0x0", + "type": "0x2", + "accessList": [], + "chainId": "0x1", + "v": "0x1", + "yParity": "0x1", + "r": "0xb8bb48b4443aa7ac31be9a04bfc14052f538413cc573cc6d06966df1b5c07837", + "s": "0x6d225e5f06a50f60692de4fbc8c8fcdb0c2278ab06e011a41cfe961275baf414" + }, + { + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "from": "0x10fdba297c8da9fa8904ffd699ce81de5615985c", + "gas": "0xf519", + "gasPrice": "0x3fce7f68", + "maxPriorityFeePerGas": "0x1bff3f94", + "maxFeePerGas": "0x46071a12", + "hash": "0xd208e85483ab2355d80676863ecac1a0c67f2455f8af2bcaa68e6cc9bbf92fe6", + "input": "0xa9059cbb00000000000000000000000025d772eb5e0c9dcd7229c7b9158b1e6cb73dadc100000000000000000000000000000000000000000000000000000007aef40a00", + "nonce": "0x8", + "to": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48", + "transactionIndex": "0x23", + "value": "0x0", + "type": "0x2", + "accessList": [], + "chainId": "0x1", + "v": "0x0", + "yParity": "0x0", + "r": "0x4aaf48f73a9e21f8c180597170b013ba09472d5c94c168851a83557570a36ac8", + "s": "0x1718671522544df411a23b8e0155ebf4ab12d38060127d061a80a6496415022b" + }, + { + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "from": "0x9642b23ed1e01df1092b92641051881a322f5d4e", + "gas": "0x13015", + "gasPrice": "0xdc3a2c62", + "hash": "0x8e59ea830734462addb7c73571c2092c1d2bfcc0689987a2d08dd234827e5c5e", + "input": "0xa9059cbb000000000000000000000000a842ba73e0bfe9adeacd527570cc3ab2617de753000000000000000000000000000000000000000000000012f365a5d8850e0000", + "nonce": "0x1b5890", + "to": "0xcab84bc21f9092167fcfe0ea60f5ce053ab39a1e", + "transactionIndex": "0x24", + "value": "0x0", + "type": "0x0", + "chainId": "0x1", + "v": "0x26", + "r": "0x74a40f16aa4c3630e4c3db8bd0e858dc928c724db0420b5b876bd098b9323db5", + "s": "0x3e34780bc8530e360c420a89fa6d7c1f2ebf88fd7eb002ac040cc85d10393cd9" + }, + { + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "from": "0xb1b2d032aa2f52347fbcfd08e5c3cc55216e8404", + "gas": "0xea2c", + "gasPrice": "0x29c520d4", + "maxPriorityFeePerGas": "0x5f5e100", + "maxFeePerGas": "0x44978472", + "hash": "0xeb72be22b2d9521239741a245f8c90a561199b1df62649eea12f1d504fcf0511", + "input": "0xa9059cbb0000000000000000000000008e7dedd9b1a7fd101a08b1c95f3c602fe0d4b48600000000000000000000000000000000000000000000001fd4a70fe0b9180000", + "nonce": "0x1c5046", + "to": "0xc52c326331e9ce41f04484d3b5e5648158028804", + "transactionIndex": "0x25", + "value": "0x0", + "type": "0x2", + "accessList": [], + "chainId": "0x1", + "v": "0x0", + "yParity": "0x0", + "r": "0x7fa203846559204e74e4582bfd14c4d98956c8022e7a8d73b0b118c303ded8a", + "s": "0x332762ddece05a4bbc2a594955d7391791afcfcfdc36f9a8760c87ff8a396c60" + }, + { + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "from": "0x87fcc6982257de5bdaa679d08e56117aa0b5a5d1", + "gas": "0x40fc7", + "gasPrice": "0x251c128e", + "maxPriorityFeePerGas": "0x14cd2ba", + "maxFeePerGas": "0x2ae72a17", + "hash": "0x76f700f01e6e0fa014346c9e24bc544743540dd8992d4e08409f515c4112c3ad", + "input": "0x791ac9470000000000000000000000000000000000000000000000000002dc9608740d6e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000087fcc6982257de5bdaa679d08e56117aa0b5a5d10000000000000000000000000000000000000000000000000000000068a5ce8f0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000cced7736d6781f2a3aa9c7a2a24fea935c9fa9f8000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2", + "nonce": "0xa", + "to": "0x7a250d5630b4cf539739df2c5dacb4c659f2488d", + "transactionIndex": "0x26", + "value": "0x0", + "type": "0x2", + "accessList": [], + "chainId": "0x1", + "v": "0x0", + "yParity": "0x0", + "r": "0x14a1376af91b40ed1ee0d2bbbc52fa168060bff14acf003ff760af7ea20d9a2a", + "s": "0x34f01622feaf1ef0d6d97056a19eb020a053e71f2ae08555a5dd3952b4815922" + }, + { + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "from": "0xf51710015536957a01f32558402902a2d9c35d82", + "gas": "0x15f90", + "gasPrice": "0x338a0fe7", + "maxPriorityFeePerGas": "0xfbad013", + "maxFeePerGas": "0x746a528800", + "hash": "0xf01b080912591defbcce2bb82770072f83b3a91a83ccf4bd7d54893f8cb9cbae", + "input": "0x", + "nonce": "0x6492b", + "to": "0x6f4bb3d0625b2cfd4400c6834943fde26c057f7a", + "transactionIndex": "0x27", + "value": "0x635fb4242c74000", + "type": "0x2", + "accessList": [], + "chainId": "0x1", + "v": "0x0", + "yParity": "0x0", + "r": "0x694607d920514e4044689d082d84e6bedbc5447613695e7b3c27e42bdcbdfe0e", + "s": "0x6c2b2f93ae2ff8d04a698cbf4f3bd1637a6206018e9e8b084d2f77fc7a0dcb9c" + }, + { + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "from": "0x9696f59e4d72e237be84ffd425dcad154bf96976", + "gas": "0x32918", + "gasPrice": "0x29c520d4", + "maxPriorityFeePerGas": "0x5f5e100", + "maxFeePerGas": "0x17bfac7c00", + "hash": "0xfd26a9f8e2db5d764cf715384c0bfac63f02b7562b0e6f955709d4da06ef261c", + "input": "0x", + "nonce": "0x7b73f9", + "to": "0x19d315d10037a99d54d099a13e5e3a99a826ecae", + "transactionIndex": "0x28", + "value": "0xaf799de600c00", + "type": "0x2", + "accessList": [], + "chainId": "0x1", + "v": "0x1", + "yParity": "0x1", + "r": "0x401a4ceafae4577e72043c1a3bdaa91a648218e42e56db29fbde1021e3d52f0d", + "s": "0x2bfd49ed4fe208497ae427e0fc7e2a0c4326e0610b0d0e39a256b61f68fb0c8f" + }, + { + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "from": "0x4976a4a02f38326660d17bf34b431dc6e2eb2327", + "gas": "0x32918", + "gasPrice": "0x29c520d4", + "maxPriorityFeePerGas": "0x5f5e100", + "maxFeePerGas": "0x17bfac7c00", + "hash": "0xea9ffed304d53fbaabf6114693e8bb852ce67b3246f6db6bf20e2bb63c606cb6", + "input": "0x", + "nonce": "0x4f278f", + "to": "0x7a9c7afb0673dfb0cacb2bfde0a55c873c59fe1c", + "transactionIndex": "0x29", + "value": "0x37e23e15c27000", + "type": "0x2", + "accessList": [], + "chainId": "0x1", + "v": "0x1", + "yParity": "0x1", + "r": "0x436d711ad2dc2eaa545612cfcd02c7e8d6be2f26da4030cd8e98e9178a364c06", + "s": "0x41020c56073ae7c1132d74bea483d74dfefdc89e7f4a49c8fefbdc529d625f47" + }, + { + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "from": "0x6dce2424e724a02d231cbcf64edeee8d15bd9e4b", + "gas": "0x5208", + "gasPrice": "0x27e37c7e", + "maxPriorityFeePerGas": "0x27e37c7e", + "maxFeePerGas": "0x27e37c7e", + "hash": "0x6bbd906f6a605b46a4863de27fbd8497f1e320ddb54b8daf1c932fb25ecce27b", + "input": "0x", + "nonce": "0x9", + "to": "0xb386dff391830280763869d8f416206d16289e31", + "transactionIndex": "0x2a", + "value": "0xa9bb3d1574010", + "type": "0x2", + "accessList": [], + "chainId": "0x1", + "v": "0x0", + "yParity": "0x0", + "r": "0x60a484d887401d328b4753991e25d50f90f651a136efb6cd1dad61fbc1db9c04", + "s": "0x55346221ba438e894b9d1a17d2bc1676c942d2966a1e0686afd19563ff72a5cb" + }, + { + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "from": "0x2d0d297c319be90844fab9b4ee070b8a81243163", + "gas": "0x1776d", + "gasPrice": "0x3b9aca00", + "hash": "0x3f164f5ef4d0c9cea6fd7defbda6abdfb3f6dd12957fe85f721d1443e8ac1998", + "input": "0xa9059cbb000000000000000000000000cff7b816bdcc412d3a8ee0461ba7a30a9b6a5cac00000000000000000000000000000000000000000000000000000000da054a19", + "nonce": "0x6", + "to": "0xdac17f958d2ee523a2206206994597c13d831ec7", + "transactionIndex": "0x2b", + "value": "0x0", + "type": "0x0", + "chainId": "0x1", + "v": "0x26", + "r": "0xa9c6d1ef65c0290498a2788c225c6602924359c000ee4e8ccdaccb6e199b696f", + "s": "0x157545cc15cdb06b6c67749fee395fda7c768ca23c43d5ef69059c7e3630eefa" + }, + { + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "from": "0xb5357b69181efcf8f6f45198b601e21e270a20ff", + "gas": "0x5208", + "gasPrice": "0x261331f8", + "maxPriorityFeePerGas": "0x3861426", + "maxFeePerGas": "0x261331f8", + "hash": "0xe79c391b1b8ee215a67c818d1b3318872b9c8282d8ea3956349a831fa7fffbcd", + "input": "0x", + "nonce": "0x18", + "to": "0x7bf38c17a6519dd17842bc37044cc30b92b81dc5", + "transactionIndex": "0x2c", + "value": "0x38d7ea4c68000", + "type": "0x2", + "accessList": [], + "chainId": "0x1", + "v": "0x0", + "yParity": "0x0", + "r": "0xce1f442f77e65b6ed7442ec68b12e90cdd2213c39d2b05c1a0fdb0c3b8330104", + "s": "0x57c413c84e94dfce00d71ccbfaec6f812d4c543afc07b6f9a4f1eacbb3a07176" + }, + { + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "from": "0x2cff890f0378a11913b6129b2e97417a2c302680", + "gas": "0x5208", + "gasPrice": "0x23d0d9fc", + "maxPriorityFeePerGas": "0x19a28", + "maxFeePerGas": "0x46e974ec", + "hash": "0x124c9963d0414550d86a8c6d796b054f04ab221dfd4df6fc37135a5d2a33ed09", + "input": "0x", + "nonce": "0x43c8", + "to": "0xa455eb2c7a4f4b90106cad96cc9c36e62cd46806", + "transactionIndex": "0x2d", + "value": "0xe337fe1d2d2a6", + "type": "0x2", + "accessList": [], + "chainId": "0x1", + "v": "0x1", + "yParity": "0x1", + "r": "0xe3bbe13001aa15f6223d1b562aab56b9343279396285a4bd358c1a8d92b09135", + "s": "0x79575a6f819c568d1c72532d91978821fd0686d895431aab07410b608afa6f11" + }, + { + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "from": "0x0da475ffc29623e805bbcf7216ea8a438209882c", + "gas": "0x7b0c", + "gasPrice": "0x23d0d9fc", + "maxPriorityFeePerGas": "0x19a28", + "maxFeePerGas": "0x32ef3ede", + "hash": "0x4d99f405c49268e1d4a3845a46e54178c6b1becd3e2dacc512d18007f1be3076", + "input": "0x", + "nonce": "0x5", + "to": "0x4762631fdff1a1fed3eedf95a685d57007cf9b43", + "transactionIndex": "0x2e", + "value": "0x9ee5c3eb92dba", + "type": "0x2", + "accessList": [], + "chainId": "0x1", + "v": "0x0", + "yParity": "0x0", + "r": "0xc6aa87874762cd830219c5dee3a2b40908e647cfcfce00c7ffff7ef2d10cb7be", + "s": "0x20a2562942cfadedc56e9caaf5de99d3486fe9fb0421e154c3bced4abde03c20" + }, + { + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "from": "0x6f0a91ef8adeb54db0e63be507747ab9a31d3926", + "gas": "0x25fc3", + "gasPrice": "0xa3c4056e0", + "maxPriorityFeePerGas": "0xa3c4056e0", + "maxFeePerGas": "0xa3c4056e0", + "hash": "0x70383933da0c9016ae0e7d79cd334df0c31172ad4c55640e4010269ef28923e5", + "input": "0x122067ed0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e0554a476a092703abdb3ef35c80e0d76d32939f000000000000000000000000000000000000000000000000672ed4843c7fdc000000000000000000000000000000000000000000000000000000000739cf796700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000068a5ce6300000000000000000000000000000000000000000000000000000000000000e00000000000000000000000000000000000000000000000000000000000000014c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2000000000000000000000000", + "nonce": "0xcb4e", + "to": "0x51c72848c68a965f66fa7a88855f9f7784502a7f", + "transactionIndex": "0x2f", + "value": "0x0", + "type": "0x2", + "accessList": [], + "chainId": "0x1", + "v": "0x0", + "yParity": "0x0", + "r": "0xfbcf5ebf202ea38778ea135d8b30a7f1ab7d94e93914d34c62135da9d27b9064", + "s": "0x65e245ab4abac1126c0157973bd49c52bfee4de99e517cad4877111987f12cab" + }, + { + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "from": "0xdada79040afa6ac7d7660e7e18f8a9b82c31f49a", + "gas": "0x5f3cb", + "gasPrice": "0xe53094a6", + "maxPriorityFeePerGas": "0xe53094a6", + "maxFeePerGas": "0xe53094a6", + "hash": "0xcc22c7f26e825e0c86c4377e428f16feb525bf5b81d845c52e1bb0921384ecc1", + "input": "0x6440a7b40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d51a44d3fae010294c616388b506acda1bfaae460000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013464f00da49360000000000000000000000000000000000000000000000000000000001598ad015000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec70000000000000000000000000000000000000000000000000000000068a5ce63", + "nonce": "0x10e63", + "to": "0xec6fc9be2d5e505b40a2df8b0622cd25333823db", + "transactionIndex": "0x30", + "value": "0x0", + "type": "0x2", + "accessList": [], + "chainId": "0x1", + "v": "0x1", + "yParity": "0x1", + "r": "0x3857dd7e7abb2727d39efde59b70914a66843584afe2b957fd03c2e53d0daacb", + "s": "0x4e4936c5e78688096ce0b452f5c896b83587602b81f71c51c305a48c4e27d734" + }, + { + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "from": "0xebedc8e9ff409b23dd251f87ccbffa8075f87255", + "gas": "0x3a4ff", + "gasPrice": "0x153bf91bc", + "maxPriorityFeePerGas": "0x153bf91bc", + "maxFeePerGas": "0x153bf91bc", + "hash": "0x53a25cc5a3c26afe402f6856abc3518ab64554f07608d4917160d0de63ffb05b", + "input": "0xfb034fb200000000000000000000000000000000000000000000000000000000000000000000000000000000000000007f86bf177dd4f3494b841a37e810a34dd56c829b0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000016c1d8e56b0900000000000000000000000000000000000000000000000000000000000197f33a5e", + "nonce": "0xccb6", + "to": "0x51c72848c68a965f66fa7a88855f9f7784502a7f", + "transactionIndex": "0x31", + "value": "0x0", + "type": "0x2", + "accessList": [], + "chainId": "0x1", + "v": "0x0", + "yParity": "0x0", + "r": "0xb816f82aef3895d4fd4645f077aaf5516a8e85b7a07b6747627b9d96067b97b", + "s": "0xd6e1b7c3b82321ec4cb1434197195f05296c32d6d0d83e921cad948c4e87ad3" + }, + { + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "from": "0xac8b6e55c809e4dd83dc9943cf460c1caca84125", + "gas": "0x31759", + "gasPrice": "0x3a5d5e6a8d", + "maxPriorityFeePerGas": "0x3a5d5e6a8d", + "maxFeePerGas": "0x3a5d5e6a8d", + "hash": "0x1df496bb45ca13107e0e19ee8e50438b66726b3e2da50c2d46c44c5d6d05a2e3", + "input": "0x020bf14f000000000000000000000000000000000000000000000000000000000000000000000000000000000000000021c67e77068de97969ba93d4aab21826d33ca12b000000000000000000000000000000000000000000000002f58e79a84de88000000000000000000000000000000000000000000000000000000000350c4f7e6b00000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000068a5ce63", + "nonce": "0x176", + "to": "0xba47cbfdd61029833841fcaa2ec2591ddfa87e51", + "transactionIndex": "0x32", + "value": "0x0", + "type": "0x2", + "accessList": [], + "chainId": "0x1", + "v": "0x0", + "yParity": "0x0", + "r": "0x393387ba9ae21992ccf8f5e4a1a042309dabfed3b76816d801f33441850c8894", + "s": "0x907bb95211c9212ee648dcb3664d7112de73ca2d59c2eac0ae43e5a36b8e4d4" + }, + { + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "from": "0xeaa9ebddd373c4bd8bb92dfcc9c7e7fcdb268e51", + "gas": "0x26506", + "gasPrice": "0x182f2c39bc", + "maxPriorityFeePerGas": "0x182f2c39bc", + "maxFeePerGas": "0x182f2c39bc", + "hash": "0x7e0a9525cc71210dae4368d25b22c432b8b7ae38936fa0052bacf5036fe5f306", + "input": "0x122067ed000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011b815efb8f581194ae79006d24e0d814b7697f6000000000000000000000000000000000000000000000000defc43c79ba7e0000000000000000000000000000000000000000000000000000000000f9cdd60a200000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000068a5ce6300000000000000000000000000000000000000000000000000000000000000e00000000000000000000000000000000000000000000000000000000000000014c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2000000000000000000000000", + "nonce": "0xcbde", + "to": "0x51c72848c68a965f66fa7a88855f9f7784502a7f", + "transactionIndex": "0x33", + "value": "0x0", + "type": "0x2", + "accessList": [], + "chainId": "0x1", + "v": "0x1", + "yParity": "0x1", + "r": "0x8181bd9af20a0bb0dc4b72f4daf530e13834b91fa4e53859e2c2dc626944e04c", + "s": "0x67d290c1f08200040d2cb664791c6fe566f8e80369033eb170319a987b0bcfa4" + }, + { + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "from": "0x45923a43492d0deb458cb97c4ca8b7ccb0a20c71", + "gas": "0x32150", + "gasPrice": "0xee6546334", + "maxPriorityFeePerGas": "0xee6546334", + "maxFeePerGas": "0xee6546334", + "hash": "0x07b3229c57fab47e183ee215ba5fa2a3364c56d64316f75ae86747d2fc316002", + "input": "0x020bf14f000000000000000000000000000000000000000000000000000000000000000000000000000000000000000072331fcb696b0151904c03584b66dc8365bc63f8000000000000000000000000000000000000000000000000b47a1942be73e8000000000000000000000000000000000000000000000000000000000ca2e6c8ca00000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000068a5ce63", + "nonce": "0x175", + "to": "0xba47cbfdd61029833841fcaa2ec2591ddfa87e51", + "transactionIndex": "0x34", + "value": "0x0", + "type": "0x2", + "accessList": [], + "chainId": "0x1", + "v": "0x0", + "yParity": "0x0", + "r": "0x5ed24d08d0c52fef6c1561414763233453db75bf38c6756c1951eadf28cf29c6", + "s": "0x1fe1052938e1cc0e215aaccf274c3102e981eac2d9124e2d8fcf5f9c3e534ef8" + }, + { + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "from": "0x639b2d751e6436667b97fe350c0fed111fc33fb4", + "gas": "0x61a80", + "gasPrice": "0x23cf3fd5", + "maxPriorityFeePerGas": "0x1", + "maxFeePerGas": "0x4a817c800", + "hash": "0x402d2311d7b2cea94653c9e5e708cec48f8e7886a1ae2dc1f37460525c5853a4", + "input": "0xa41e223e0000000000000000000000000000000000000000000000000000000068a5ce5b000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb480000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000006400000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005cba739d65838c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000043b8825a96b1a40000000000000000000000000000000000000000011e9a3cf9af7e9000000000000000000000000000000000000000000000000000000000000000000000000000001c00000000000000000000000000000000000000000000000000000000000001999000000000000000000000000000000000011e9691e21c02d00000000000000000000000000000000000000000000000000000000000000000000000000000000", + "nonce": "0x2b2", + "to": "0xeff6cb8b614999d130e537751ee99724d01aa167", + "transactionIndex": "0x35", + "value": "0x0", + "type": "0x2", + "accessList": [], + "chainId": "0x1", + "v": "0x0", + "yParity": "0x0", + "r": "0xe5763e58ce01fe198e8df0167b1bf1394c174d79408e08a48f4038d608f445e9", + "s": "0x3eb7ffc7b76bee7f3e868de32bdee668c9817e88c6f29eb8afe2d475e61e2b0" + }, + { + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "from": "0x5c132e26694e1f3bad52a4f55c9cfd0f181d7463", + "gas": "0x61a80", + "gasPrice": "0x23cf3fd5", + "maxPriorityFeePerGas": "0x1", + "maxFeePerGas": "0x4a817c800", + "hash": "0xc04f925427a29481b736474a2746ece9b5fad1cf598758bca8b830f2b1e0b48d", + "input": "0x92928cad0000000000000000000000000000000000000000000000000000000068a5ce5b0000000000000000000000007df7c84f2f9dcef3c0813e539878b76b89a916f80000000000000000000000002dff88a56767223a5529ea5960da7a3f5f766406000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4800000000000000000000000000000000000000000000007a9126f567e1700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000069c1adf3fbff1400000000000000000000000000000000000000000002b947d2d96c9ce0000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000011e92ef2bc10760000000000000000", + "nonce": "0x117", + "to": "0xeff6cb8b614999d130e537751ee99724d01aa167", + "transactionIndex": "0x36", + "value": "0x0", + "type": "0x2", + "accessList": [], + "chainId": "0x1", + "v": "0x1", + "yParity": "0x1", + "r": "0xd349d67cfc4e26f5bc84ef21edb19db953b8a83181d675d82dab505635fac148", + "s": "0x1ced1890562e403f87a2088313fd03db667a70bdf5dbd79a7e3f12725184a48b" + }, + { + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "from": "0x69021e92840bd777cf2c495f3be516700e430a5b", + "gas": "0x61a80", + "gasPrice": "0x23cf3fd5", + "maxPriorityFeePerGas": "0x1", + "maxFeePerGas": "0x4a817c800", + "hash": "0x1b749e72067a68bfa58cfa9619740526b9d32cc512ece7d3f7e28f53451da460", + "input": "0xa41e223e0000000000000000000000000000000000000000000000000000000068a5ce5b0000000000000000000000002260fac5e5542a773aa44fbcfedf7c193bc2c599000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec7000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000004e20000000000000000000000000000000000000000000000000000000000000019000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000077ab64900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000021ac6aeaccbcfc000000000000000000000000000000000000046c7cd6e0d4198000000000000000000000000000000000000000000000000000000000000000000000000000000000000001c00000000000000000000000000000000000000000000000000000000000001999000000000000000000000000000000000011e9969a97d7b100000000000000000000000000000000000000000000000000000000000000000000000000000000", + "nonce": "0x180", + "to": "0xeff6cb8b614999d130e537751ee99724d01aa167", + "transactionIndex": "0x37", + "value": "0x0", + "type": "0x2", + "accessList": [], + "chainId": "0x1", + "v": "0x0", + "yParity": "0x0", + "r": "0x63e8f5ff5376e49a8606fb7f67d3d69fa71977edecd3355904b688f56cc8800c", + "s": "0x3ca634692b8971f2fdc0daf2e5b3685430045999b3a05f43802aa36f2ff889c8" + }, + { + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "from": "0x545da54509ef233642343b8beac5ef4443e79d73", + "gas": "0x328da", + "gasPrice": "0x36eb8fdca", + "maxPriorityFeePerGas": "0x36eb8fdca", + "maxFeePerGas": "0x36eb8fdca", + "hash": "0x4d7804919a1739d0784249538bcebd71a3e448cd1091e25ab17205686e28405c", + "input": "0xd44db9b600000000000000000000000000000000000000000000000000000000000000000000000000000000000000006ca298d2983ab03aa1da7679389d955a4efee15c0000000000000000000000000000000000000000000000002680cb38d1649c0000000000000000000000000000000000000000000000000000000002b22a042c00000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000068a5ce6300000000000000000000000000000000000000000000000000000000000000e00000000000000000000000000000000000000000000000000000000000000014c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2000000000000000000000000", + "nonce": "0x4475", + "to": "0x3b55732f6d3997a7d44a041b8496e1a60712a35f", + "transactionIndex": "0x38", + "value": "0x0", + "type": "0x2", + "accessList": [], + "chainId": "0x1", + "v": "0x1", + "yParity": "0x1", + "r": "0xf65b1a5097eb0d9af81ea0630d3df35c166ba0d6c7f8bda028cdefb07156793b", + "s": "0x5e2d06cbce62a0c8cbf6186014e4d99364d3c080f368fc38713ba5d969a031c1" + }, + { + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "from": "0x448166a91e7bc50d0ac720c2fbed29e0963f5af8", + "gas": "0x668a0", + "gasPrice": "0x214369152", + "maxPriorityFeePerGas": "0x1f067517e", + "maxFeePerGas": "0x214369152", + "hash": "0x9ad517969b986fe44221f228b4e1b5949c99d08e5a96f4cc0deff9d446ca6cc1", + "input": "0x000000cc000000000000000000000000836951eb21f3df98273517b7249dceff270d34bf0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb480000000000000000000000000000000000000000000000007bde86a2e53bb9a600000000000000000000000000000000000000000000000000000008ac01b3f7", + "nonce": "0x6e984", + "to": "0xfbd4cdb413e45a52e2c8312f670e9ce67e794c37", + "transactionIndex": "0x39", + "value": "0x161bd0f", + "type": "0x2", + "accessList": [], + "chainId": "0x1", + "v": "0x1", + "yParity": "0x1", + "r": "0x3c226a72302c824f086ba712b16b8171d20e02c3c66a46bfe1ef2221cadd7a19", + "s": "0x2521c3058f7ccfe4ea90fbdbd3e50e81074b0f942414946acea4c38e4eb984a3" + }, + { + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "from": "0x7f982f64ee9dfd024acb8c2abb5884fef0b9d440", + "gas": "0x8a81d", + "gasPrice": "0x1ebd76860", + "maxPriorityFeePerGas": "0x1ebd76860", + "maxFeePerGas": "0x1ebd76860", + "hash": "0x6ed161a1dd005c48b937d8f5049e8b0136693552e6eae52f3ee14f345683eeed", + "input": "0x4a7cf36200000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000014000000000000000000000000000000000000000000000000000000000000001e000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000ab81f100000000000000000000000000000000000000000000000000000000000000040000000000000000000000007fc66500c84a76ad7e9c93437bfc5ac33e2ddae9000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec7000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec70000000000000000000000007fc66500c84a76ad7e9c93437bfc5ac33e2ddae900000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000c097ce7bc90715b34b9f1000000000000000000000000000000000009cd692d05830b8000000000000000000000000000000000000000000000000000000000000000000000002b5e3af16b188000000000000000000000000000000000000000000000000000000000003548cbd9800000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000030000000000000000000000005236333ef2baa45b450689b69e4e4b277d84f9540000000000000000000000000000000000000000000000000000000354afaf87000000000000000000000000000000000000000000000002b5e3af16b18800000000000000000000000000000000000000000000000000000000000068a5d534c38ba9abdb3bfd3bd5af820b0f5294c179238e8bf49f66530d7ab4d942b1443200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000002b5e3af16b188000000000000000000000000000000000000000000000000000000000000000001600000000000000000000000000000000000000000000000000000000000000041c06548f979488f40a5e67df89044c31cc8c09cdcddead87b922fdc90415dfdfd5333c8b7fcdd848988feada2c472c936aba57bbefb8d2240eadfaa62b84aa63c1b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000003c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000020000000000000000000000000bbbbbbb520d69a9775e85b458c58c648259fad5f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000002644dcebcba0000000000000000000000000000000000000000000000000000000068a5ce720000000000000000000000009008d19f58aabd9ed0d60971565aa8510560ab4100000000000000000000000051c72848c68a965f66fa7a88855f9f7784502a7f000000000000000000000000000000000000000000000000000004c99ea11513000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec70000000000000000000000007fc66500c84a76ad7e9c93437bfc5ac33e2ddae9000000000000000000000000000000000000000000000000000000035413c376000000000000000000000000000000000000000000000002b5e3af16b18800000000000000000000000000009008d19f58aabd9ed0d60971565aa8510560ab410000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000041d9d399148666c7ec4ac0b54a5b579279768fb1b04c28207ac772116827972c98367096e6131fcc8dcd85a0b3c05fce18365c506f84823db8dfd8c6b0a42b94ad1c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "nonce": "0xaa4", + "to": "0x4dd1be0cd607e5382dd2844fa61d3a17e3e83d56", + "transactionIndex": "0x3a", + "value": "0x0", + "type": "0x2", + "accessList": [], + "chainId": "0x1", + "v": "0x1", + "yParity": "0x1", + "r": "0xe005032dc6a82456cf452e127796330c03d2409f751fa0d215fc97c7c025c65d", + "s": "0x2559d38504e632d1223adbee990aac226371a2f0161465a636135f5e3bf56d12" + }, + { + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "from": "0x55823001c8cd87a6e86716ca768bce51f2d89c9c", + "gas": "0x33450", + "gasPrice": "0x9b04d3d4", + "maxPriorityFeePerGas": "0x77359400", + "maxFeePerGas": "0x74e1881c00", + "hash": "0xbc730be36c276ca5a0a02eeaa192ed302cf87c7453ad567e22fc951a0bf8d7e8", + "input": "0xb61d27f6000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000044a9059cbb000000000000000000000000ce5586f0fbe00a3efbfc8d2caa714fdbe6a052eb0000000000000000000000000000000000000000000000000000000129fc57bd00000000000000000000000000000000000000000000000000000000", + "nonce": "0xe79", + "to": "0xf7b52be96b229dc63e6301bea175a1b5f756c274", + "transactionIndex": "0x3b", + "value": "0x0", + "type": "0x2", + "accessList": [], + "chainId": "0x1", + "v": "0x0", + "yParity": "0x0", + "r": "0x61d71d5dae66567f1be32e4419e475498180c144f0f23186160aa19262689b35", + "s": "0x6b1165bed38ac44740c0197ba42d72935f886c0da4ddd1483c90c48638b9c081" + }, + { + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "from": "0x8611abf54b7ad26ccbfe99a213c201ee60dba0e5", + "gas": "0x1200c5", + "gasPrice": "0x5f6a09d4", + "maxPriorityFeePerGas": "0x3b9aca00", + "maxFeePerGas": "0x6625e6dc", + "hash": "0x8a80899afccd55cad486357cf5ffc1092a592a339d9d6c5935d25b5324d72e73", + "input": "0x6e553f6500000000000000000000000000000000000000000000000000000000000f42400000000000000000000000008611abf54b7ad26ccbfe99a213c201ee60dba0e5", + "nonce": "0x1", + "to": "0x13a5a916356242879b9509fd12bf8e4760a3f438", + "transactionIndex": "0x3c", + "value": "0x0", + "type": "0x2", + "accessList": [], + "chainId": "0x1", + "v": "0x1", + "yParity": "0x1", + "r": "0xc15c3beb2643397b167f73e4208a1e18161f957666ff3af4f9d774f5ac4dd632", + "s": "0x326866003f73e568f94506656a79970bb45a753f003f0dda6c4edffc3fd4999a" + }, + { + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "from": "0x9642b23ed1e01df1092b92641051881a322f5d4e", + "gas": "0xc350", + "gasPrice": "0xdc3a2c62", + "hash": "0x6ae2f1fd6116d2b93223ae3548caf9d85e43d8fefec88814d36f38b916bab652", + "input": "0x", + "nonce": "0x1b5891", + "to": "0x1b216d8b75a050041e59860ff7fda6e3411424f4", + "transactionIndex": "0x3d", + "value": "0x6b7dabf453000", + "type": "0x0", + "chainId": "0x1", + "v": "0x25", + "r": "0x2f2d6b2ee27fd239872543e343d55042c629adeefce711b422b1c052f637f634", + "s": "0x7ac630b345cde63c4a3a2bf0e82ec1792dfeabf9ad958abead10f53363ab7e36" + }, + { + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "from": "0x9642b23ed1e01df1092b92641051881a322f5d4e", + "gas": "0xc350", + "gasPrice": "0xdc3a2c62", + "hash": "0x3991e33f52ae3cf5167bf1f07cc8d358caf226022c5128ad991fe279b702a27d", + "input": "0x", + "nonce": "0x1b5892", + "to": "0x2e17aa7437b4ac446e5750202ab1d48c7884f5d9", + "transactionIndex": "0x3e", + "value": "0x7fbdd3efbad000", + "type": "0x0", + "chainId": "0x1", + "v": "0x25", + "r": "0x9334bfd70e73391955cafbab1a4a3fe0d6f45cbf125612a582de6928ada229df", + "s": "0x47de964d62eb82bab8f037f3ec8bc0c62f8b4101e53e26ff7de95948bb351389" + }, + { + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "from": "0x9642b23ed1e01df1092b92641051881a322f5d4e", + "gas": "0x13015", + "gasPrice": "0xdc3a2c62", + "hash": "0xed80b011a517f5aab29dc7b79061fd54b68cc36c2023bfaff2812be53328e7fd", + "input": "0xa9059cbb000000000000000000000000a882df02283fa89d5659a870414e2c1803fd54ca00000000000000000000000000000000000000000000000ab407c9eb05200000", + "nonce": "0x1b5893", + "to": "0xcab84bc21f9092167fcfe0ea60f5ce053ab39a1e", + "transactionIndex": "0x3f", + "value": "0x0", + "type": "0x0", + "chainId": "0x1", + "v": "0x26", + "r": "0xd532b623026c3bb4d210427ab27abe9e2b6d6e9cfb0cabc64b8da3fcf3290d06", + "s": "0x7b26ad69f11e8a11058bcea370fbc2f80c5791293302501701dec3f3b3077784" + }, + { + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "from": "0x9642b23ed1e01df1092b92641051881a322f5d4e", + "gas": "0xc350", + "gasPrice": "0xdc3a2c62", + "hash": "0x06d504980fbacf359463537147c81348f5978476433367b067b185ad95be82e0", + "input": "0x", + "nonce": "0x1b5894", + "to": "0x0b9b42d7edb6b669a24f50157f80e5d909cb6eb8", + "transactionIndex": "0x40", + "value": "0x6ed83c14fe000", + "type": "0x0", + "chainId": "0x1", + "v": "0x25", + "r": "0x2aee26e10d81bfccbb812d506a36f097ef5582d7b4101dd6139b745d92770772", + "s": "0x3a0dc1a108b95ac12d9ff8676a2ac200869477ee838219ec87daa4e8ad6996b6" + }, + { + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "from": "0x9642b23ed1e01df1092b92641051881a322f5d4e", + "gas": "0xc350", + "gasPrice": "0xdc3a2c62", + "hash": "0xd33b517a15607a18d3c33ddc1f237aa61e9a3947b21287768ce3ba86d2495a03", + "input": "0x", + "nonce": "0x1b5895", + "to": "0x0f000db45a0f4320ac77c5ba21312ae52174326a", + "transactionIndex": "0x41", + "value": "0x24736a67654000", + "type": "0x0", + "chainId": "0x1", + "v": "0x25", + "r": "0xa1c92ec425dbb612821bbe6b1eb67efc61f1535216c020390d93fe208b75d06d", + "s": "0x60d70a99a9a6ed375cf0a27fb9b281efe0be46d57d66e87299bdaddaccaca679" + }, + { + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "from": "0x7586854ec236f3ef8e7e5c7cc55dd3b449feed98", + "gas": "0x11326", + "gasPrice": "0xd6455cd2", + "hash": "0x1827070bb19ea45e3bf9eec57ccc94690038337ada1bc618ab79eb21a8078dac", + "input": "0x095ea7b300000000000000000000000077edae6a5f332605720688c7fda7476476e8f83fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", + "nonce": "0x3ac", + "to": "0xfa417cd491632620a582851b07abf7e3447bba71", + "transactionIndex": "0x42", + "value": "0x0", + "type": "0x0", + "chainId": "0x1", + "v": "0x26", + "r": "0x56cc252d5c95397705254d0fddb0e8943f25c7871fe05ebfa46e364353f6f619", + "s": "0x22f9be91fbc204ec34d0a878e66bd5ea743cdcb1e5e591b91f2405f2a23c6b43" + }, + { + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "from": "0x3fdd41c3622aa33227d42d87c6838aaa9dca0dcf", + "gas": "0x19e10", + "gasPrice": "0xd69f9dd4", + "maxPriorityFeePerGas": "0xb2d05e00", + "maxFeePerGas": "0x12a05f200", + "hash": "0xc8d9083af83a6c8fa73051663d8a2c9d79195be21063c09066d39d562d1be993", + "input": "0xa9059cbb0000000000000000000000008476de5d91038c1015c73e6fec0a97d45d91ec180000000000000000000000000000000000000000000000000000000008ebb1c8", + "nonce": "0xf41", + "to": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48", + "transactionIndex": "0x43", + "value": "0x0", + "type": "0x2", + "accessList": [], + "chainId": "0x1", + "v": "0x1", + "yParity": "0x1", + "r": "0x578055145aa121f1bd1b3c4b89ed6f1824fb80a474de8e59e1a6d8a5f2238fbb", + "s": "0x4ecba6e8255a8fb4cc0abad783836984608971cca76e37f7d77fcbedbe134bfd" + }, + { + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "from": "0x93228d328c9c74c2bfe9f97638bbb5ef322f2bd5", + "gas": "0x15f90", + "gasPrice": "0x9b04d3d4", + "maxPriorityFeePerGas": "0x77359400", + "maxFeePerGas": "0x2e90edd000", + "hash": "0x7e1bbe3049928a58a967ff5188615b894fc8093d92778abcdedbdbdf9957c052", + "input": "0xa9059cbb00000000000000000000000041ea4e72b88a8e84b83b739f4092339d721574cf000000000000000000000000000000000000000000000000000000000ac9d740", + "nonce": "0x1312", + "to": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48", + "transactionIndex": "0x44", + "value": "0x0", + "type": "0x2", + "accessList": [], + "chainId": "0x1", + "v": "0x0", + "yParity": "0x0", + "r": "0xe139af5d1da3060d9d2ab5c1d5dd5872bc18547ee11ee520ba9e76b97ac04cb0", + "s": "0x76094d40297c5046e7a0fd0174aaae8861f9fc55aadbb3832126749717b05ea7" + }, + { + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "from": "0x8347cd390c696372aa5ac17865117d5521c5476a", + "gas": "0x19c6d", + "gasPrice": "0x7a4ab68f", + "maxPriorityFeePerGas": "0x56d6c92d", + "maxFeePerGas": "0x7a4ab68f", + "hash": "0x75205100cde683dcb84a3b361f7320c0a0adad9f4c151a7088938db3a90c682b", + "input": "0x99e1d016000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000005c7bcd6e7de5423a257d81b442095a1a6ced35c50000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000001ad7b9392320000000000000000000000008347cd390c696372aa5ac17865117d5521c5476a0000000000000000000000008347cd390c696372aa5ac17865117d5521c5476a000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48000000000000000000000000833589fcd6edb6e08f4c7c32d4f71b54bda02913000000000000000000000000000000000000000000000000000000005120bce000000000000000000000000000000000000000000000000000000000511e68ef0000000000000000000000000000000000000000000000000000000000002105000000000000000000000000394311a6aaa0d8e3411d8b62de4578d41322d1bd0000000000000000000000000000000000000000000000000000000068a5cd170000000000000000000000000000000000000000000000000000000068a5fc010000000000000000000000000000000000000000000000000000000068a5ce73000000000000000000000000000000000000000000000000000000000000018000000000000000000000000000000000000000000000000000000000000000001dc0de00410000000b00000000000000000000000000000000000000", + "nonce": "0x1627", + "to": "0x8347cd390c696372aa5ac17865117d5521c5476a", + "transactionIndex": "0x45", + "value": "0x0", + "type": "0x2", + "accessList": [], + "chainId": "0x1", + "v": "0x1", + "yParity": "0x1", + "r": "0xf3b8b1720b9dfa3b1c0933702a14a51319d0f18801bf7e709ccabcb992ac2e3f", + "s": "0x492ca14316335f0c2ae6d0abcd537aba6eabce9697798c83ff524f3125b10c03" + }, + { + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "from": "0x91d40e4818f4d4c57b4578d9eca6afc92ac8debe", + "gas": "0x33450", + "gasPrice": "0x9b04d3d4", + "maxPriorityFeePerGas": "0x77359400", + "maxFeePerGas": "0x74e1881c00", + "hash": "0x6a3001d1458aaae959847d930c1f1b4e813899c8702e5a3f7ea14123b633ee52", + "input": "0xa9059cbb000000000000000000000000124f9ec75369ea83cdfdb1d87c5874ca7f081107000000000000000000000000000000000000000000026d04ab7d750dfb350000", + "nonce": "0x47863", + "to": "0x6982508145454ce325ddbe47a25d4ec3d2311933", + "transactionIndex": "0x46", + "value": "0x0", + "type": "0x2", + "accessList": [], + "chainId": "0x1", + "v": "0x0", + "yParity": "0x0", + "r": "0xa3cb3bb14756750d0afb69334bf38fcf9353693ab1e48e4bb349f71b8f7a965a", + "s": "0x4fd9ad5a80f6d2856721e68d490136a0ff7fb406f0187dcb19e4d0426270a0be" + }, + { + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "from": "0x0fc7cb62247151faf5e7a948471308145f020d2e", + "gas": "0x34bc0", + "gasPrice": "0x5f6a09d5", + "maxPriorityFeePerGas": "0x3b9aca01", + "maxFeePerGas": "0x7151a9bf", + "hash": "0xa992613624291aa6066c2b0e3c8f16a4cbf2da27d5124ae28c7041edb5c5f8cb", + "input": "0x78e111f6000000000000000000000000fc557ba572e71e4e2b7d63a5cf9c2f0d6420446d000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000c42f1c6b500000000000000000000000000000000000000000000000000e6292767661e2a9000000000000000000000000000000000000000000000000000d16039177aa27000000000000000000000000000000000007f2d493f8910d1c97ad14a25e09620000000000000000000000000000000000000000000000000de0b6b3a76400000000000000000000000000000000000000000000000000000000000068a5ce5bff000000000000000000000000000000000000000000000000000000000104e300000000000000000000000000000000000000000000000000000000", + "nonce": "0x8c7d", + "to": "0xa69babef1ca67a37ffaf7a485dfff3382056e78c", + "transactionIndex": "0x47", + "value": "0xad9c18", + "type": "0x2", + "accessList": [ + { + "address": "0xfc557ba572e71e4e2b7d63a5cf9c2f0d6420446d", + "storageKeys": [] + }, + { + "address": "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2", + "storageKeys": [ + "0x9ede93be0d8fc6a5eb9cf1c7345a85b7519d8487a727aef0c2f00ab966aa7716", + "0x75245230289a9f0bf73a6c59aef6651b98b3833a62a3c0bd9ab6b0dec8ed4d8f" + ] + }, + { + "address": "0x4585fe77225b41b697c938b018e2ac67ac5a20c0", + "storageKeys": [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000004", + "0x0000000000000000000000000000000000000000000000000000000000000002", + "0x702cd40275723fbecf854291f1eca58b5a0de7d378ea31ec006833fd99382dea", + "0x0000000000000000000000000000000000000000000000000000000000000049", + "0x000000000000000000000000000000000000000000000000000000000000004a" + ] + }, + { + "address": "0x2260fac5e5542a773aa44fbcfedf7c193bc2c599", + "storageKeys": [ + "0x0000000000000000000000000000000000000000000000000000000000000005", + "0xdc276a4f120117ad5ae6415d1c724b4f3a0e81f0ee6466e1392ca121b63123f2", + "0x99713ceb4322a7b2d063a2b1e90a212070b8c507ea9c7afebed78f66997ae15e" + ] + } + ], + "chainId": "0x1", + "v": "0x0", + "yParity": "0x0", + "r": "0xcbc30e8040bc68e164f289d4b06de9479faa3a606014d6c6f7ba457ae712f9b3", + "s": "0x6691860adf9831eef8da3264136d40b5bd9e8d99b4c79d514cda13f99da916c9" + }, + { + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "from": "0x234de29cc82f9ce20cdc71b8b4baf6d51f4a1a64", + "gas": "0x33808", + "gasPrice": "0x5f6a09d5", + "maxPriorityFeePerGas": "0x3b9aca01", + "maxFeePerGas": "0x7151a9bf", + "hash": "0x00138f183df8f35e5cff95ae8911e29f833a0e4e1b2da55eaa2e7b9c0dc7c361", + "input": "0x78e111f6000000000000000000000000846484c4cd32bdc8cd8e64a63b51219bdab4e1cc000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000c42f1c6b50000000000000000000000000000000000000000000000000049bff3124b7bb060000000000000000000000000000000000000034a36bf0c2444e000000000000000000000000000000000000000000000000000003f690eab89b022908ec8ec30000000000000000000000000000000000000000000000000de0b6b3a76400000000000000000000000000000000000000000000000000000000000068a5ce5bff0000000000000000000000000000000000000000000000000000000000fd5300000000000000000000000000000000000000000000000000000000", + "nonce": "0x837", + "to": "0xa69babef1ca67a37ffaf7a485dfff3382056e78c", + "transactionIndex": "0x48", + "value": "0xc71c18", + "type": "0x2", + "accessList": [ + { + "address": "0x6b175474e89094c44da98b954eedeac495271d0f", + "storageKeys": [ + "0x995f3b129dd3291868ddb9cf202c75cd985227d50e309847fbab0f8da403b19c", + "0x35d7fb7665514f774d2c2df607e197eb8674b6e63d2638472758647a2e67406a" + ] + }, + { + "address": "0x60594a405d53811d3bc4766596efd80fd545a270", + "storageKeys": [ + "0x0000000000000000000000000000000000000000000000000000000000000004", + "0x0000000000000000000000000000000000000000000000000000000000000002", + "0x9ecf0b7b4087cf876a9696caf0f337e48f3ddf6a97759bd98730b0fb16d02a1e", + "0x0000000000000000000000000000000000000000000000000000000000000016", + "0x0000000000000000000000000000000000000000000000000000000000000017", + "0x0000000000000000000000000000000000000000000000000000000000000000" + ] + }, + { + "address": "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2", + "storageKeys": [ + "0xf762dfe765e313d39f5dd6e34e29a9ef0af51578e67f7f482bb4f8efd984976b", + "0x75245230289a9f0bf73a6c59aef6651b98b3833a62a3c0bd9ab6b0dec8ed4d8f" + ] + }, + { + "address": "0x846484c4cd32bdc8cd8e64a63b51219bdab4e1cc", + "storageKeys": [] + } + ], + "chainId": "0x1", + "v": "0x1", + "yParity": "0x1", + "r": "0x1734b5653d3f44712d66a208cba28c0424d8d35f9861a3d05f0fd2d13bb0de", + "s": "0x54d30c2c0f05495108e63fbe6a5a01d4d55dcdcf399b3f1bbc94ca5c1e7c1e6e" + }, + { + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "from": "0x22b0351d445840db59b97df3808dd642dcb17e96", + "gas": "0x4be58", + "gasPrice": "0x3bb9cbd0", + "maxPriorityFeePerGas": "0x17ea8bfc", + "maxFeePerGas": "0x3bb9cbd0", + "hash": "0x5c26778c19e50598fcd9190fa74dc60d2182940918b53942a6a7ea247243a38b", + "input": "0xa00000000000000000000000000000001ac1a8feaaea1900c4166deeed0c11cc10669d3600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000278f7f1db3b9b5e000000000000000000000000000000000000000000000000000000002c5a0de9000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2", + "nonce": "0x119da", + "to": "0xfbd4cdb413e45a52e2c8312f670e9ce67e794c37", + "transactionIndex": "0x49", + "value": "0x161bd0f", + "type": "0x2", + "accessList": [], + "chainId": "0x1", + "v": "0x1", + "yParity": "0x1", + "r": "0x69d3709a625e6f6e87b756ce39d54d1f17d33f1e05f3def4c878547b48bb608e", + "s": "0x45123039f3cbd282d6364ffe704db550477d7c5085a6fe0038c614cbde5fec1a" + }, + { + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "from": "0x46340b20830761efd32832a74d7169b29feb9758", + "gas": "0x55730", + "gasPrice": "0x77359400", + "hash": "0xa2a8edbe294afde748bf14aae5427b8af22a65d9e1ea8de5c410057d577a480e", + "input": "0xa9059cbb00000000000000000000000025637c1059b044c262cb1108c899cad44c8cd908000000000000000000000000000000000000000000000000000000001d34ce80", + "nonce": "0xec635b", + "to": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48", + "transactionIndex": "0x4a", + "value": "0x0", + "type": "0x0", + "chainId": "0x1", + "v": "0x25", + "r": "0x7f073b08dd1af9bfe6027f7cd4a6fc0e14a2af4ace9e492077701e1ede1e152a", + "s": "0x3faba817da0be1f93282cf3095c384f265d6d2d6ce3cbb8db72927933301ab9c" + }, + { + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "from": "0x1864d150aa60111fb312a1b8f4cf8e6dabd3094c", + "gas": "0x5208", + "gasPrice": "0xd69f9dd4", + "maxPriorityFeePerGas": "0xb2d05e00", + "maxFeePerGas": "0xe158605f", + "hash": "0x1de9ccef004f5f226c9468fb6abdc40755e1e5c7ddfcf1dd4ea2cbb708cc2165", + "input": "0x", + "nonce": "0x15", + "to": "0x0abbc482fbd91dbf413e3d6cc5622e03552ac13a", + "transactionIndex": "0x4b", + "value": "0x2cba482deeeb28", + "type": "0x2", + "accessList": [], + "chainId": "0x1", + "v": "0x1", + "yParity": "0x1", + "r": "0xdf2e9e34d4ccb274fedde20ba4227fc5b05acabc5dce11af046d327c0e57d3c0", + "s": "0x74067cf58df3cb918444561a387aaee5112279d9ad2d2e49bc485906c6f2b79e" + }, + { + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "from": "0x5962604feb383ca4164107583d147b2aa1d86d54", + "gas": "0x5ca67", + "gasPrice": "0x5f6a09d4", + "maxPriorityFeePerGas": "0x3b9aca00", + "maxFeePerGas": "0x6458e75e", + "hash": "0x58e2f7e1ec2dd54b4e40331bea22badf3843fe6f21c6a4a017d86a715904c6b2", + "input": "0x721c651300000000000000000000000000000000000000000000000000502072edbac1fa", + "nonce": "0x6", + "to": "0x2401c39d7ba9e283668a53fcc7b8f5fd9e716fdf", + "transactionIndex": "0x4c", + "value": "0x0", + "type": "0x2", + "accessList": [], + "chainId": "0x1", + "v": "0x1", + "yParity": "0x1", + "r": "0x669340e86385fcde0e093f926561a6deb41f9643c256562771700d17eed3ab86", + "s": "0x40c8fba726529149dddf62d9d71bf82016969557e857c4c6805a942da1fef178" + }, + { + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "from": "0x663b7c32c90f6c3fee8e8eecced18c007d69193a", + "gas": "0x55730", + "gasPrice": "0x419ca4d4", + "maxPriorityFeePerGas": "0x1dcd6500", + "maxFeePerGas": "0x64b53fc4", + "hash": "0x7a3600dd2fe2ec2c06cec4604861991b4ba6890c76c3d10f486f4562a6eb7eb7", + "input": "0x791ac94700000000000000000000000000000000000000000000eeba4b9f0d5bdd105a3e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000663b7c32c90f6c3fee8e8eecced18c007d69193a0000000000000000000000000000000000000000000000000000000068a5ce5b000000000000000000000000000000000000000000000000000000000000000200000000000000000000000010ee9f68ee4e4d311e854ae14c53f5b25a917f85000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2", + "nonce": "0xae", + "to": "0x7a250d5630b4cf539739df2c5dacb4c659f2488d", + "transactionIndex": "0x4d", + "value": "0x0", + "type": "0x2", + "accessList": [], + "chainId": "0x1", + "v": "0x0", + "yParity": "0x0", + "r": "0x7cc510f75dfe6f1ab9ff2d963e9a6091d28cb91c35755f6dac7e3f9d178fe5af", + "s": "0x2c9df5bd35d81991db51ced0de82755177ab4559f540bebbab7fc4baf7f81021" + }, + { + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "from": "0xb6839dc14ace0934a2c422369aa34b39b8c534b1", + "gas": "0x5208", + "gasPrice": "0xb2d05e00", + "hash": "0x9ffbef1785c43203687d9ecebc2e1dc67bd4b69337d9576d9992039d328ba5c3", + "input": "0x", + "nonce": "0xc0c", + "to": "0x2fd2ea3b0545bf12dd03ef6274aede12274da9a6", + "transactionIndex": "0x4e", + "value": "0x117723a0ec73170", + "type": "0x0", + "chainId": "0x1", + "v": "0x25", + "r": "0xfb30b51d7e1efc3354c0f34c4f60c150ab3a2d02935fc2ae8940f8c5e1e02ccf", + "s": "0x66978516f6e11d371c3887861859eeb0bd2f43719ad2af2759550d9b480e6fbc" + }, + { + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "from": "0x91604f590d66ace8975eed6bd16cf55647d1c499", + "gas": "0x5208", + "gasPrice": "0xae1aec40", + "hash": "0x2cbad0ad9584888bb5ad6d856ea602fa2a3afe764252499f2de6afe2a69ffdae", + "input": "0x", + "nonce": "0x25c92", + "to": "0xfbc09172b41c69aa617629847e5d80e35981932d", + "transactionIndex": "0x4f", + "value": "0x15830edf2a17f", + "type": "0x0", + "chainId": "0x1", + "v": "0x26", + "r": "0xb4fde1e62fb081477772b495f213f666d7c6357d790537aeba4312e5003f6806", + "s": "0x596dcc6cb828ad72d6883d5dc7625707c7117a947eaebc011e74d23f18bf15c1" + }, + { + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "from": "0xab97925eb84fe0260779f58b7cb08d77dcb1ee2b", + "gas": "0x15f90", + "gasPrice": "0x9b04d3d4", + "maxPriorityFeePerGas": "0x77359400", + "maxFeePerGas": "0x2e90edd000", + "hash": "0x88871027255d345a9f5887127c9acb33704c9a1db48142f8185eabceeab719e1", + "input": "0x", + "nonce": "0x23dba0", + "to": "0xe47d43dcd14e9fcaf96c232dae3f84d81c1ac725", + "transactionIndex": "0x50", + "value": "0x3ff2e795f50000", + "type": "0x2", + "accessList": [], + "chainId": "0x1", + "v": "0x1", + "yParity": "0x1", + "r": "0x407e491945a87a4ac61e7d868fcf6caf4e6ac689420938f655373fe139370ab2", + "s": "0xb0062b1dde70fc52b751679622f903866e940b7f0ca4cf38b7e66c33c40083e" + }, + { + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "from": "0xa9ac43f5b5e38155a288d1a01d2cbc4478e14573", + "gas": "0x33450", + "gasPrice": "0x9b04d3d4", + "maxPriorityFeePerGas": "0x77359400", + "maxFeePerGas": "0x74e1881c00", + "hash": "0x5803753b8b9f1a604f6590849d3a9cd2a7c0f6fb6334d02a01ba5d66206c450a", + "input": "0x", + "nonce": "0x484c8", + "to": "0xe337299f1d8f5a249147bf2e795d612b891ab90e", + "transactionIndex": "0x51", + "value": "0x247624e5547000", + "type": "0x2", + "accessList": [], + "chainId": "0x1", + "v": "0x0", + "yParity": "0x0", + "r": "0x999edff33e2b883e82f520799806f32706a6c08e6bb69f540a92cb80f350a371", + "s": "0x341156f7150f3e6e095e9e2ae09d54cc2675428362d666502dccbc16aeecfa3b" + }, + { + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "from": "0xbe19155113cbfa0b0555d6c316b18133b10b312d", + "gas": "0x9e73a", + "gasPrice": "0x9b04d3d4", + "maxPriorityFeePerGas": "0x77359400", + "maxFeePerGas": "0xa7c2cc55", + "hash": "0x09ebf2e04dbaab1d0ad74c275b776c6398084d5558290d804063d0a6f477c61e", + "input": "0xe63d38ed000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000005600000000000000000000000000000000000000000000000000000000000000028000000000000000000000000f05cd1707fe94f3228296aa26247bae9be7fead6000000000000000000000000bfd5d536458507c5f911493dba9e88badc96321b000000000000000000000000d30dbe4c7860a731275ad989da2c172ddfaa1607000000000000000000000000bc79eaaa52ce243036c8d0a0356f19d5bdf8c169000000000000000000000000efadeab0116e40d6d73817cd4f6a127c4bae31c8000000000000000000000000c462622ee05fe15e0b7ea4023b98af160962d9fa000000000000000000000000364e11071689ca8b51ec67b8095047609272fb4700000000000000000000000022fc139c1801a3fb34c10ff9bf847c99669a51d7000000000000000000000000cd9a2ee841649898664debac0371b76977c8d4460000000000000000000000000ed66c88c463c26099e97c4a07754f7d2b5bcd8200000000000000000000000058d80fa6ff132b316aedf9d6e3cd5697ee068ed6000000000000000000000000526ca4eb907f9dbceb79d34aa2bb7ea7760d58e300000000000000000000000011fcc097ba2414b9f7246eaa582c259326738c78000000000000000000000000fec18ccf7b4f3ae8461e16d1b406575a351037700000000000000000000000000e17d638bcc412ff787b7889a410ac9096d18490000000000000000000000000aac4df958bab3b1ec483120620ad93106c0bed6a000000000000000000000000f4a2a04bad3209c98eed8ab3be7a5cccc1f32148000000000000000000000000760e40919aa8e26a98e9c68086ef84080d3bec4f000000000000000000000000d46117ca6716960e52df84bc4e45a0ca1bcdc63900000000000000000000000061ec939e331e2de8529d25911f21060685ba3e43000000000000000000000000ef4dc27fe6a0701fab7de0762b4c81db90a2b783000000000000000000000000252a9e7f3b79d611620504c8cacf7a882b80d5830000000000000000000000006a4846613810406b426cedc3afdb00dd8e838cbb000000000000000000000000d2c2275d30f35a821b51a7a2399100a65c6449a70000000000000000000000000447f6e60aa071cca64081b76cede63e7f0ad6d40000000000000000000000001291eba10a206c59cf188aa8967905ac2bc9caee000000000000000000000000fefce0d7581dc91dab6cbfbdd9eb673af2e796b8000000000000000000000000d9208a1803dff14cc05f64c42c8c4d4fb1cbecaf00000000000000000000000010dca1e9f47dca5fe0152025e0d2757ae5ee50ac0000000000000000000000002f29bc446409e8ee5b29b9542b2e56a6fd07d04b000000000000000000000000ba68312ba97084a9ab6fe926bcc5ffdec37646fa0000000000000000000000008e296c68e4fda7ea1a54f50fd9a23513c80c5b75000000000000000000000000d8f5e763d0bac8c138d174c2d3db7d8b32f87ea2000000000000000000000000d8305c41b5e1bb19c1ea24e67bfebb4b9e207d4100000000000000000000000070b13b1045202734269f8a3ce34279d8e06ea7660000000000000000000000001c8969bb448abb87a722c57b6bbc76cf0de71b1d000000000000000000000000cda768814f3285c224dfce613d82b6e0bb1a7c42000000000000000000000000792132869978e58d372d5f5c30e2ebd1cac192b6000000000000000000000000af87358a5a9600afcfccc745b4e81a75f6cb7d610000000000000000000000008bbf3b5d640f89c6e07d1b081ecb8662f022c45f000000000000000000000000000000000000000000000000000000000000002800000000000000000000000000000000000000000000000002386f26fc10000000000000000000000000000000000000000000000000000002386f26fc10000000000000000000000000000000000000000000000000000002386f26fc10000000000000000000000000000000000000000000000000000002386f26fc10000000000000000000000000000000000000000000000000000002386f26fc10000000000000000000000000000000000000000000000000000002386f26fc10000000000000000000000000000000000000000000000000000002386f26fc10000000000000000000000000000000000000000000000000000002386f26fc10000000000000000000000000000000000000000000000000000002386f26fc100000000000000000000000000000000000000000000000000000027f7d0bdb920000000000000000000000000000000000000000000000000000027f7d0bdb920000000000000000000000000000000000000000000000000000027f7d0bdb920000000000000000000000000000000000000000000000000000027f7d0bdb920000000000000000000000000000000000000000000000000000027f7d0bdb920000000000000000000000000000000000000000000000000000027f7d0bdb92000000000000000000000000000000000000000000000000000002c68af0bb14000000000000000000000000000000000000000000000000000002c68af0bb14000000000000000000000000000000000000000000000000000002c68af0bb140000000000000000000000000000000000000000000000000000030d98d59a960000000000000000000000000000000000000000000000000000030d98d59a960000000000000000000000000000000000000000000000000000030d98d59a9600000000000000000000000000000000000000000000000000000354a6ba7a1800000000000000000000000000000000000000000000000000000354a6ba7a180000000000000000000000000000000000000000000000000000039bb49f599a0000000000000000000000000000000000000000000000000000039bb49f599a000000000000000000000000000000000000000000000000000003e2c284391c00000000000000000000000000000000000000000000000000000429d069189e00000000000000000000000000000000000000000000000000000429d069189e00000000000000000000000000000000000000000000000000000470de4df820000000000000000000000000000000000000000000000000000004fefa17b7240000000000000000000000000000000000000000000000000000054607fc96a60000000000000000000000000000000000000000000000000000058d15e176280000000000000000000000000000000000000000000000000000061b31ab352c000000000000000000000000000000000000000000000000000006f05b59d3b200000000000000000000000000000000000000000000000000000853a0d2313c000000000000000000000000000000000000000000000000000009b6e64a8ec6000000000000000000000000000000000000000000000000000009b6e64a8ec600000000000000000000000000000000000000000000000000000b1a2bc2ec5000000000000000000000000000000000000000000000000000000b1a2bc2ec5000000000000000000000000000000000000000000000000000000de0b6b3a7640000", + "nonce": "0x663", + "to": "0xd152f549545093347a162dce210e7293f1452150", + "transactionIndex": "0x52", + "value": "0xafb15aeca8720000", + "type": "0x2", + "accessList": [], + "chainId": "0x1", + "v": "0x0", + "yParity": "0x0", + "r": "0xe58fbd871ef95c343a9ffb66333c54cd37adbd44948669c48060a41c432ec119", + "s": "0x1596b5c1246cf247ff386cd0b60002929768e4ef326c95a2e49287cdde2d3d51" + }, + { + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "from": "0x4838b106fce9647bdf1e7877bf73ce8b0bad5f97", + "gas": "0x5208", + "gasPrice": "0x23cf3fd4", + "maxPriorityFeePerGas": "0x0", + "maxFeePerGas": "0x23cf3fd4", + "hash": "0xd20af84c937b6bfb1cbd0dbcde686c9bbdd6a3904257523bba99bd50e879f8a1", + "input": "0x", + "nonce": "0x2c5cdd", + "to": "0xc6093fd9cc143f9f058938868b2df2daf9a91d28", + "transactionIndex": "0x53", + "value": "0x2d852ce936f60", + "type": "0x2", + "accessList": [], + "chainId": "0x1", + "v": "0x1", + "yParity": "0x1", + "r": "0xf1a1330a93e743c1af959f8ab5f6d8ad96271533389cf78a024757f925d09524", + "s": "0x7e735935043383326086dd91d60b08c7790338d940b229ef2ad139b75b1353b7" + }, + { + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "from": "0x7d7e377ee0168ddb578ef10661827cf1f71a6712", + "gas": "0xb491", + "gasPrice": "0x5f6a09d4", + "maxPriorityFeePerGas": "0x3b9aca00", + "maxFeePerGas": "0x9502f900", + "hash": "0xef162cf825f7bd785fd8229e52972e62855b7d44dcdd3038990fd95625a9dc56", + "input": "0xa9059cbb000000000000000000000000a9d1e08c7793af67e9d92fe308d5697fb81d3e43000000000000000000000000000000000000000000000000000000002fb9b660", + "nonce": "0x0", + "to": "0xdac17f958d2ee523a2206206994597c13d831ec7", + "transactionIndex": "0x54", + "value": "0x0", + "type": "0x2", + "accessList": [], + "chainId": "0x1", + "v": "0x1", + "yParity": "0x1", + "r": "0xd49644b179f2d9aac7beed64ce8ceb08603db6e0ac461ad29a8c1c5cf4d3d824", + "s": "0x3d11453483e0a2995a34010a69ec280547607b598b91fc82491ff9cbad3d949c" + }, + { + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "from": "0xf8ae00151ae5c2b5d430ab4e9dab01a770c1fca9", + "gas": "0xb485", + "gasPrice": "0x5f6a09d4", + "maxPriorityFeePerGas": "0x3b9aca00", + "maxFeePerGas": "0x9502f900", + "hash": "0x6f4c0ef6cf1c52b0261982d2c8bdfc3f9073dd8af06ffdd253d5b3e49d3152cf", + "input": "0xa9059cbb000000000000000000000000a9d1e08c7793af67e9d92fe308d5697fb81d3e43000000000000000000000000000000000000000000000000000000001dcd6500", + "nonce": "0xb", + "to": "0xdac17f958d2ee523a2206206994597c13d831ec7", + "transactionIndex": "0x55", + "value": "0x0", + "type": "0x2", + "accessList": [], + "chainId": "0x1", + "v": "0x1", + "yParity": "0x1", + "r": "0xa12d01cb9fa007e26d0bd14e0a0023adbce3266b9c41345a2cab935bd5f1125d", + "s": "0x4abc115b7602f5a366827b7d646f582b418cf55d79c82447bbb269c141d8ec93" + }, + { + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "from": "0x01884eb29311cf4fbbf59465aff0fbd123f84713", + "gas": "0xb485", + "gasPrice": "0x5f6a09d4", + "maxPriorityFeePerGas": "0x3b9aca00", + "maxFeePerGas": "0x9502f900", + "hash": "0x31109524218b0f4e2f747b5163bd532e63521b998bff69fb07fa44cb68a09298", + "input": "0xa9059cbb000000000000000000000000a9d1e08c7793af67e9d92fe308d5697fb81d3e43000000000000000000000000000000000000000000000000000000000c1f0700", + "nonce": "0x0", + "to": "0xdac17f958d2ee523a2206206994597c13d831ec7", + "transactionIndex": "0x56", + "value": "0x0", + "type": "0x2", + "accessList": [], + "chainId": "0x1", + "v": "0x0", + "yParity": "0x0", + "r": "0x58ea7af68f5bba2fa3a2541668f7d03e8f465cd584359ca163535b63d18fe176", + "s": "0x329bc5cf61a603dc4a36b51ff69d2bd9de531fc9f666dac13e1f25ea64e1c80d" + }, + { + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "from": "0xeb5fb7ce4528ee42bf2c7765ae70ca1deb2ef09c", + "gas": "0xfde8", + "gasPrice": "0x4fb1722d", + "hash": "0x74f20b477ad72c790aa0a5742daf4aeadb1fbbd0edcfd74490f4ea9ec32d9a29", + "input": "0xa9059cbb000000000000000000000000203ff9f3e2af2ceb4dd62914af2bdf8ebfc5326400000000000000000000000000000000000000000000000000000000b2eb3a55", + "nonce": "0x0", + "to": "0xdac17f958d2ee523a2206206994597c13d831ec7", + "transactionIndex": "0x57", + "value": "0x0", + "type": "0x0", + "chainId": "0x1", + "v": "0x25", + "r": "0x4e3a9dd3a0ecdf4aee14e25901da20fee27cc09df1308fa404483fcf51f8534b", + "s": "0x2ece62b2787333df6fbcc117335d7f35487fff5fe8a5b883156e349f980286a3" + }, + { + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "from": "0x0e71589abe9d1215535dc94c85482fe5954fdac9", + "gas": "0x5208", + "gasPrice": "0x77359400", + "hash": "0x9cc25ee19cb4404d4bbeb96d4f9e9ceefe81ba8245f0f7c01a266900f9b4e745", + "input": "0x", + "nonce": "0x0", + "to": "0x0b7342a7af6bf6cc0ff8909ba1d70770863c74b5", + "transactionIndex": "0x58", + "value": "0x5d55309626b000", + "type": "0x0", + "chainId": "0x1", + "v": "0x25", + "r": "0xbd8ec8a907255d6a3f36f0c12649e7921067b90bcfb07ddb889bdde4d73ed0dd", + "s": "0x68404b6c46df8c56d373c68f35c09e2543113a83afc1bc5abfed607ca5028820" + }, + { + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "from": "0x21f2f76af55060df2a0fba013d4dd9d9f8ab2dea", + "gas": "0x4460a", + "gasPrice": "0x5f6a09d4", + "maxPriorityFeePerGas": "0x3b9aca00", + "maxFeePerGas": "0x6458e75e", + "hash": "0x199159c1b79070e2b1aa4201c8f61902df872abd99e569714d55fcfd8db9f929", + "input": "0x3593564c000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000068a5d551000000000000000000000000000000000000000000000000000000000000000309050c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000018000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000006f4cc3821aa200000000000000000000000000000000000000000000000560a5b0a95e8d74b5ce300000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000002000000000000000000000000bc2ecbe2195114b82f03680ed4270fa7008f3be0000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc20000000000000000000000000000000000000000000000000000000000000060000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2000000000000000000000000000000fee13a103a10d593b9ae06b3e05f2e7e1c000000000000000000000000000000000000000000000000000470de4df82000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000021f2f76af55060df2a0fba013d4dd9d9f8ab2dea00000000000000000000000000000000000000000000000006f05b59d3b200000c", + "nonce": "0x11", + "to": "0x66a9893cc07d91d95644aedd05d03f95e1dba8af", + "transactionIndex": "0x59", + "value": "0x0", + "type": "0x2", + "accessList": [], + "chainId": "0x1", + "v": "0x0", + "yParity": "0x0", + "r": "0xacd0dd0c3dccb80ba925acf6772dff577c648476339758a60ccff48e2e272eed", + "s": "0x11a0782ff70ef6e3eb0e27c9c006a6610d42b5fbb514bc0def5d349d7dcd1540" + }, + { + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "from": "0x930a46935042d35cc4393ff5f9b9bf9f2e3afd09", + "gas": "0x5dc47", + "gasPrice": "0x2824a9d9", + "maxPriorityFeePerGas": "0x4556a05", + "maxFeePerGas": "0x2a9e4d18", + "hash": "0xb903093efd1a45a2869f91f0169c3113ccc44fc9a70268af055392b6f4a6dece", + "input": "0x501d976c000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000002c00000000000000000000000000000000000000000000000000000000000000013000000000000000000000000967bdfb1dd57308eb3e6910fe4357178eb6c6c6000000000000000000000000035ea699b892e9ce7ebfbcd2bbfaaedb2f17a5ad1000000000000000000000000ae650050e4264e3462df71c1f9d3be9afe311009000000000000000000000000a34e4aee609c09cef1e414a8a7123d1027451c8b0000000000000000000000004fb5e5ef3a1b036a49557fedcdefee373d831f9600000000000000000000000050d83e000fbb2bcd539125a7efc85fbca69c3550000000000000000000000000c30b83c943e25639102e6a5c982f1d572aa7c437000000000000000000000000fedfd8dc267cab022b9eec1c7d523454c9cd3ca3000000000000000000000000647d7d88cc316900642f45c080dc046edd5b113f000000000000000000000000816f3011bf8f3bf8412f5618b3627151bd126893000000000000000000000000683684277e66c5425af1d94ed3d90f8098267934000000000000000000000000d8ca026ad2d3cc48b06176c8c12f7d208794dbbc000000000000000000000000efa955acfef6a649f0a97bba849b0524f4dab49f0000000000000000000000001b01bc11993c567b7c0326620a6d36a55c8cc2280000000000000000000000007f1dcbe37bdb8c870c239f6cbc3f1c46de1b23e70000000000000000000000003ed076bbe73ca46670ad067e435d25c7709d6cbe00000000000000000000000093a495092b48db8b4e67d5b1020cc84fe67a7813000000000000000000000000da62185fe293c5a1dfd5ac315808b2de69cc88590000000000000000000000005183993ca2258547043ca96e41d3be2e4d1aeb38000000000000000000000000000000000000000000000000000000000000001300000000000000000000000000000000000000000000000001f54c17737c0fa60000000000000000000000000000000000000000000000000065e28cbf2c4eeb0000000000000000000000000000000000000000000000000008ee87c9450eeb0000000000000000000000000000000000000000000000000011121f3e25500000000000000000000000000000000000000000000000000000ae01f88295b7b400000000000000000000000000000000000000000000000000a1b48f9398c0000000000000000000000000000000000000000000000000000de0aa289343389400000000000000000000000000000000000000000000000000f412811f4a949700000000000000000000000000000000000000000000000002297e4b42c9397a0000000000000000000000000000000000000000000000000100cd90b2a953d20000000000000000000000000000000000000000000000000032fb70a4763390000000000000000000000000000000000000000000000000069ec1e4be1d781f000000000000000000000000000000000000000000000000015414782ca3d3e8000000000000000000000000000000000000000000000000034f026815219ee10000000000000000000000000000000000000000000000001449c67e0c5ed81f00000000000000000000000000000000000000000000000000769645a87bfaca000000000000000000000000000000000000000000000000000f4cce904020d00000000000000000000000000000000000000000000000000083734dd0b0800000000000000000000000000000000000000000000000000000a7553350ebc000", + "nonce": "0xad1b", + "to": "0x5b14db1af7101ec1dafa828eaa774e13161efb53", + "transactionIndex": "0x5a", + "value": "0x373334a20351e1d8", + "type": "0x2", + "accessList": [], + "chainId": "0x1", + "v": "0x0", + "yParity": "0x0", + "r": "0x2ff3eb498dca54f79bc122c1a38befb0ae7d726298b24b53134f5d90e0ad15c9", + "s": "0xda0884bfea67619d8760ff5967980e3760d7d8ac49eb9a5a0694c66cd3b5738" + }, + { + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "from": "0x25b944a4dc81077e483bf59f618974e177627593", + "gas": "0x5e56", + "gasPrice": "0x71ebcf1c", + "maxPriorityFeePerGas": "0x4e1c8f48", + "maxFeePerGas": "0x774fd708", + "hash": "0x18663217afb22c7ab2918545d837875df6d98706ac7227a8a08b4b0cc850c9d8", + "input": "0x", + "nonce": "0x4c", + "to": "0x910ac37b45718838b35ba569dd926904274b682e", + "transactionIndex": "0x5b", + "value": "0x168478c61f0fcc8", + "type": "0x2", + "accessList": [], + "chainId": "0x1", + "v": "0x1", + "yParity": "0x1", + "r": "0x33e08a09416167ed9542187ce13dde704e119ae4a3cf36b6c45c2cf70989a329", + "s": "0x7944ce143460d2a5805ce7db21bb4aa9e2563d10197928e1c1a6758dde65a674" + }, + { + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "from": "0x896cdba2559cfdeec8a2356bb36c92fab614a4cd", + "gas": "0x11056", + "gasPrice": "0x47094b30", + "maxPriorityFeePerGas": "0x233a0b5c", + "maxFeePerGas": "0x510fec66", + "hash": "0x889b19404fe581f2b094bc9d159d0d1599870ad9cf39cb330e68a2777fb91d5e", + "input": "0xa9059cbb0000000000000000000000009ba8071de40b13c3b4807c57c2b554fb3b9e0b2b0000000000000000000000000000000000000000000000000000000004c4b400", + "nonce": "0x23", + "to": "0xdac17f958d2ee523a2206206994597c13d831ec7", + "transactionIndex": "0x5c", + "value": "0x0", + "type": "0x2", + "accessList": [], + "chainId": "0x1", + "v": "0x1", + "yParity": "0x1", + "r": "0xb4284dd3d709cf625a29e1a18fc95f8cca80c9ab5cfd8a2b1fcf4b9f03f1b38a", + "s": "0x534e996d0a8b3067d516944f466b38b566fe81c62c9a9fc2975aa1306cf01766" + }, + { + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "from": "0x9b03a65530b8f9584beabe8c6d64d3d4bcadd3af", + "gas": "0x11056", + "gasPrice": "0x47094b30", + "maxPriorityFeePerGas": "0x233a0b5c", + "maxFeePerGas": "0x510fec66", + "hash": "0x0f6c5aec4835ffbfab3db13c5a4fdd44e96b7185df23626e8ea1cba5739c6649", + "input": "0xa9059cbb00000000000000000000000054519c53bc21bc7739464850268f1b7d2b3317a00000000000000000000000000000000000000000000000000000000000048c10", + "nonce": "0x0", + "to": "0xdac17f958d2ee523a2206206994597c13d831ec7", + "transactionIndex": "0x5d", + "value": "0x0", + "type": "0x2", + "accessList": [], + "chainId": "0x1", + "v": "0x0", + "yParity": "0x0", + "r": "0x1d33b9aea3bbb9d42fc88c647b6c3dc299a1ad39f255c0a16ed491607f6a5f59", + "s": "0x383d0213b811e26df102533477c7381311b800d72cae99852ba10bae83801258" + }, + { + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "from": "0x7a88038cbfd8e54ef2ccd8dd4a7191bd5f1df68e", + "gas": "0x72808", + "gasPrice": "0x9b04d3d4", + "maxPriorityFeePerGas": "0x77359400", + "maxFeePerGas": "0xa4203ac4", + "hash": "0x076ced5833f4b4de4e1d770f44f985c2f304eb89e781d28537c235199e2fc95a", + "input": "0x846a1bc6000000000000000000000000eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee0000000000000000000000000000000000000000000000000000e35fa931a0000000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000000000000000000000000068000000000000000000000000000000000000000000000000000000000000006c0000000000000000000000000000000000000000000000000000000000000070000000000000000000000000000000000000000000000000000000000000007600000000000000000000000007a88038cbfd8e54ef2ccd8dd4a7191bd5f1df68e00000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000001a000000000000000000000000000000000000000000000000000000000000003200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc20000000000000000000000000000000000000000000000000000e35fa931a00000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e00000000000000000000000000000000000000000000000000000000000000004d0e30db0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000001200000000000000000000000000000000000000000000000000000000000000044095ea7b300000000000000000000000068b3465833fb72a70ecdf485e0e4c7bd8665fc45ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc20000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000100000000000000000000000068b3465833fb72a70ecdf485e0e4c7bd8665fc45000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000001c000000000000000000000000000000000000000000000000000000000000000e404e45aaf000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4800000000000000000000000000000000000000000000000000000000000001f4000000000000000000000000ce16f69375520ab01377ce7b88f5ba8c48f8d6660000000000000000000000000000000000000000000000000000e35fa931a00000000000000000000000000000000000000000000000000000000000000fcc980000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc20000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000455534443000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009696d6d757461626c650000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002a307863653136463639333735353230616230313337376365374238386635424138433438463844363636000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c5000000000000000000000000000000000000000000000000000000000000000400000000000000000000000007a88038cbfd8e54ef2ccd8dd4a7191bd5f1df68e000000000000000000000000000000000000000000000000000000000000000700000000000000000000000000000000000000000000000000000000000000e000000000000000000000000000000000000000000000000000000000000001e0000000000000000000000000000000000000000000000000000000000000036000000000000000000000000000000000000000000000000000000000000005a0000000000000000000000000000000000000000000000000000000000000072000000000000000000000000000000000000000000000000000000000000009600000000000000000000000000000000000000000000000000000000000000ac000000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000eb466342c4d449bc9f53a865d5cb90586f4052150000000000000000000000000000000000000000000000000000000000000000000000000000000000000000eb466342c4d449bc9f53a865d5cb90586f405215000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000001200000000000000000000000000000000000000000000000000000000000000044095ea7b30000000000000000000000006c28aef8977c9b773996d0e8376d2ee379446f2fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000eb466342c4d449bc9f53a865d5cb90586f405215000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000010000000000000000000000006c28aef8977c9b773996d0e8376d2ee379446f2f000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000001e00000000000000000000000000000000000000000000000000000000000000104414bf389000000000000000000000000eb466342c4d449bc9f53a865d5cb90586f4052150000000000000000000000006de8acc0d406837030ce4dd28e7c08c5a96a30d20000000000000000000000000000000000000000000000000000000000000064000000000000000000000000ad6cea45f98444a922a2b4fe96b8c90f0862d2f400000000000000000000000000000000000000000000000000000198c7cbc2de00000000000000000000000000000000000000000000000000000000000fe77800000000000000000000000000000000000000000000000000000000000fc60c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000eb466342c4d449bc9f53a865d5cb90586f405215000000000000000000000000000000000000000000000000000000000000000500000000000000000000000000000000000000000000000000000000000000000000000000000000000000006de8acc0d406837030ce4dd28e7c08c5a96a30d2000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000001200000000000000000000000000000000000000000000000000000000000000044095ea7b30000000000000000000000006c28aef8977c9b773996d0e8376d2ee379446f2fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000006de8acc0d406837030ce4dd28e7c08c5a96a30d2000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000010000000000000000000000006c28aef8977c9b773996d0e8376d2ee379446f2f000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000001e00000000000000000000000000000000000000000000000000000000000000104414bf3890000000000000000000000006de8acc0d406837030ce4dd28e7c08c5a96a30d20000000000000000000000003a0c2ba54d6cbd3121f01b96dfd20e99d1696c9d0000000000000000000000000000000000000000000000000000000000000bb8000000000000000000000000ad6cea45f98444a922a2b4fe96b8c90f0862d2f400000000000000000000000000000000000000000000000000000198c7cbc2e000000000000000000000000000000000000000000000000000000000000fe7d80000000000000000000000000000000000000000000000001a80ae654dafe92d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000006de8acc0d406837030ce4dd28e7c08c5a96a30d2000000000000000000000000000000000000000000000000000000000000000500000000000000000000000000000000000000000000000000000000000000010000000000000000000000003a0c2ba54d6cbd3121f01b96dfd20e99d1696c9d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000242e1a7d4d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000003a0c2ba54d6cbd3121f01b96dfd20e99d1696c9d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000007a88038cbfd8e54ef2ccd8dd4a7191bd5f1df68e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee0000000000000000000000000000000000000000000000000000000000000000c509b86228a6c23bbba872ac4345d5a000000000000000000000000000000000c509b86228a6c23bbba872ac4345d5a0", + "nonce": "0x5", + "to": "0xce16f69375520ab01377ce7b88f5ba8c48f8d666", + "transactionIndex": "0x5e", + "value": "0xf886307c8cb7", + "type": "0x2", + "accessList": [], + "chainId": "0x1", + "v": "0x1", + "yParity": "0x1", + "r": "0x88364d0c78f354f57143abba2c2356e291537d4dbdafc8399e8fc1d8885f9ab", + "s": "0x521d5fc4b4fdd533014b933805667adba546dd8cf1136d9d84e195298964e308" + }, + { + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "from": "0x4838b106fce9647bdf1e7877bf73ce8b0bad5f97", + "gas": "0x5208", + "gasPrice": "0x23cf3fd4", + "maxPriorityFeePerGas": "0x0", + "maxFeePerGas": "0x23cf3fd4", + "hash": "0x09bee4a68da1a0248abcb8b48ef7bd15bdf4c81e2183503d5d4de68b5f558a08", + "input": "0x", + "nonce": "0x2c5cde", + "to": "0xc6093fd9cc143f9f058938868b2df2daf9a91d28", + "transactionIndex": "0x5f", + "value": "0x1d54a4fb28b60", + "type": "0x2", + "accessList": [], + "chainId": "0x1", + "v": "0x1", + "yParity": "0x1", + "r": "0xe3742c154d013763c273cb775b968d1d4ba5e1a9ff1f72be6e44ad9c9f73794", + "s": "0x1867c5d750f11b533790699e71af9245d522bc241605f8bb33cb213cdbda058c" + }, + { + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "from": "0xc7899ff6a3ac2ff59261bd960a8c880df06e1041", + "gas": "0xb59e4", + "gasPrice": "0x2816807a", + "maxPriorityFeePerGas": "0x44740a6", + "maxFeePerGas": "0x992e25a8", + "hash": "0xa952fb1cfa78c3a43e83a2f907b4139e485cf656abfc9cb4963eed391adba259", + "input": "0x13d79a0b000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000001a000000000000000000000000000000000000000000000000000000000000002c000000000000000000000000000000000000000000000000000000000000006e000000000000000000000000000000000000000000000000000000000000000080000000000000000000000006982508145454ce325ddbe47a25d4ec3d23119330000000000000000000000006b175474e89094c44da98b954eedeac495271d0f000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec7000000000000000000000000e28b3b32b6c345a34ff64674606124dd5aceca30000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec70000000000000000000000006b175474e89094c44da98b954eedeac495271d0f0000000000000000000000006982508145454ce325ddbe47a25d4ec3d2311933000000000000000000000000e28b3b32b6c345a34ff64674606124dd5aceca3000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000092ee6eb40000000000000000000000000000000000000000000000000000d71eadcb709d000000000000000000000000000000000000000000c481865574c0da3bcecb0f000000000000000000000000000000000000000000000000000b723f9c9a2a34000000000000000000000000000000000000000000000037483622c9d325650b000000000000000000000000000000000000000000000000000000003ca941af000000000000000000000000000000000000000000000008b50bca4aa290943d000000000000000000000000000000000000000000adb53acfa41aee1200000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000022000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000005000000000000000000000000511cc062c4257664427654b232dc636a424e4382000000000000000000000000000000000000000000000000000000003ca941af0000000000000000000000000000000000000000000000372bc6cdded5e5ef9c0000000000000000000000000000000000000000000000000000000068a5e7abf3ef4e1477de213e3c0a9dcc25112f3c62d65283db00bab8de61147b78f9a07b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000003ca941af00000000000000000000000000000000000000000000000000000000000001600000000000000000000000000000000000000000000000000000000000000041ef90ab93bc9a3ed02a462614a87353a5b4a8329b96bc1cf81b082f2f355ccad61945dcdad942a02c1feede9d3b9d720762200aea92f2d11e6815fcdbe3f5e9301c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000007000000000000000000000000ec9b9e8e450dbde63e00f6469ed43b3be463b758000000000000000000000000000000000000000000adb53acfa41aee12000000000000000000000000000000000000000000000000000008ab9a59eb804c280b0000000000000000000000000000000000000000000000000000000068a5d54238ea81af132723b40e895ea753af184bec74662c1e007e1a1225186b4f0d280100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000adb53acfa41aee120000000000000000000000000000000000000000000000000000000000000000000160000000000000000000000000000000000000000000000000000000000000004104517b883e0c24b47bd264a734f0b6986db0dd8f6790f5fa4d146b9d226018ab28d316b0da91f7e21d241ffbdd5fa79a018410548b909a46974b3e1c834b6de51c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000004e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000001200000000000000000000000006982508145454ce325ddbe47a25d4ec3d2311933000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000044a9059cbb000000000000000000000000a43fe16908251ee70ef74718545e4fe6c5ccec9f000000000000000000000000000000000000000000ada5ce2d2204f16ed6fa3000000000000000000000000000000000000000000000000000000000000000000000000000000000f3fe03cd60d1f138ebc106ce9575475100ebfc9a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000284d41aacaf00000000000000000000000000000000000000000000000000000000000000010000000000000000000000006c063a6e8cd45869b5eb75291e65a3de298f3aa8000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000001e4128acb080000000000000000000000009008d19f58aabd9ed0d60971565aa8510560ab4100000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000724b20e5c768e2f00000000000000000000000000000000000000000000000000000001000276a400000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000001040000000000000000000000000000000000000000000000089f58be7673e97ea0000000000000000000000000a43fe16908251ee70ef74718545e4fe6c5ccec9f00000000000000000000a404c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2022c0d9f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000724b20e5c768e2f0000000000000000000000006c063a6e8cd45869b5eb75291e65a3de298f3aa80000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ab81f1", + "nonce": "0x386a0", + "to": "0x9008d19f58aabd9ed0d60971565aa8510560ab41", + "transactionIndex": "0x60", + "value": "0x0", + "type": "0x2", + "accessList": [ + { + "address": "0x2c4c28ddbdac9c5e7055b4c863b72ea0149d8afe", + "storageKeys": [ + "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc", + "0xcb9bc6901b8328baa93d5336681aa8492517a2cac8a3fd7c32ab3c0d6bafd571" + ] + }, + { + "address": "0x6982508145454ce325ddbe47a25d4ec3d2311933", + "storageKeys": [ + "0x0000000000000000000000000000000000000000000000000000000000000006", + "0x0000000000000000000000000000000000000000000000000000000000000009", + "0x037199b0744c1ed84f0f7ae52d5760694aa3b29cff7b52bc1088ada5714d2980", + "0x057b09ddd84d79cc63e69fb06535985afb771ee7afe4ea34abc9ef7c96980d3a", + "0x0e1b053921947bb61bee9f4bdc68bd6cab8cd39676a3cd25cbd3106515a600eb", + "0x455834699c5564190d48058e2d2e544a0b4e2838253a203e6be1389c54aae4f5", + "0x47e689df7d1790c4c0e3b3e7a7038d6249f247630a93895e36180f067cbef1c4", + "0x64ac251e964da0f5b6d07d47428fa7c41487ff293e1deb77eb407c15028dab0c", + "0xee4d6b3f5bff5ce92442e4d4a360ae064af5d0d67d9b4da1508bc4e462eae046" + ] + }, + { + "address": "0x6b175474e89094c44da98b954eedeac495271d0f", + "storageKeys": [ + "0x31adef62206227419133dd9a6b4041532c22595206a596cf74f19493bfc8f368", + "0x825c54d62ddb4b2cdc677f01a756014816eb6f8131b86522cfc1169bfa29047b" + ] + }, + { + "address": "0x6c063a6e8cd45869b5eb75291e65a3de298f3aa8", + "storageKeys": [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000001", + "0x0000000000000000000000000000000000000000000000000000000000000004", + "0x0000000000000000000000000000000000000000000000000000000000000008", + "0x0000000000000000000000000000000000000000000000000000000000000030", + "0x75f96ab15d697e93042dc45b5c896c4b27e89bb6eaf39475c5c371cb2513f7d2" + ] + }, + { + "address": "0x9008d19f58aabd9ed0d60971565aa8510560ab41", + "storageKeys": [ + "0x0000000000000000000000000000000000000000000000000000000000000001", + "0x5e0e0bf7c6a341550890f20eb2bee1f1fdc1279dc3d08bf94ec14b58b56d0145", + "0xa650ff812770bfb6adf143a5d896d2d2729208a6475246e58dfc98228ced296d" + ] + }, + { + "address": "0x9e7ae8bdba9aa346739792d219a808884996db67", + "storageKeys": [] + }, + { + "address": "0xa43fe16908251ee70ef74718545e4fe6c5ccec9f", + "storageKeys": [ + "0x0000000000000000000000000000000000000000000000000000000000000006", + "0x0000000000000000000000000000000000000000000000000000000000000007", + "0x0000000000000000000000000000000000000000000000000000000000000008", + "0x0000000000000000000000000000000000000000000000000000000000000009", + "0x000000000000000000000000000000000000000000000000000000000000000a", + "0x000000000000000000000000000000000000000000000000000000000000000c" + ] + }, + { + "address": "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2", + "storageKeys": [ + "0x68e65bda2915772569224994d285f0b459d64f53fd952966225bf9b4df32f338", + "0x6fb7173931c795313ec7b4fe9a203cf03726c329ceab0d00c114fca68d3c6ff9", + "0x7eb73af6c6f0a8c693c0b4dad74e68b9f2946a2cdbe741b0448caf20325be06f" + ] + }, + { + "address": "0xc92e8bdf79f0507f65a392b0ab4667716bfe0110", + "storageKeys": [] + }, + { + "address": "0xdac17f958d2ee523a2206206994597c13d831ec7", + "storageKeys": [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000003", + "0x0000000000000000000000000000000000000000000000000000000000000004", + "0x000000000000000000000000000000000000000000000000000000000000000a", + "0x1f7a81d2f1f4a077ecb92cebd9b046a5c533ba2337c06dbba67afa748fca415a", + "0x31adef62206227419133dd9a6b4041532c22595206a596cf74f19493bfc8f368", + "0x825c54d62ddb4b2cdc677f01a756014816eb6f8131b86522cfc1169bfa29047b", + "0xcc5b58d8f9820bb78bf36fd49ecd41d77319a6d68107afe17a8af7d504d30666" + ] + }, + { + "address": "0xe28b3b32b6c345a34ff64674606124dd5aceca30", + "storageKeys": [ + "0x618059526d7d1bb5608c8e3a0740d1f656fa8a764ecca600a8e0e3e0c313ce66", + "0xa44b731602b5f99009ea5bf8fe3e732f61d79da751ded1d6123bb19e45289151", + "0xa5a0ef7d3eef8b32f68dbfdaa69010f4ab6b591bbccd25e4966c64af9ad30500" + ] + }, + { + "address": "0xf3fe03cd60d1f138ebc106ce9575475100ebfc9a", + "storageKeys": [] + } + ], + "chainId": "0x1", + "v": "0x0", + "yParity": "0x0", + "r": "0x9aed6526234382282b198649baed64ad50fdc5b96f003b0d64648e133dff7b8c", + "s": "0x573c5764c88d615469182b32d6438d130b5cbcdd6f4f50c777bbd309a829ca26" + }, + { + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "from": "0x2f091462316f650ca24dea5b8e90f9657af6915d", + "gas": "0xfb2e", + "gasPrice": "0x479285d4", + "maxPriorityFeePerGas": "0x23c34600", + "maxFeePerGas": "0x16b969d00", + "hash": "0xbfbbdc3e43e8e7a9629b2d3e2a7c5c998451d31542b92bab59a2de5aeefefea9", + "input": "0xa9059cbb000000000000000000000000559432e18b281731c054cd703d4b49872be4ed530000000000000000000000000000000000000000000000000000000021ca5c30", + "nonce": "0x180", + "to": "0xdac17f958d2ee523a2206206994597c13d831ec7", + "transactionIndex": "0x61", + "value": "0x0", + "type": "0x2", + "accessList": [], + "chainId": "0x1", + "v": "0x0", + "yParity": "0x0", + "r": "0x959faf52c8891f468fbe2608b9dd9657d1a3acd95cc4e626318d2590b2b52e38", + "s": "0x49a8f64312ffc980c822ecd050914e048f8cd8fbe34c3cbcf3081299d4376c81" + }, + { + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "from": "0x317d2da746d1360f4c113e7962a33394db2a1a4e", + "gas": "0x5cbfe", + "gasPrice": "0x9b04d3d4", + "maxPriorityFeePerGas": "0x77359400", + "maxFeePerGas": "0xa7c2cc55", + "hash": "0x929d916e4e493d4b8785a4636eb4615c2cf28d95f3a47a9559ba1bee8285f12a", + "input": "0xc7c7f5b300000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000116c5c2e85990000000000000000000000000000000000000000000000000000000000000000000000000000000000000000317d2da746d1360f4c113e7962a33394db2a1a4e0000000000000000000000000000000000000000000000000000000000007596000000000000000000000000317d2da746d1360f4c113e7962a33394db2a1a4e0000000000000000000000000000000000000000000000004563918244f400000000000000000000000000000000000000000000000000004563918244f4000000000000000000000000000000000000000000000000000000000000000000e000000000000000000000000000000000000000000000000000000000000001200000000000000000000000000000000000000000000000000000000000000140000000000000000000000000000000000000000000000000000000000000001600030100110100000000000000000000000000030d400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "nonce": "0x26", + "to": "0x1958853a8be062dc4f401750eb233f5850f0d0d2", + "transactionIndex": "0x62", + "value": "0x116c5c2e8599", + "type": "0x2", + "accessList": [], + "chainId": "0x1", + "v": "0x1", + "yParity": "0x1", + "r": "0x62320ac2b00cedf98d4968904cdc425a6277e01b007c6bb4d499ecc443d75c36", + "s": "0x6a642d33dce74b308bced5d8a4aad693257f70bdb067c44821956aa7c345b82f" + }, + { + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "from": "0x4838b106fce9647bdf1e7877bf73ce8b0bad5f97", + "gas": "0x5208", + "gasPrice": "0x23cf3fd4", + "maxPriorityFeePerGas": "0x0", + "maxFeePerGas": "0x23cf3fd4", + "hash": "0x854a247acfde5a5346f137d645aafce7266476f1ca57bbc56ff4d451686990d1", + "input": "0x", + "nonce": "0x2c5cdf", + "to": "0xc6093fd9cc143f9f058938868b2df2daf9a91d28", + "transactionIndex": "0x63", + "value": "0x19a881fe60260", + "type": "0x2", + "accessList": [], + "chainId": "0x1", + "v": "0x1", + "yParity": "0x1", + "r": "0x9b3abd0ede8ec80593ae00236ddfc40f156754c88c35c6adb60d561400b67b35", + "s": "0x60f6718fce2ffd2f654a098555b5f6bb1e94c4089803827fe6b9a72bd320617d" + }, + { + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "from": "0x3908f89b206af269cd10520a39683d3e9b709a0c", + "gas": "0xf77e", + "gasPrice": "0x47094b30", + "maxPriorityFeePerGas": "0x233a0b5c", + "maxFeePerGas": "0x510fec66", + "hash": "0x34c4b2585880bbbfd2bd41d407ab91c487ab3ea1d740bb10051a2d94eae979b7", + "input": "0xa9059cbb0000000000000000000000008fa4103428737fc17ba6566285492b19f4a42c3300000000000000000000000000000000000000000000069420a776ba5cab0000", + "nonce": "0x635", + "to": "0x699ccf919c1dfdfa4c374292f42cadc9899bf753", + "transactionIndex": "0x64", + "value": "0x0", + "type": "0x2", + "accessList": [], + "chainId": "0x1", + "v": "0x1", + "yParity": "0x1", + "r": "0x6e89dceefc3e5721f20af7ecf0c3bc94b13c87f1f554c28d9f77d58d261fbabd", + "s": "0x699fc9f6e49f9c7c3015c6edcea72fb07bca3ced8f9a2a13dc01b42ff5c82051" + }, + { + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "from": "0x0d0707963952f2fba59dd06f2b425ace40b492fe", + "gas": "0x19a28", + "gasPrice": "0x5f6b1b44", + "maxPriorityFeePerGas": "0x3b9bdb70", + "maxFeePerGas": "0x943dace5", + "hash": "0x881dde515af25e26e76a9f4fd56f92172e576868db77f8d0edb19546d055a6ff", + "input": "0x", + "nonce": "0x80d17a", + "to": "0x5c872bc1cdb41bc1467960e2c3b59a09cc93da05", + "transactionIndex": "0x65", + "value": "0x15104a419790400", + "type": "0x2", + "accessList": [], + "chainId": "0x1", + "v": "0x0", + "yParity": "0x0", + "r": "0x1d8001a2513b593efe3683fddc8b2039db609193993ac6449c2c1d8f122d7138", + "s": "0x109c7a8fff5c9eead57bd75a61494ffa68d0ea132ab8890aa23c395630e4f8dc" + }, + { + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "from": "0xfb19ffd1ff9316b7f5bba076ef4b78e4bbedf4e1", + "gas": "0xb5ea", + "gasPrice": "0x3b9aca00", + "hash": "0x7603ff263930ac4706dfc190bfa96bba194ec04561f686515626428442cfc3bc", + "input": "0xa9059cbb000000000000000000000000e76392fd5215a3e6bd794d7a31a3c8294c1eb18c0000000000000000000000000000000000000000000000000000000006359235", + "nonce": "0x4c8d8", + "to": "0xdac17f958d2ee523a2206206994597c13d831ec7", + "transactionIndex": "0x66", + "value": "0x0", + "type": "0x0", + "chainId": "0x1", + "v": "0x25", + "r": "0xde668d1e6aa59075da47060db6d56f942bf17d48578cf8e0bce27c8037acf285", + "s": "0x40518e51eb91cfb7647820407194b60be480da4a6c0679c9f90a0dee872edb51" + }, + { + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "from": "0x3814e8720156e8259aeef2803eb3fbb3cdddc549", + "gas": "0xfa1f", + "gasPrice": "0x9aa98162", + "maxPriorityFeePerGas": "0x77359400", + "maxFeePerGas": "0x9aa98162", + "hash": "0x7e99dbbc2acdc35b5ba4d4d460849fb57bb4fe43e62d47b34c18a922e5b9afac", + "input": "0xa9059cbb0000000000000000000000008ab12dde8535538cc1759f011ebb45856f0a8acb000000000000000000000000000000000000000000000000000000000aba9500", + "nonce": "0x0", + "to": "0xdac17f958d2ee523a2206206994597c13d831ec7", + "transactionIndex": "0x67", + "value": "0x0", + "type": "0x2", + "accessList": [], + "chainId": "0x1", + "v": "0x1", + "yParity": "0x1", + "r": "0x6e1cbedf81a45effcd2bde0686bab46aba7d1d7d3eaf400550c83fbede6f6016", + "s": "0x3e0560385c9b7fc8fe6dcee8b8eb04b38de32b75e3bcd1cb18c50c40a09fc172" + }, + { + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "from": "0x2a008273cf9c4276e3f85311ebab58b7b74fa1bb", + "gas": "0x493e0", + "gasPrice": "0x2c523e86", + "hash": "0xe84c6eb07c05b5741670c5f30aabd59a9d4da7b81069378f8db67644d00f99e6", + "input": "0x7ff36ab5000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000002a008273cf9c4276e3f85311ebab58b7b74fa1bb0000000000000000000000000000000000000000000000000000000068a5dc660000000000000000000000000000000000000000000000000000000000000002000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2000000000000000000000000e0265346277ad201609308b506e901b520150a08", + "nonce": "0x3", + "to": "0x7a250d5630b4cf539739df2c5dacb4c659f2488d", + "transactionIndex": "0x68", + "value": "0x740c1005bbd2a5", + "type": "0x0", + "chainId": "0x1", + "v": "0x26", + "r": "0x5788b4da5ca6c26f8db8c29e054f1305484ba1c45b06dd4c7e948d170a3f7c4b", + "s": "0x22b7a34fb63d89a1ddb1cf033c9f6a3bc90ce9aa23908b65dd0aeb7db8699689" + }, + { + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "from": "0xd04691fada4d78e62f74d51b77c3fab05dd5e656", + "gas": "0x5208", + "gasPrice": "0x4c762185", + "maxPriorityFeePerGas": "0x28a6e1b1", + "maxFeePerGas": "0x4dffd1f2", + "hash": "0x9cc229f51b3398a71370ab7ee4d775f9fc617c40c9379b786e03070e52fcd357", + "input": "0x", + "nonce": "0x0", + "to": "0xc00313c93a1dc6befa0d4b50697ec1ef11b5967e", + "transactionIndex": "0x69", + "value": "0x5309d8d77f14000", + "type": "0x2", + "accessList": [], + "chainId": "0x1", + "v": "0x1", + "yParity": "0x1", + "r": "0xa6d2bb45252b7e9884132de3ea83e622d2be3cdd8fa88782f2764ab66e4f45d7", + "s": "0x5c68ff0d8a4ed88bf7da396862da303b68a7dbcd7eef2f74aab5616613fd7ab2" + }, + { + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "from": "0x051ad444b2c9a1678c7f4632885851c0c08285fd", + "gas": "0x47694", + "gasPrice": "0x2884b194", + "maxPriorityFeePerGas": "0x4b571c0", + "maxFeePerGas": "0x4d7c6d00", + "hash": "0xb9254e48c65024653a86032ce4a41636e86c7bf83014e48b869f4b4955841702", + "input": "0x0d5f0e3b000000000000000000019afd051ad444b2c9a1678c7f4632885851c0c08285fd00000000000000000000000000000000000000000000000000000000004ba428000000000000000000000000000000000000000000000000000429b0d307836000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000001a00000000000000000000000c7bbec68d12a0d1830360f8ec58fa599ba1b0e9b000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec73ca20afc2aaa00000081b3202cffed5d56eb6a17662756ca0fdf350e732c9818", + "nonce": "0x7", + "to": "0x2e1dee213ba8d7af0934c49a23187babeaca8764", + "transactionIndex": "0x6a", + "value": "0x0", + "type": "0x2", + "accessList": [], + "chainId": "0x1", + "v": "0x0", + "yParity": "0x0", + "r": "0x812fb4b40c56bcb2f83428115e393b8a07c88778b59649f3fd3535c83c159c", + "s": "0x1b3befc4c53338b4447f0f2ef9a18a8f50542e9630859f860d34a2bbd8fe6eae" + }, + { + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "from": "0x1e8b52ea011a678a888cf7b4e7aa667170f192ca", + "gas": "0x77281", + "gasPrice": "0x5f6a09d4", + "maxPriorityFeePerGas": "0x3b9aca00", + "maxFeePerGas": "0x64e6e088", + "hash": "0xce3cd430b98efb93ee79ba0e04cec13aea6100a3e8d28c53a6f8d9db987e31b9", + "input": "0x2213bc0b000000000000000000000000df31a70a21a1931e02033dbba7deace6c45cfd0f000000000000000000000000129e5915326ed86f831b0e035acda34b209633d500000000000000000000000000000000000000000000000000002d79883d2000000000000000000000000000df31a70a21a1931e02033dbba7deace6c45cfd0f00000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000006a41fff991f0000000000000000000000001e8b52ea011a678a888cf7b4e7aa667170f192ca000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec70000000000000000000000000000000000000000000000000000000019d6036900000000000000000000000000000000000000000000000000000000000000a065e8b85d871ee28632d7b5be0f15b10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000500000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000001c000000000000000000000000000000000000000000000000000000000000002c000000000000000000000000000000000000000000000000000000000000003e0000000000000000000000000000000000000000000000000000000000000048000000000000000000000000000000000000000000000000000000000000000e4c1fb425e0000000000000000000000009c76dd6b5b200690fc9fb061a99b0a48e9a94325000000000000000000000000129e5915326ed86f831b0e035acda34b209633d500000000000000000000000000000000000000000000000000002d79883d200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000068a5cf5b00000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c4103b48be000000000000000000000000df31a70a21a1931e02033dbba7deace6c45cfd0f000000000000000000000000129e5915326ed86f831b0e035acda34b209633d500000000000000000000000000000000000000000000000000000000000000000000000000000000000000009c76dd6b5b200690fc9fb061a99b0a48e9a943250000000000000000000000000000000000000000000000000000000000001e0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e48d68a156000000000000000000000000df31a70a21a1931e02033dbba7deace6c45cfd0f000000000000000000000000000000000000000000000000000000000000271000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002cc02aaa39b223fe8d0a0e5c4f27ead9083c756cc200000064dac17f958d2ee523a2206206994597c13d831ec70000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000064c876d21d000000000000000000000000f5c4f3dc02c3fb9279495a8fef7b0741da956157000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec7000000000000000000000000000000000000000000000000000000001b1a9a8400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000012438c9c147000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec70000000000000000000000000000000000000000000000000000000000000046000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec7000000000000000000000000000000000000000000000000000000000000002400000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000044a9059cbb000000000000000000000000ad01c20d5886137e056775af56915de824c8fce50000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "nonce": "0xdb", + "to": "0x0000000000001ff3684f28c67538d4d072c22734", + "transactionIndex": "0x6b", + "value": "0x0", + "type": "0x2", + "accessList": [], + "chainId": "0x1", + "v": "0x1", + "yParity": "0x1", + "r": "0x6e904ba20f4d9d72e5f4c071be68d877617d759619a28b8cdfd79dc01ddecffc", + "s": "0x3f02dd94c35eb1ee184ec53b4381fa3c767251ca584bb3031c03e5cdf98f5492" + }, + { + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "from": "0x97fe8b7ba616945b5031e146229b9e727830f131", + "gas": "0x35a94", + "gasPrice": "0x9b04d3d4", + "maxPriorityFeePerGas": "0x77359400", + "maxFeePerGas": "0xa7c2cc55", + "hash": "0x51fdae21c680f10c68da05bb364e8a8e5e29ba09da79df1c5af9d02780e2e8e7", + "input": "0xa64dfa75000000000000000000000000be5f6232d8ed5a4057f33a28915bc1a8ab01335b000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000002a000000000000000000000000000000000000000000000000000000000000002e00000000000000000000000000000000000000000000000000000000000000320000000000000000000000000000000000000000000000000000000000000038000000000000000000000000000000000000000000000000000000000000003a000000000000000000000000000000000000000000000000000000000000003c000000000000000000000000000000000000000000000000000000000000003e0000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000004a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004c000000000000000000000000000000000000000000000000000000000000004e000000000000000000000000000000000000000000000000000000000000005000000000000000000000000000000000000000000000000000000000000000520000000000000000000000000000000000000000000000000000000000000054000000000000000000000000000000000000000000000000000000000000005600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000097fe8b7ba616945b5031e146229b9e727830f131000000000000000000000000000000000000000000000000000000000000058000000000000000000000000000000000000000000000000000000000000005c00000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000002600000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000003a697066733a2f2f516d586733513741314e386b4535394b54324d76756f6d4a41547466774e3848456d3257543647697831544578462f7b69647d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000002600000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001", + "nonce": "0x3e7", + "to": "0x864baa13e01d8f9e26549dc91b458cd15e34eb7c", + "transactionIndex": "0x6c", + "value": "0x0", + "type": "0x2", + "accessList": [], + "chainId": "0x1", + "v": "0x0", + "yParity": "0x0", + "r": "0x63642b4de7c95e847d1f75ad695f93c417f3528715a4d1e2548ba1647dcddfc7", + "s": "0x3103e58f7ad2723b1cfaa1a22066ebd2bc732306f10f914a2200a00189d66509" + }, + { + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "from": "0x4838b106fce9647bdf1e7877bf73ce8b0bad5f97", + "gas": "0x5208", + "gasPrice": "0x23cf3fd4", + "maxPriorityFeePerGas": "0x0", + "maxFeePerGas": "0x23cf3fd4", + "hash": "0xd36572df8b853ee2b6cab95a988ca7065b03d00fc8b2c1411301cadf49343092", + "input": "0x", + "nonce": "0x2c5ce0", + "to": "0xc6093fd9cc143f9f058938868b2df2daf9a91d28", + "transactionIndex": "0x6d", + "value": "0xedbdd761ba60", + "type": "0x2", + "accessList": [], + "chainId": "0x1", + "v": "0x0", + "yParity": "0x0", + "r": "0x3c240ef59ec96ca4e3eac84f6bd5dd6bf07e1926f93391df1d54334989c26528", + "s": "0x59cb9097d1dd02d9e3939c5b14fb4b490c190e06937dfd51b9fafed5c302196e" + }, + { + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "from": "0xe93685f3bba03016f02bd1828badd6195988d950", + "gas": "0x8b660", + "gasPrice": "0x2dde0f0d", + "maxPriorityFeePerGas": "0xa0ecf39", + "maxFeePerGas": "0x35078237", + "hash": "0x5cbc170410348d6fdc873705eff0fe6e22f82115fa66a032cacaf14b00d3fd73", + "input": "0x0894edf1000000000000000000000000000000000000000000000000000000000000004036e7b0f7494af14e92055752ad7efac6d5d62065da6b772b7bb98d7127e4495d000000000000000000000000000000000000000000000000000000000000005101000000000000111000007683000000000000000000000000cab283e4bb527aa9b157bae7180fef19e2aaa71a00007595000000000000000000000000f2b2bbdc9975cf680324de62a30a31bc3ab8a4d5000000000000000000000000000000", + "nonce": "0x250aa2", + "to": "0xc02ab410f0734efa3f14628780e6e695156024c2", + "transactionIndex": "0x6e", + "value": "0x0", + "type": "0x2", + "accessList": [], + "chainId": "0x1", + "v": "0x1", + "yParity": "0x1", + "r": "0xe4879c5f426e5b8b7d3b41b17f5a614cdcc78ba669d6ab6182f862e18444066c", + "s": "0x2ef31d6b3adedbaef6a1738d4d6c6d124bc48d085044104b81d8e0298f208b2d" + }, + { + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "from": "0xe6767c337d50e51241257059d58508fd8fba91a1", + "gas": "0x1772f", + "gasPrice": "0x6b55cbd4", + "maxPriorityFeePerGas": "0x47868c00", + "maxFeePerGas": "0x792d1e40", + "hash": "0x885b570f51838e21d3ee6f7635b9019859c9dc284b61a10e597428521779a514", + "input": "0xa9059cbb0000000000000000000000003732c23fe8422fa1dc7759e2f34515de41bf268b000000000000000000000000000000000000000000000000000000001c9c3800", + "nonce": "0x62", + "to": "0xdac17f958d2ee523a2206206994597c13d831ec7", + "transactionIndex": "0x6f", + "value": "0x0", + "type": "0x2", + "accessList": [], + "chainId": "0x1", + "v": "0x1", + "yParity": "0x1", + "r": "0xf1f4a5531fcd333695b2e7417fdae4e3ddcb708e3654f9c1867506eb6572399", + "s": "0x4cc7b9087b477cdc8ba54ddba333d85082f78fa79ee941911673ee58ff9e2c4d" + }, + { + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "from": "0x4cf7d1f09d73d05538b701c2ccd071298569b18b", + "gas": "0x5208", + "gasPrice": "0x47094b30", + "maxPriorityFeePerGas": "0x233a0b5c", + "maxFeePerGas": "0x510fec66", + "hash": "0x6dc512f88c8907da511443523a0ce1f9d83b9590fb25470b40a5c7dabecb9cb0", + "input": "0x", + "nonce": "0x1", + "to": "0x4cf7d1f09d73d05538b701c2ccd071298569b18b", + "transactionIndex": "0x70", + "value": "0x0", + "type": "0x2", + "accessList": [], + "chainId": "0x1", + "v": "0x0", + "yParity": "0x0", + "r": "0x797d9e07782c1a7570722138d950c8633aef9809eeaeb8fbdb036971011f793c", + "s": "0x1708f6394868c6821120e4ce8ffbbefc2aafdd564fc7e5c11f9b2267229ef5ee" + }, + { + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "from": "0x1a6bf7734a87c9fb327162eed8cff7b1982e7e5e", + "gas": "0x5208", + "gasPrice": "0x47094b30", + "maxPriorityFeePerGas": "0x233a0b5c", + "maxFeePerGas": "0x510fec66", + "hash": "0x293dfc29e6d24ec039d5da89eca31f7874ab0f73485242b24472991bbc4a81ac", + "input": "0x", + "nonce": "0x5", + "to": "0xdc3a5dcd4d2299bdd8a9345169029088f4b0e0c2", + "transactionIndex": "0x71", + "value": "0xcb8a708304c0", + "type": "0x2", + "accessList": [], + "chainId": "0x1", + "v": "0x0", + "yParity": "0x0", + "r": "0x2028d41e9a0141761d433e4cfc7884adef975420a963487fad220cf7d2b8a1de", + "s": "0x50eb5b6b9ffa49a76c96c444aee674f28f0dd3f8f04d3a2b39308617780f5fd1" + }, + { + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "from": "0xa2d9d10acece8512a99a3048c88fa274ba59e2cf", + "gas": "0x5208", + "gasPrice": "0x47094b30", + "maxPriorityFeePerGas": "0x233a0b5c", + "maxFeePerGas": "0x4da16a23", + "hash": "0x3199c465ca839a4561420e9ae7a22247c0faf5f3b8b22675e9d280871b018d5e", + "input": "0x", + "nonce": "0x184", + "to": "0xf051193691fc11600e1228ca27ede7663c4de189", + "transactionIndex": "0x72", + "value": "0x886c98b76000", + "type": "0x2", + "accessList": [], + "chainId": "0x1", + "v": "0x1", + "yParity": "0x1", + "r": "0x9c93f4bd79ccb99d1be47372b5aaccfc208982f979bafc1da3b32590f373663", + "s": "0x612088c93597b86f051f32154119e30b10d7d6d503d22becefdd1ebda48ce67e" + }, + { + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "from": "0xb0bfdffa1c53912c9d6a1f7250d2bac0f6fb0373", + "gas": "0x5208", + "gasPrice": "0x47094b30", + "maxPriorityFeePerGas": "0x233a0b5c", + "maxFeePerGas": "0x510fec66", + "hash": "0x6cb4300ccb17a849f57e47bf2e950fc2ff88e1536d19e413b23ff3c321c11e8c", + "input": "0x", + "nonce": "0x0", + "to": "0x02ca45d242a1e2cd80f860a265e42a048c67b712", + "transactionIndex": "0x73", + "value": "0xb1a2bc2ec50000", + "type": "0x2", + "accessList": [], + "chainId": "0x1", + "v": "0x0", + "yParity": "0x0", + "r": "0x720690819dbcd99ec4fcd2a5c6050b5688a8f9dafc0dbf6f29aef638f4bc6f52", + "s": "0x5ae4c4f5c0722b19eb4eb959e6f071b169c6838e9e0dce0e52f8980215b872c1" + }, + { + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "from": "0x9502954fba7ca26abdefc7ef4c9dd59b8b54f03f", + "gas": "0x5208", + "gasPrice": "0x47094b30", + "maxPriorityFeePerGas": "0x233a0b5c", + "maxFeePerGas": "0x4da16a23", + "hash": "0x5dd9f8f7e9b3c71c4e4c00191f358b82e5438d0ee6bbbe841d945089e2df8cba", + "input": "0x", + "nonce": "0x0", + "to": "0x9502954fba7ca26abdefc7ef4c9dd59b8b54f03f", + "transactionIndex": "0x74", + "value": "0x0", + "type": "0x2", + "accessList": [], + "chainId": "0x1", + "v": "0x0", + "yParity": "0x0", + "r": "0xfe29aaa1afa27064570a2be9bb914bbf81fa756fa237a6cc1d5aff31e7664602", + "s": "0x63c6b6167df7e2ee0306a02786b2964541d018146c9b27d71c586842ff8707b5" + }, + { + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "from": "0x173449e23b2768042a7acbbf00a2b32d262b3a4b", + "gas": "0x6dd33", + "gasPrice": "0x26ca3054", + "maxPriorityFeePerGas": "0x2faf080", + "maxFeePerGas": "0x3075589a", + "hash": "0x319241083fbbdfd49447eca57464f0d22354bf4e0b14185af1db71dad3699358", + "input": "0x765e827f0000000000000000000000000000000000000000000000000000000000000040000000000000000000000000173449e23b2768042a7acbbf00a2b32d262b3a4b00000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000020000000000000000000000000f49178c8e3cd7cfc025f68fc80c9775d979ac3a7000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001200000000000000000000000000000000000000000000000000000000000000140000000000000000000000000000124f800000000000000000000000000014df90000000000000000000000000000000000000000000000000000000000017fbc000000000000000000000000039387000000000000000000000000003751c5e500000000000000000000000000000000000000000000000000000000000003c000000000000000000000000000000000000000000000000000000000000004a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000024426da7d880000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000120000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec7000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000044095ea7b30000000000000000000000007d3201fa7a85c0a5f9fa1c0c6b9d0b784368d2ac0000000000000000000000000000000000000000000000000000000000180d1400000000000000000000000000000000000000000000000000000000000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec7000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000044a9059cbb0000000000000000000000000e8495d95270c688473e88f02bb3101a3f7cec73000000000000000000000000000000000000000000000000000000000f60c480000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b57d3201fa7a85c0a5f9fa1c0c6b9d0b784368d2ac000000000000000000000000000061a800000000000000000000000000005daa000068a5cf6d000000000000dac17f958d2ee523a2206206994597c13d831ec700000000000000000000000000000000000000000000000000000000000e98ea4bb7fa8f191b0588c1709ab2c1b038a113d42b76391e187187df085a48a654303c10f44cd3e9c226fed8d202651f301fca3d84052cdd089a84ed15afc22cc55b1b0000000000000000000000000000000000000000000000000000000000000000000000000000000000004170cd8c9a9c00e848c3a93a47f52e71aedc923e3ccc6421729ab51d0d9278adb53ea1c0a4f2234e1312ac4c744a3b950dd879a387b10593570903e6e9a40081951c00000000000000000000000000000000000000000000000000000000000000", + "nonce": "0x4b5", + "to": "0x0000000071727de22e5e9d8baf0edac6f37da032", + "transactionIndex": "0x75", + "value": "0x0", + "type": "0x4", + "accessList": [], + "chainId": "0x1", + "authorizationList": [ + { + "chainId": "0x1", + "address": "0xd2e28229f6f2c235e57de2ebc727025a1d0530fb", + "nonce": "0x0", + "yParity": "0x1", + "r": "0x62ffcce54b35a2c7c0cf41ae86c22d90d0ea9fe274a3e06e51f34078552e3356", + "s": "0x1ae7c6e429c48dcb05e3b22cf8588439c94109951186c1a6c55e32b6649bcafe" + } + ], + "v": "0x1", + "yParity": "0x1", + "r": "0xb8d4b1baed6404be7fcb4358fe8497a15f78bd761f0b7e62d19a077c302cc004", + "s": "0x2791874c668c0458b2fa7e0e2248d6251a40a09aad38869d7de62e93a1ee4b9f" + }, + { + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "from": "0xfcc46ea12aec1f62c3d58803fe94aa8f768f2636", + "gas": "0x171ab", + "gasPrice": "0x5f6a09d4", + "maxPriorityFeePerGas": "0x3b9aca00", + "maxFeePerGas": "0x6625e6dc", + "hash": "0x971833c61c63e80e90a69edadce6cf052ed708c0b89a52714e3de65174e501d2", + "input": "0xa9059cbb000000000000000000000000552549d39c22c1e55e4f91318d41f5422d204c4e00000000000000000000000000000000000000000000000000000000017d7840", + "nonce": "0xf5", + "to": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48", + "transactionIndex": "0x76", + "value": "0x0", + "type": "0x2", + "accessList": [], + "chainId": "0x1", + "v": "0x1", + "yParity": "0x1", + "r": "0xe5d335bf550c364ffcee7c8460c803222a041c0cd746127373fd0b9729de9299", + "s": "0x4056279be100eaab0f391c8a464bd009b5b0883b7fc9fddb9965a5d1766e78c8" + }, + { + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "from": "0x52f1e1001c28f6807530470b67a83a348040e31b", + "gas": "0x1740a", + "gasPrice": "0x6458e75e", + "maxPriorityFeePerGas": "0x6458e75e", + "maxFeePerGas": "0x6458e75e", + "hash": "0x9ea42c0b70a8feb646683ef29551a4f1e35aa5c52ff4e92d41885fddc062eee3", + "input": "0xa9059cbb00000000000000000000000043e19182b2f68d8a83d56a7304665ce0ea3fb3e3000000000000000000000000000000000000000000000000000000002e4686e2", + "nonce": "0x6", + "to": "0xdac17f958d2ee523a2206206994597c13d831ec7", + "transactionIndex": "0x77", + "value": "0x0", + "type": "0x2", + "accessList": [], + "chainId": "0x1", + "v": "0x1", + "yParity": "0x1", + "r": "0xbf11a33a31fa408edd4e23b563e2b2baed6c6d5d7dcc425d9b2c717971bdb7e", + "s": "0x4228f38b07269ccc79ec419e5321492a7fad4a6ce9d9853021f638f9a2db166c" + }, + { + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "from": "0x242ad3fac0e6820f50ce520117fe8774f21b5f9f", + "gas": "0x5208", + "gasPrice": "0x419ca4d4", + "maxPriorityFeePerGas": "0x1dcd6500", + "maxFeePerGas": "0x4234f3e1", + "hash": "0xa7e4c653d8b4852c0fc96106be40980b66a3bb81a9730f4c5bdd8010851faabd", + "input": "0x", + "nonce": "0x0", + "to": "0x094d77550b654f1fceb33f405ae0415c4cbcb0f1", + "transactionIndex": "0x78", + "value": "0x9e92c7881c800", + "type": "0x2", + "accessList": [], + "chainId": "0x1", + "v": "0x0", + "yParity": "0x0", + "r": "0x6a0ad5377b1db6a5daa1475af73d72f39f15fb610af3d33c5613be5fcee0e617", + "s": "0x4b674ea61ebfb2716ed38393d86562740a9db80f43f3880d5b0c9776e17c4fc6" + }, + { + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "from": "0x9f256a5703a493cac86a09fa84473517ace6ca81", + "gas": "0x45405", + "gasPrice": "0x5f6a09d4", + "maxPriorityFeePerGas": "0x3b9aca00", + "maxFeePerGas": "0x685dd9c9", + "hash": "0xc68ff18171aa3f4a21462af5e370a7e4a4daf55fdd111ec4ffb45b4b64bc1185", + "input": "0x209178e800000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000570154115e4e30000000000000000000000000000000000000000000000000000000068a5cece0000000000000000000000000000000000000000000000000000000000000064000000000000000000000000000000000000000000000000000000000161bd0e0000000000000000000000000000000000000000000000000000000068a5ce4f0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2000000000000000000000000fa417cd491632620a582851b07abf7e3447bba71", + "nonce": "0x17e5", + "to": "0x055c48651015cf5b21599a4ded8c402fdc718058", + "transactionIndex": "0x79", + "value": "0x6a94d74f430000", + "type": "0x2", + "accessList": [], + "chainId": "0x1", + "v": "0x1", + "yParity": "0x1", + "r": "0x3c5a0e76f5ef8d2ea21a0eac730ce97565091a0b1a959bf95a328d06d1de9fc", + "s": "0x704b1d8f5b320e9f6bd49565962c7ed287063f8c9da91d0dcaa4d06e2c32ae0b" + }, + { + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "from": "0x4838b106fce9647bdf1e7877bf73ce8b0bad5f97", + "gas": "0x565f", + "gasPrice": "0x23cf3fd4", + "maxPriorityFeePerGas": "0x0", + "maxFeePerGas": "0x23cf3fd4", + "hash": "0x2c522d01183e9ed70caaf75c940ba9908d573cfc9996b3e7adc90313798279c8", + "input": "0x", + "nonce": "0x2c5ce1", + "to": "0x388c818ca8b9251b393131c08a736a67ccb19297", + "transactionIndex": "0x7a", + "value": "0x12bf92aae0c2e70", + "type": "0x2", + "accessList": [], + "chainId": "0x1", + "v": "0x0", + "yParity": "0x0", + "r": "0x4a5703e4d8daf045f021cb32897a25b17d61b9ab629a59f0731ef4cce63f93d6", + "s": "0x711812237c1fed6aaf08e9f47fc47e547fdaceba9ab7507e62af29a945354fb6" + } + ], + "transactionsRoot": "0xca2e7e6ebe1b08030fe5b9efabee82b95e62f07cff5a4298354002c46b41a216", + "uncles": [], + "withdrawals": [ + { + "index": "0x5dce3db", + "validatorIndex": "0x1dd01a", + "address": "0x5b3e2bb0fc7cad985c1461fec254a9cc162ff168", + "amount": "0x12417c4" + }, + { + "index": "0x5dce3dc", + "validatorIndex": "0x1dd01b", + "address": "0xe839a3e9efb32c6a56ab7128e51056585275506c", + "amount": "0x1213ae3" + }, + { + "index": "0x5dce3dd", + "validatorIndex": "0x1dd01c", + "address": "0xe839a3e9efb32c6a56ab7128e51056585275506c", + "amount": "0x120e5a4" + }, + { + "index": "0x5dce3de", + "validatorIndex": "0x1dd01d", + "address": "0xe839a3e9efb32c6a56ab7128e51056585275506c", + "amount": "0x120df02" + }, + { + "index": "0x5dce3df", + "validatorIndex": "0x1dd01e", + "address": "0xe839a3e9efb32c6a56ab7128e51056585275506c", + "amount": "0x1210d63" + }, + { + "index": "0x5dce3e0", + "validatorIndex": "0x1dd01f", + "address": "0xe839a3e9efb32c6a56ab7128e51056585275506c", + "amount": "0x120d70e" + }, + { + "index": "0x5dce3e1", + "validatorIndex": "0x1dd020", + "address": "0xe839a3e9efb32c6a56ab7128e51056585275506c", + "amount": "0x120491b" + }, + { + "index": "0x5dce3e2", + "validatorIndex": "0x1dd021", + "address": "0xa554965fcd0d9493313e2eafa27eef5b058336f4", + "amount": "0x121f4c4" + }, + { + "index": "0x5dce3e3", + "validatorIndex": "0x1dd022", + "address": "0xa554965fcd0d9493313e2eafa27eef5b058336f4", + "amount": "0x1215726" + }, + { + "index": "0x5dce3e4", + "validatorIndex": "0x1dd023", + "address": "0xe839a3e9efb32c6a56ab7128e51056585275506c", + "amount": "0x120ae6a" + }, + { + "index": "0x5dce3e5", + "validatorIndex": "0x1dd024", + "address": "0xd29b9bb69a1890232382e5936aa195031eae1577", + "amount": "0x124a7fd" + }, + { + "index": "0x5dce3e6", + "validatorIndex": "0x1dd025", + "address": "0xe839a3e9efb32c6a56ab7128e51056585275506c", + "amount": "0x12123cb" + }, + { + "index": "0x5dce3e7", + "validatorIndex": "0x1dd026", + "address": "0xe839a3e9efb32c6a56ab7128e51056585275506c", + "amount": "0x120be70" + }, + { + "index": "0x5dce3e8", + "validatorIndex": "0x1dd027", + "address": "0xe839a3e9efb32c6a56ab7128e51056585275506c", + "amount": "0x121f5d1" + }, + { + "index": "0x5dce3e9", + "validatorIndex": "0x1dd028", + "address": "0xe839a3e9efb32c6a56ab7128e51056585275506c", + "amount": "0x1215cfe" + }, + { + "index": "0x5dce3ea", + "validatorIndex": "0x1dd029", + "address": "0xe839a3e9efb32c6a56ab7128e51056585275506c", + "amount": "0x12198a4" + } + ], + "withdrawalsRoot": "0x7a3ad42fdb774c0e662597141f52a81210ffec9ce0db9dfcd841f747b0909010" +} diff --git a/substrate/frame/revive/test-assets/eth_receipts.json b/substrate/frame/revive/test-assets/eth_receipts.json new file mode 100644 index 0000000000000..dea646889a014 --- /dev/null +++ b/substrate/frame/revive/test-assets/eth_receipts.json @@ -0,0 +1,7779 @@ +[ + { + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "contractAddress": null, + "cumulativeGasUsed": "0x3e5a5", + "effectiveGasPrice": "0x23cf3fd4", + "from": "0x693ca5c6852a7d212dabc98b28e15257465c11f3", + "gasUsed": "0x3e5a5", + "logs": [ + { + "address": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x000000000000000000000000000000000004444c5dc75cb358380d2e3de08a90", + "0x0000000000000000000000000000000aa232009084bd71a5797d089aa4edfad4" + ], + "data": "0x000000000000000000000000000000000000000000000000000000035c9618f6", + "blockNumber": "0x161bd0f", + "transactionHash": "0xf6d8b07ddcf9a9d44c99c3665fd8c78f0ccd32506350ea5a9be1a68ba08bfd1f", + "transactionIndex": "0x0", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x0", + "removed": false + }, + { + "address": "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x000000000000000000000000000000000004444c5dc75cb358380d2e3de08a90", + "0x0000000000000000000000000000000aa232009084bd71a5797d089aa4edfad4" + ], + "data": "0x0000000000000000000000000000000000000000000000000001528fd550bc9a", + "blockNumber": "0x161bd0f", + "transactionHash": "0xf6d8b07ddcf9a9d44c99c3665fd8c78f0ccd32506350ea5a9be1a68ba08bfd1f", + "transactionIndex": "0x0", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x1", + "removed": false + }, + { + "address": "0xdac17f958d2ee523a2206206994597c13d831ec7", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x000000000000000000000000000000000004444c5dc75cb358380d2e3de08a90", + "0x0000000000000000000000000000000aa232009084bd71a5797d089aa4edfad4" + ], + "data": "0x000000000000000000000000000000000000000000000000000000005c0c965e", + "blockNumber": "0x161bd0f", + "transactionHash": "0xf6d8b07ddcf9a9d44c99c3665fd8c78f0ccd32506350ea5a9be1a68ba08bfd1f", + "transactionIndex": "0x0", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x2", + "removed": false + }, + { + "address": "0x000000000004444c5dc75cb358380d2e3de08a90", + "topics": [ + "0x40e9cecb9f5f1f1c5b9c97dec2917b7ee92e57ba5563708daca94dd84ad7112f", + "0xe500210c7ea6bfd9f69dce044b09ef384ec2b34832f132baec3b418208e3a657", + "0x0000000000000000000000000000000aa232009084bd71a5797d089aa4edfad4" + ], + "data": "0x000000000000000000000000000000000000000000000000000000035c9618f6ffffffffffffffffffffffffffffffffffffffffffffffffd0061697905954000000000000000000000000000000000000003c76c3128ad6b3eb40ac1d9f90e600000000000000000000000000000000000000000000000004caaa5ba8029c92000000000000000000000000000000000000000000000000000000000002f1ba0000000000000000000000000000000000000000000000000000000000000000", + "blockNumber": "0x161bd0f", + "transactionHash": "0xf6d8b07ddcf9a9d44c99c3665fd8c78f0ccd32506350ea5a9be1a68ba08bfd1f", + "transactionIndex": "0x0", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x3", + "removed": false + }, + { + "address": "0x000000000004444c5dc75cb358380d2e3de08a90", + "topics": [ + "0x40e9cecb9f5f1f1c5b9c97dec2917b7ee92e57ba5563708daca94dd84ad7112f", + "0x90078845bceb849b171873cfbc92db8540e9c803ff57d9d21b1215ec158e79b3", + "0x0000000000000000000000000000000aa232009084bd71a5797d089aa4edfad4" + ], + "data": "0xfffffffffffffffffffffffffffffffffffffffffffffffffadce6399e224f9a000000000000000000000000000000000000000000000000000000005c0c965e000000000000000000000000000000000000000000043b148c07fa0e7487fde1000000000000000000000000000000000000000000000000005049606b676761fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd0e360000000000000000000000000000000000000000000000000000000000000000", + "blockNumber": "0x161bd0f", + "transactionHash": "0xf6d8b07ddcf9a9d44c99c3665fd8c78f0ccd32506350ea5a9be1a68ba08bfd1f", + "transactionIndex": "0x0", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x4", + "removed": false + }, + { + "address": "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x00000000000000000000000073d53553ee552c1f2a9722e6407d43e41e19593f", + "0x0000000000000000000000000000000aa232009084bd71a5797d089aa4edfad4" + ], + "data": "0x0000000000000000000000000000000000000000000000002ff9e9686fa6ac00", + "blockNumber": "0x161bd0f", + "transactionHash": "0xf6d8b07ddcf9a9d44c99c3665fd8c78f0ccd32506350ea5a9be1a68ba08bfd1f", + "transactionIndex": "0x0", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x5", + "removed": false + }, + { + "address": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x0000000000000000000000000000000aa232009084bd71a5797d089aa4edfad4", + "0x00000000000000000000000073d53553ee552c1f2a9722e6407d43e41e19593f" + ], + "data": "0x000000000000000000000000000000000000000000000000000000035c16902a", + "blockNumber": "0x161bd0f", + "transactionHash": "0xf6d8b07ddcf9a9d44c99c3665fd8c78f0ccd32506350ea5a9be1a68ba08bfd1f", + "transactionIndex": "0x0", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x6", + "removed": false + }, + { + "address": "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x0000000000000000000000000000000aa232009084bd71a5797d089aa4edfad4", + "0x000000000000000000000000000000000004444c5dc75cb358380d2e3de08a90" + ], + "data": "0x000000000000000000000000000000000000000000000000351e55bea6d51900", + "blockNumber": "0x161bd0f", + "transactionHash": "0xf6d8b07ddcf9a9d44c99c3665fd8c78f0ccd32506350ea5a9be1a68ba08bfd1f", + "transactionIndex": "0x0", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x7", + "removed": false + }, + { + "address": "0x0000000aa232009084bd71a5797d089aa4edfad4", + "topics": [], + "data": "0xe34cc98d396db0ad165915ad7ee8e27580670d53d2de88e52db6258aea02ab6e", + "blockNumber": "0x161bd0f", + "transactionHash": "0xf6d8b07ddcf9a9d44c99c3665fd8c78f0ccd32506350ea5a9be1a68ba08bfd1f", + "transactionIndex": "0x0", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x8", + "removed": false + } + ], + "logsBloom": "0x000000000000000004000000000000000000000000000000000000000000000000000000200000000010000000000100020000000c0000000000000002000002000000000000000009000108000000000000000000000020000000000000000000000000000000000000000000000000000000000000020000000010000000000000040840000000000000000000000000000000010000000000000000100000400000000000200000000080100000000000000000000000000000000000000000000802000000000000000000000000000000400000004000000000000001000000200000000000004000000080000000001000000800080000000000000000", + "status": "0x1", + "to": "0x0000000aa232009084bd71a5797d089aa4edfad4", + "transactionHash": "0xf6d8b07ddcf9a9d44c99c3665fd8c78f0ccd32506350ea5a9be1a68ba08bfd1f", + "transactionIndex": "0x0", + "type": "0x2" + }, + { + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "contractAddress": null, + "cumulativeGasUsed": "0x87f43", + "effectiveGasPrice": "0x23cf3fd4", + "from": "0xc445a471debbc8ef54dbfd90af406b6a682313e3", + "gasUsed": "0x4999e", + "logs": [ + { + "address": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x00000000000000000000000088e6a0c2ddd26feeb64f039a2c41296fcb3f5640", + "0x000000000000000000000000c90d7c41974397cb8b260238ec9ecb6bbd965259" + ], + "data": "0x0000000000000000000000000000000000000000000000000000004d163ab3f6", + "blockNumber": "0x161bd0f", + "transactionHash": "0xa4d83b0f03540b4659285e886c75e06cb1dffbda15bc9042db68c63ac948593d", + "transactionIndex": "0x1", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x9", + "removed": false + }, + { + "address": "0x4342b77fe3417bcb09d0a4383301b0dc733c755b", + "topics": [ + "0x9b97792d4bc68bb4ac03fb65cd7d887197ae9100c1afea4383f9700cf8637cfb", + "0xd82c2736ad6fe23474357b319e12205803b760f7f9d1e419ad91e64f09f99c74" + ], + "data": "0x00000000000000000000000000000000000000000000460cdc7e35644d59cff70000000000000000000000000000000000000000000000044cca9748c816200e", + "blockNumber": "0x161bd0f", + "transactionHash": "0xa4d83b0f03540b4659285e886c75e06cb1dffbda15bc9042db68c63ac948593d", + "transactionIndex": "0x1", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0xa", + "removed": false + }, + { + "address": "0xd315a9c38ec871068fec378e4ce78af528c76293", + "topics": [ + "0x2170c741c41531aec20e7c107c24eecfdd15e69c9bb0a8dd37b1840b9e0b207b", + "0x4342b77fe3417bcb09d0a4383301b0dc733c755b000200000000000000000002", + "0x000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48", + "0x000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2" + ], + "data": "0x0000000000000000000000000000000000000000000000000000004d0563b78d0000000000000000000000000000000000000000000000044cca9748c816200e", + "blockNumber": "0x161bd0f", + "transactionHash": "0xa4d83b0f03540b4659285e886c75e06cb1dffbda15bc9042db68c63ac948593d", + "transactionIndex": "0x1", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0xb", + "removed": false + }, + { + "address": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x000000000000000000000000c90d7c41974397cb8b260238ec9ecb6bbd965259", + "0x000000000000000000000000d315a9c38ec871068fec378e4ce78af528c76293" + ], + "data": "0x0000000000000000000000000000000000000000000000000000004d0563b78d", + "blockNumber": "0x161bd0f", + "transactionHash": "0xa4d83b0f03540b4659285e886c75e06cb1dffbda15bc9042db68c63ac948593d", + "transactionIndex": "0x1", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0xc", + "removed": false + }, + { + "address": "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x000000000000000000000000d315a9c38ec871068fec378e4ce78af528c76293", + "0x00000000000000000000000088e6a0c2ddd26feeb64f039a2c41296fcb3f5640" + ], + "data": "0x0000000000000000000000000000000000000000000000044cca9748c816200e", + "blockNumber": "0x161bd0f", + "transactionHash": "0xa4d83b0f03540b4659285e886c75e06cb1dffbda15bc9042db68c63ac948593d", + "transactionIndex": "0x1", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0xd", + "removed": false + }, + { + "address": "0x88e6a0c2ddd26feeb64f039a2c41296fcb3f5640", + "topics": [ + "0xc42079f94a6350d7e6235f29174924f928cc2ac818eb64fed8004e115fbcca67", + "0x000000000000000000000000c90d7c41974397cb8b260238ec9ecb6bbd965259", + "0x000000000000000000000000c90d7c41974397cb8b260238ec9ecb6bbd965259" + ], + "data": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffb2e9c54c0a0000000000000000000000000000000000000000000000044cca9748c816200e0000000000000000000000000000000000003c7922239c6e6f4650809908a91600000000000000000000000000000000000000000000000051b0f41e60a05433000000000000000000000000000000000000000000000000000000000002f1bd", + "blockNumber": "0x161bd0f", + "transactionHash": "0xa4d83b0f03540b4659285e886c75e06cb1dffbda15bc9042db68c63ac948593d", + "transactionIndex": "0x1", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0xe", + "removed": false + } + ], + "logsBloom": "0x0000000001000000000000000000400000000000800000000000000004000020000000200000000000000a000000000002080000080020002000000100400000000000000000200808000008000820804000000000000000000000000000000000000000000000004000000000000000000000400000000000000010000800000000800000000000002000400000000200000000210000000000001000000000000000000000200000000000000000000000000000000000002800000008000000000002000000000000200000080000000000000004000100000000000000000000200000000000000010000000000004000000002000040000000000000000", + "status": "0x1", + "to": "0xc90d7c41974397cb8b260238ec9ecb6bbd965259", + "transactionHash": "0xa4d83b0f03540b4659285e886c75e06cb1dffbda15bc9042db68c63ac948593d", + "transactionIndex": "0x1", + "type": "0x2" + }, + { + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "contractAddress": null, + "cumulativeGasUsed": "0xcb6de", + "effectiveGasPrice": "0x23cf3fd4", + "from": "0x8361a4786bd2081acbf4a0802aab618d6aa1c674", + "gasUsed": "0x4379b", + "logs": [ + { + "address": "0xdac17f958d2ee523a2206206994597c13d831ec7", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x000000000000000000000000c7bbec68d12a0d1830360f8ec58fa599ba1b0e9b", + "0x000000000000000000000000c90d7c41974397cb8b260238ec9ecb6bbd965259" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000f14ae20b1", + "blockNumber": "0x161bd0f", + "transactionHash": "0xbd48baa01338f5d923f6f2f3e38958854e3c40f1c02a6636100a85072db66168", + "transactionIndex": "0x2", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0xf", + "removed": false + }, + { + "address": "0x315a892a4d02c5c1169d5f0e4f7cb4130cc0d138", + "topics": [ + "0x9b97792d4bc68bb4ac03fb65cd7d887197ae9100c1afea4383f9700cf8637cfb", + "0x9b65abd5af36b457eec7bcae8438283bfdee71c23b6129a9b75b63f758674743" + ], + "data": "0x000000000000000000000000000000000000000000000db439926f2897826ffd000000000000000000000000000000000000000000000000d763281af8acbffc", + "blockNumber": "0x161bd0f", + "transactionHash": "0xbd48baa01338f5d923f6f2f3e38958854e3c40f1c02a6636100a85072db66168", + "transactionIndex": "0x2", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x10", + "removed": false + }, + { + "address": "0xd315a9c38ec871068fec378e4ce78af528c76293", + "topics": [ + "0x2170c741c41531aec20e7c107c24eecfdd15e69c9bb0a8dd37b1840b9e0b207b", + "0x315a892a4d02c5c1169d5f0e4f7cb4130cc0d138000200000000000000000009", + "0x000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec7", + "0x000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000f115584f7000000000000000000000000000000000000000000000000d763281af8acbffc", + "blockNumber": "0x161bd0f", + "transactionHash": "0xbd48baa01338f5d923f6f2f3e38958854e3c40f1c02a6636100a85072db66168", + "transactionIndex": "0x2", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x11", + "removed": false + }, + { + "address": "0xdac17f958d2ee523a2206206994597c13d831ec7", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x000000000000000000000000c90d7c41974397cb8b260238ec9ecb6bbd965259", + "0x000000000000000000000000d315a9c38ec871068fec378e4ce78af528c76293" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000f115584f7", + "blockNumber": "0x161bd0f", + "transactionHash": "0xbd48baa01338f5d923f6f2f3e38958854e3c40f1c02a6636100a85072db66168", + "transactionIndex": "0x2", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x12", + "removed": false + }, + { + "address": "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x000000000000000000000000d315a9c38ec871068fec378e4ce78af528c76293", + "0x000000000000000000000000c7bbec68d12a0d1830360f8ec58fa599ba1b0e9b" + ], + "data": "0x000000000000000000000000000000000000000000000000d763281af8acbffc", + "blockNumber": "0x161bd0f", + "transactionHash": "0xbd48baa01338f5d923f6f2f3e38958854e3c40f1c02a6636100a85072db66168", + "transactionIndex": "0x2", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x13", + "removed": false + }, + { + "address": "0xc7bbec68d12a0d1830360f8ec58fa599ba1b0e9b", + "topics": [ + "0xc42079f94a6350d7e6235f29174924f928cc2ac818eb64fed8004e115fbcca67", + "0x000000000000000000000000c90d7c41974397cb8b260238ec9ecb6bbd965259", + "0x000000000000000000000000c90d7c41974397cb8b260238ec9ecb6bbd965259" + ], + "data": "0x000000000000000000000000000000000000000000000000d763281af8acbffcfffffffffffffffffffffffffffffffffffffffffffffffffffffff0eb51df4f000000000000000000000000000000000000000000043b6637f8c724bd98d5df0000000000000000000000000000000000000000000000000f7eaa8ee01d5748fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd0e3c", + "blockNumber": "0x161bd0f", + "transactionHash": "0xbd48baa01338f5d923f6f2f3e38958854e3c40f1c02a6636100a85072db66168", + "transactionIndex": "0x2", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x14", + "removed": false + } + ], + "logsBloom": "0x10000040000000000000000002004000000000000000000000000000000000200000002000000000000000000000010002000000080020000080000100000000000010000000200800000208000820804000001000000000000000000000000000000000002000000000000000000000000000600000000000000010000800000000000800000000002000400000000000000000200000000000001000100000000000000000000000000080200000000000000000000000000800000000004000002002000008000000000000080800000000020004000000000000000000030000200000000000000000000000000000000000002000000000000000000000", + "status": "0x1", + "to": "0xc90d7c41974397cb8b260238ec9ecb6bbd965259", + "transactionHash": "0xbd48baa01338f5d923f6f2f3e38958854e3c40f1c02a6636100a85072db66168", + "transactionIndex": "0x2", + "type": "0x2" + }, + { + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "contractAddress": null, + "cumulativeGasUsed": "0x12a596", + "effectiveGasPrice": "0x2d2a4df1", + "from": "0x6b063481f8216b5624ec496dd72376bef00faffd", + "gasUsed": "0x5eeb8", + "logs": [ + { + "address": "0x9008d19f58aabd9ed0d60971565aa8510560ab41", + "topics": [ + "0xa07a543ab8a018198e99ca0184c93fe9050a79400a0a723441f84de1d972cc17", + "0x00000000000000000000000089b537d4e0de035303dc1bdae18394f7a6c15c36" + ], + "data": "0x00000000000000000000000084ca8bc7997272c7cfb4d0cd3d55cd942b3c9419000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb480000000000000000000000000000000000000000000000230ec810de9c63d000000000000000000000000000000000000000000000000000000000001ae32af8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000003829475008131557bbcd760e6b5f8e8ff5e2160f6082c1a62fa964054a6ff448ac89b537d4e0de035303dc1bdae18394f7a6c15c3668a5cea00000000000000000", + "blockNumber": "0x161bd0f", + "transactionHash": "0x634164bee85be6e15815df5f3d000f1a5ab87106bd7a73c77602db8a12d916c6", + "transactionIndex": "0x3", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x15", + "removed": false + }, + { + "address": "0x84ca8bc7997272c7cfb4d0cd3d55cd942b3c9419", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x00000000000000000000000089b537d4e0de035303dc1bdae18394f7a6c15c36", + "0x0000000000000000000000009008d19f58aabd9ed0d60971565aa8510560ab41" + ], + "data": "0x0000000000000000000000000000000000000000000000230ec810de9c63d000", + "blockNumber": "0x161bd0f", + "transactionHash": "0x634164bee85be6e15815df5f3d000f1a5ab87106bd7a73c77602db8a12d916c6", + "transactionIndex": "0x3", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x16", + "removed": false + }, + { + "address": "0x84ca8bc7997272c7cfb4d0cd3d55cd942b3c9419", + "topics": [ + "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925", + "0x00000000000000000000000089b537d4e0de035303dc1bdae18394f7a6c15c36", + "0x000000000000000000000000c92e8bdf79f0507f65a392b0ab4667716bfe0110" + ], + "data": "0xfffffffffffffffffffffffffffffffffffffffffffecc9a02e668c0ffc70606", + "blockNumber": "0x161bd0f", + "transactionHash": "0x634164bee85be6e15815df5f3d000f1a5ab87106bd7a73c77602db8a12d916c6", + "transactionIndex": "0x3", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x17", + "removed": false + }, + { + "address": "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x000000000000000000000000b60b34d830f26c5a11c47ddb1e0a1f31d90a78b1", + "0x0000000000000000000000009008d19f58aabd9ed0d60971565aa8510560ab41" + ], + "data": "0x00000000000000000000000000000000000000000000000000d3c631f934190e", + "blockNumber": "0x161bd0f", + "transactionHash": "0x634164bee85be6e15815df5f3d000f1a5ab87106bd7a73c77602db8a12d916c6", + "transactionIndex": "0x3", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x18", + "removed": false + }, + { + "address": "0x84ca8bc7997272c7cfb4d0cd3d55cd942b3c9419", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x0000000000000000000000009008d19f58aabd9ed0d60971565aa8510560ab41", + "0x000000000000000000000000b60b34d830f26c5a11c47ddb1e0a1f31d90a78b1" + ], + "data": "0x0000000000000000000000000000000000000000000000134f6e6f97fa338eb8", + "blockNumber": "0x161bd0f", + "transactionHash": "0x634164bee85be6e15815df5f3d000f1a5ab87106bd7a73c77602db8a12d916c6", + "transactionIndex": "0x3", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x19", + "removed": false + }, + { + "address": "0x84ca8bc7997272c7cfb4d0cd3d55cd942b3c9419", + "topics": [ + "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925", + "0x0000000000000000000000009008d19f58aabd9ed0d60971565aa8510560ab41", + "0x0000000000000000000000002db07a3a657b6e16999b67d48500486a1cb0d649" + ], + "data": "0x0000000000000000000000000000000000000000ffffff2b13d40994899ed471", + "blockNumber": "0x161bd0f", + "transactionHash": "0x634164bee85be6e15815df5f3d000f1a5ab87106bd7a73c77602db8a12d916c6", + "transactionIndex": "0x3", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x1a", + "removed": false + }, + { + "address": "0xb60b34d830f26c5a11c47ddb1e0a1f31d90a78b1", + "topics": [ + "0xc42079f94a6350d7e6235f29174924f928cc2ac818eb64fed8004e115fbcca67", + "0x0000000000000000000000002db07a3a657b6e16999b67d48500486a1cb0d649", + "0x0000000000000000000000009008d19f58aabd9ed0d60971565aa8510560ab41" + ], + "data": "0x0000000000000000000000000000000000000000000000134f6e6f97fa338eb8ffffffffffffffffffffffffffffffffffffffffffffffffff2c39ce06cbe6f20000000000000000000000000000000000000000035057e9b5ae5c4a4943b8de0000000000000000000000000000000000000000000000953a360f14392059effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeac5e", + "blockNumber": "0x161bd0f", + "transactionHash": "0x634164bee85be6e15815df5f3d000f1a5ab87106bd7a73c77602db8a12d916c6", + "transactionIndex": "0x3", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x1b", + "removed": false + }, + { + "address": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x000000000000000000000000a14afc841a2742cbd52587b705f00f322309580e", + "0x0000000000000000000000009008d19f58aabd9ed0d60971565aa8510560ab41" + ], + "data": "0x000000000000000000000000000000000000000000000000000000000c09061f", + "blockNumber": "0x161bd0f", + "transactionHash": "0x634164bee85be6e15815df5f3d000f1a5ab87106bd7a73c77602db8a12d916c6", + "transactionIndex": "0x3", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x1c", + "removed": false + }, + { + "address": "0x84ca8bc7997272c7cfb4d0cd3d55cd942b3c9419", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x0000000000000000000000009008d19f58aabd9ed0d60971565aa8510560ab41", + "0x000000000000000000000000a14afc841a2742cbd52587b705f00f322309580e" + ], + "data": "0x00000000000000000000000000000000000000000000000fa7469b560e451907", + "blockNumber": "0x161bd0f", + "transactionHash": "0x634164bee85be6e15815df5f3d000f1a5ab87106bd7a73c77602db8a12d916c6", + "transactionIndex": "0x3", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x1d", + "removed": false + }, + { + "address": "0x84ca8bc7997272c7cfb4d0cd3d55cd942b3c9419", + "topics": [ + "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925", + "0x0000000000000000000000009008d19f58aabd9ed0d60971565aa8510560ab41", + "0x0000000000000000000000002db07a3a657b6e16999b67d48500486a1cb0d649" + ], + "data": "0x0000000000000000000000000000000000000000ffffff1b6c8d6e3e7b59bb6a", + "blockNumber": "0x161bd0f", + "transactionHash": "0x634164bee85be6e15815df5f3d000f1a5ab87106bd7a73c77602db8a12d916c6", + "transactionIndex": "0x3", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x1e", + "removed": false + }, + { + "address": "0xa14afc841a2742cbd52587b705f00f322309580e", + "topics": [ + "0xc42079f94a6350d7e6235f29174924f928cc2ac818eb64fed8004e115fbcca67", + "0x0000000000000000000000002db07a3a657b6e16999b67d48500486a1cb0d649", + "0x0000000000000000000000009008d19f58aabd9ed0d60971565aa8510560ab41" + ], + "data": "0x00000000000000000000000000000000000000000000000fa7469b560e451907fffffffffffffffffffffffffffffffffffffffffffffffffffffffff3f6f9e1000000000000000000000000000000000000000000000e0a911b42c1dd6fb73a000000000000000000000000000000000000000000000000028436a16f2261c2fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbbab3", + "blockNumber": "0x161bd0f", + "transactionHash": "0x634164bee85be6e15815df5f3d000f1a5ab87106bd7a73c77602db8a12d916c6", + "transactionIndex": "0x3", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x1f", + "removed": false + }, + { + "address": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x0000000000000000000000007858e59e0c01ea06df3af3d20ac7b0003275d4bf", + "0x0000000000000000000000009008d19f58aabd9ed0d60971565aa8510560ab41" + ], + "data": "0x000000000000000000000000000000000000000000000000000000000eda6b92", + "blockNumber": "0x161bd0f", + "transactionHash": "0x634164bee85be6e15815df5f3d000f1a5ab87106bd7a73c77602db8a12d916c6", + "transactionIndex": "0x3", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x20", + "removed": false + }, + { + "address": "0xdac17f958d2ee523a2206206994597c13d831ec7", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x0000000000000000000000009008d19f58aabd9ed0d60971565aa8510560ab41", + "0x0000000000000000000000007858e59e0c01ea06df3af3d20ac7b0003275d4bf" + ], + "data": "0x000000000000000000000000000000000000000000000000000000000edb15d4", + "blockNumber": "0x161bd0f", + "transactionHash": "0x634164bee85be6e15815df5f3d000f1a5ab87106bd7a73c77602db8a12d916c6", + "transactionIndex": "0x3", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x21", + "removed": false + }, + { + "address": "0x7858e59e0c01ea06df3af3d20ac7b0003275d4bf", + "topics": [ + "0xc42079f94a6350d7e6235f29174924f928cc2ac818eb64fed8004e115fbcca67", + "0x0000000000000000000000002db07a3a657b6e16999b67d48500486a1cb0d649", + "0x0000000000000000000000009008d19f58aabd9ed0d60971565aa8510560ab41" + ], + "data": "0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffff125946e000000000000000000000000000000000000000000000000000000000edb15d40000000000000000000000000000000000000000fff55b68b5f9b667ec39892600000000000000000000000000000000000000000000000000022514b6f71388fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc", + "blockNumber": "0x161bd0f", + "transactionHash": "0x634164bee85be6e15815df5f3d000f1a5ab87106bd7a73c77602db8a12d916c6", + "transactionIndex": "0x3", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x22", + "removed": false + }, + { + "address": "0x2db07a3a657b6e16999b67d48500486a1cb0d649", + "topics": [ + "0xd7cf88e4bcca455701f69cc774034a649b16dcf4c3607676ea5f556353332623" + ], + "data": "0x000000000000000000000000000000000020471041ccf0884a74288beb780000", + "blockNumber": "0x161bd0f", + "transactionHash": "0x634164bee85be6e15815df5f3d000f1a5ab87106bd7a73c77602db8a12d916c6", + "transactionIndex": "0x3", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x23", + "removed": false + }, + { + "address": "0x9008d19f58aabd9ed0d60971565aa8510560ab41", + "topics": [ + "0xed99827efb37016f2275f98c4bcf71c7551c75d59e9b450f79fa32e60be672c2", + "0x0000000000000000000000002db07a3a657b6e16999b67d48500486a1cb0d649" + ], + "data": "0x000000000000000000000000000000000000000000000000000000000000000047a4a98900000000000000000000000000000000000000000000000000000000", + "blockNumber": "0x161bd0f", + "transactionHash": "0x634164bee85be6e15815df5f3d000f1a5ab87106bd7a73c77602db8a12d916c6", + "transactionIndex": "0x3", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x24", + "removed": false + }, + { + "address": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x0000000000000000000000009008d19f58aabd9ed0d60971565aa8510560ab41", + "0x00000000000000000000000089b537d4e0de035303dc1bdae18394f7a6c15c36" + ], + "data": "0x000000000000000000000000000000000000000000000000000000001ae32af8", + "blockNumber": "0x161bd0f", + "transactionHash": "0x634164bee85be6e15815df5f3d000f1a5ab87106bd7a73c77602db8a12d916c6", + "transactionIndex": "0x3", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x25", + "removed": false + }, + { + "address": "0x9008d19f58aabd9ed0d60971565aa8510560ab41", + "topics": [ + "0x40338ce1a7c49204f0099533b1e9a7ee0a3d261f84974ab7af36105b8c4e9db4", + "0x000000000000000000000000a9d635ef85bc37eb9ff9d6165481ea230ed32392" + ], + "data": "0x", + "blockNumber": "0x161bd0f", + "transactionHash": "0x634164bee85be6e15815df5f3d000f1a5ab87106bd7a73c77602db8a12d916c6", + "transactionIndex": "0x3", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x26", + "removed": false + } + ], + "logsBloom": "0x00401000000000000000040000001000004000000000000000010000000000002000000800440000000000006000010002000040080420000000000000200c00000400000000000808180008000000000000000900000000000000000000000000000000000000000000804000100000000200002000000010004010008800000000000000000040000000008000000000848000c50000000000000000100000020000600000200000000080000000000000001000000000010000000000000000000002000800200001000000000000000020000000840000000000000000000010202000000000000002000104000000204000000000100000000000000000", + "status": "0x1", + "to": "0xa9d635ef85bc37eb9ff9d6165481ea230ed32392", + "transactionHash": "0x634164bee85be6e15815df5f3d000f1a5ab87106bd7a73c77602db8a12d916c6", + "transactionIndex": "0x3", + "type": "0x2" + }, + { + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "contractAddress": null, + "cumulativeGasUsed": "0x12fc80", + "effectiveGasPrice": "0x38cc2a7c", + "from": "0xf70da97812cb96acdf810712aa562db8dfa3dbef", + "gasUsed": "0x56ea", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "status": "0x1", + "to": "0xfbd6acca70a8632061593f1a07056affb7965ac3", + "transactionHash": "0xa655290cbb744571dd7455dacd45109cb3c7adce13392aa7ed3f2f64f5b644e4", + "transactionIndex": "0x4", + "type": "0x2" + }, + { + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "contractAddress": null, + "cumulativeGasUsed": "0x135e15", + "effectiveGasPrice": "0x6b55cbd4", + "from": "0x6d478cb16317680a517ff89253f82032efdc31ba", + "gasUsed": "0x6195", + "logs": [ + { + "address": "0x3b50805453023a91a8bf641e279401a0b23fa6f9", + "topics": [ + "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925", + "0x0000000000000000000000006d478cb16317680a517ff89253f82032efdc31ba", + "0x000000000000000000000000111111125421ca6dc452d289314280a0f8842a65" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000000", + "blockNumber": "0x161bd0f", + "transactionHash": "0xfeee6a0b16850d3300339f32be2765355e301689b0f430b9f7db1695806ace46", + "transactionIndex": "0x5", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x27", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000100000000000000000000000000000000000001000000000000000000000002000000000000000000000000000000200000000000000000000000400000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000004000000000020000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000010000000000000000000000000000000080000000000000000000000000000", + "status": "0x1", + "to": "0x3b50805453023a91a8bf641e279401a0b23fa6f9", + "transactionHash": "0xfeee6a0b16850d3300339f32be2765355e301689b0f430b9f7db1695806ace46", + "transactionIndex": "0x5", + "type": "0x2" + }, + { + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "contractAddress": null, + "cumulativeGasUsed": "0x18616d", + "effectiveGasPrice": "0x708ad4a2", + "from": "0xf70da97812cb96acdf810712aa562db8dfa3dbef", + "gasUsed": "0x50358", + "logs": [ + { + "address": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x000000000000000000000000f70da97812cb96acdf810712aa562db8dfa3dbef", + "0x000000000000000000000000f5042e6ffac5a625d4e7848e0b01373d8eb9e222" + ], + "data": "0x000000000000000000000000000000000000000000000000000000001185c2f9", + "blockNumber": "0x161bd0f", + "transactionHash": "0xcfe2a7a914c53bdfe847d9571acf416fa3b2c432157f35c6087936de0be2f4a9", + "transactionIndex": "0x6", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x28", + "removed": false + }, + { + "address": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48", + "topics": [ + "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925", + "0x000000000000000000000000f5042e6ffac5a625d4e7848e0b01373d8eb9e222", + "0x0000000000000000000000000000000000001ff3684f28c67538d4d072c22734" + ], + "data": "0x000000000000000000000000000000000000000000000000000000001185c2f9", + "blockNumber": "0x161bd0f", + "transactionHash": "0xcfe2a7a914c53bdfe847d9571acf416fa3b2c432157f35c6087936de0be2f4a9", + "transactionIndex": "0x6", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x29", + "removed": false + }, + { + "address": "0xf5042e6ffac5a625d4e7848e0b01373d8eb9e222", + "topics": [ + "0x93485dcd31a905e3ffd7b012abe3438fa8fa77f98ddc9f50e879d3fa7ccdc324" + ], + "data": "0x000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000044095ea7b30000000000000000000000000000000000001ff3684f28c67538d4d072c22734000000000000000000000000000000000000000000000000000000001185c2f900000000000000000000000000000000000000000000000000000000", + "blockNumber": "0x161bd0f", + "transactionHash": "0xcfe2a7a914c53bdfe847d9571acf416fa3b2c432157f35c6087936de0be2f4a9", + "transactionIndex": "0x6", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x2a", + "removed": false + }, + { + "address": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x000000000000000000000000f5042e6ffac5a625d4e7848e0b01373d8eb9e222", + "0x000000000000000000000000df31a70a21a1931e02033dbba7deace6c45cfd0f" + ], + "data": "0x000000000000000000000000000000000000000000000000000000001185c2f9", + "blockNumber": "0x161bd0f", + "transactionHash": "0xcfe2a7a914c53bdfe847d9571acf416fa3b2c432157f35c6087936de0be2f4a9", + "transactionIndex": "0x6", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x2b", + "removed": false + }, + { + "address": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x000000000000000000000000df31a70a21a1931e02033dbba7deace6c45cfd0f", + "0x00000000000000000000000051c72848c68a965f66fa7a88855f9f7784502a7f" + ], + "data": "0x000000000000000000000000000000000000000000000000000000001185c2f9", + "blockNumber": "0x161bd0f", + "transactionHash": "0xcfe2a7a914c53bdfe847d9571acf416fa3b2c432157f35c6087936de0be2f4a9", + "transactionIndex": "0x6", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x2c", + "removed": false + }, + { + "address": "0x163f8c2467924be0ae7b5347228cabf260318753", + "topics": [ + "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925", + "0x00000000000000000000000051c72848c68a965f66fa7a88855f9f7784502a7f", + "0x000000000000000000000000def1c0ded9bec7f1a1670819833240f027b25eff" + ], + "data": "0x0000000000000000000000000000000000000000000054407b5110567d6a792f", + "blockNumber": "0x161bd0f", + "transactionHash": "0xcfe2a7a914c53bdfe847d9571acf416fa3b2c432157f35c6087936de0be2f4a9", + "transactionIndex": "0x6", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x2d", + "removed": false + }, + { + "address": "0x163f8c2467924be0ae7b5347228cabf260318753", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x00000000000000000000000051c72848c68a965f66fa7a88855f9f7784502a7f", + "0x000000000000000000000000df31a70a21a1931e02033dbba7deace6c45cfd0f" + ], + "data": "0x0000000000000000000000000000000000000000000000114bfd68823e680000", + "blockNumber": "0x161bd0f", + "transactionHash": "0xcfe2a7a914c53bdfe847d9571acf416fa3b2c432157f35c6087936de0be2f4a9", + "transactionIndex": "0x6", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x2e", + "removed": false + }, + { + "address": "0xdef1c0ded9bec7f1a1670819833240f027b25eff", + "topics": [ + "0xac75f773e3a92f1a02b12134d65e1f47f8a14eabe4eaf1e24624918e6a8b269f" + ], + "data": "0x6d6c1b356c6aa0fa097186ea2b390cafdb337780b03f47be9cfcfd204a3e633200000000000000000000000051c72848c68a965f66fa7a88855f9f7784502a7f000000000000000000000000df31a70a21a1931e02033dbba7deace6c45cfd0f000000000000000000000000163f8c2467924be0ae7b5347228cabf260318753000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb480000000000000000000000000000000000000000000000114bfd68823e680000000000000000000000000000000000000000000000000000000000001185c2f9", + "blockNumber": "0x161bd0f", + "transactionHash": "0xcfe2a7a914c53bdfe847d9571acf416fa3b2c432157f35c6087936de0be2f4a9", + "transactionIndex": "0x6", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x2f", + "removed": false + }, + { + "address": "0x163f8c2467924be0ae7b5347228cabf260318753", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x000000000000000000000000df31a70a21a1931e02033dbba7deace6c45cfd0f", + "0x000000000000000000000000f5042e6ffac5a625d4e7848e0b01373d8eb9e222" + ], + "data": "0x0000000000000000000000000000000000000000000000114bfd68823e680000", + "blockNumber": "0x161bd0f", + "transactionHash": "0xcfe2a7a914c53bdfe847d9571acf416fa3b2c432157f35c6087936de0be2f4a9", + "transactionIndex": "0x6", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x30", + "removed": false + }, + { + "address": "0xf5042e6ffac5a625d4e7848e0b01373d8eb9e222", + "topics": [ + "0x93485dcd31a905e3ffd7b012abe3438fa8fa77f98ddc9f50e879d3fa7ccdc324" + ], + "data": "0x0000000000000000000000000000000000001ff3684f28c67538d4d072c227340000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005c42213bc0b000000000000000000000000df31a70a21a1931e02033dbba7deace6c45cfd0f000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48000000000000000000000000000000000000000000000000000000001185c2f9000000000000000000000000df31a70a21a1931e02033dbba7deace6c45cfd0f00000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000004e41fff991f000000000000000000000000f5042e6ffac5a625d4e7848e0b01373d8eb9e222000000000000000000000000163f8c2467924be0ae7b5347228cabf26031875300000000000000000000000000000000000000000000001135683983035c6d9000000000000000000000000000000000000000000000000000000000000000a09ec76e970eebf8e87ffa04210af43c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000016000000000000000000000000000000000000000000000000000000000000000e4c1fb425e000000000000000000000000df31a70a21a1931e02033dbba7deace6c45cfd0f000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48000000000000000000000000000000000000000000000000000000001185c2f900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000068a5cf7d00000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000028438c9c147000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb480000000000000000000000000000000000000000000000000000000000002710000000000000000000000000def1c0ded9bec7f1a1670819833240f027b25eff000000000000000000000000000000000000000000000000000000000000018400000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000001a4dac748d4000000000000000000000000163f8c2467924be0ae7b5347228cabf260318753000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb480000000000000000000000000000000000000000000000114bfd68823e680000000000000000000000000000000000000000000000000000000000001185c2f900000000000000000000000051c72848c68a965f66fa7a88855f9f7784502a7f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f70da97812cb96acdf810712aa562db8dfa3dbef0000000068a5ce8e000000000000000000000000000000000000000068a5ce520000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000001c308445be1fba35529ad765babeb7d04e657d10b1e885929e9088fb8de4e8a73137377dc9e14ddb6b6209e77701b660572de494c7eab10db93d7249805bba87eb000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "blockNumber": "0x161bd0f", + "transactionHash": "0xcfe2a7a914c53bdfe847d9571acf416fa3b2c432157f35c6087936de0be2f4a9", + "transactionIndex": "0x6", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x31", + "removed": false + }, + { + "address": "0x163f8c2467924be0ae7b5347228cabf260318753", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x000000000000000000000000f5042e6ffac5a625d4e7848e0b01373d8eb9e222", + "0x000000000000000000000000fb6f757c7e98a124dad7b927025c8194576125c3" + ], + "data": "0x0000000000000000000000000000000000000000000000114bfd68823e680000", + "blockNumber": "0x161bd0f", + "transactionHash": "0xcfe2a7a914c53bdfe847d9571acf416fa3b2c432157f35c6087936de0be2f4a9", + "transactionIndex": "0x6", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x32", + "removed": false + }, + { + "address": "0xf5042e6ffac5a625d4e7848e0b01373d8eb9e222", + "topics": [ + "0x93485dcd31a905e3ffd7b012abe3438fa8fa77f98ddc9f50e879d3fa7ccdc324" + ], + "data": "0x000000000000000000000000f5042e6ffac5a625d4e7848e0b01373d8eb9e2220000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001243b2253c8000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e00000000000000000000000000000000000000000000000000000000000000001000000000000000000000000163f8c2467924be0ae7b5347228cabf2603187530000000000000000000000000000000000000000000000000000000000000001000000000000000000000000fb6f757c7e98a124dad7b927025c8194576125c30000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "blockNumber": "0x161bd0f", + "transactionHash": "0xcfe2a7a914c53bdfe847d9571acf416fa3b2c432157f35c6087936de0be2f4a9", + "transactionIndex": "0x6", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x33", + "removed": false + } + ], + "logsBloom": "0x0000000000000000000000000000000000000000000000000000000000000000000000000000008000000000010000000000000000000080008004020020000000000000000000200800000800000000000004020004100000000000000000000001000080000040000000000800044000004000000000000000001000000000000000001000000000000000000000000000000001000000000000000000000002800000000020000000408202000002000000000000000000400000000000400100008a000000000800000000008000000000000400000000000000000008000090000000000000000000000000000000000000000000000800000000000000", + "status": "0x1", + "to": "0xbbbfd134e9b44bfb5123898ba36b01de7ab93d98", + "transactionHash": "0xcfe2a7a914c53bdfe847d9571acf416fa3b2c432157f35c6087936de0be2f4a9", + "transactionIndex": "0x6", + "type": "0x2" + }, + { + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "contractAddress": null, + "cumulativeGasUsed": "0x1d9f55", + "effectiveGasPrice": "0x65045d54", + "from": "0x6bf97afe2d2c790999cded2a8523009eb8a0823f", + "gasUsed": "0x53de8", + "logs": [ + { + "address": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48", + "topics": [ + "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925", + "0x000000000000000000000000366aa56191e89d219ac36b33406fce85da1e7554", + "0x000000000000000000000000c92e8bdf79f0507f65a392b0ab4667716bfe0110" + ], + "data": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", + "blockNumber": "0x161bd0f", + "transactionHash": "0xcd1ae1806eebfe30add1509b02c6f89e85865c7243450742ac86d402507667fd", + "transactionIndex": "0x7", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x34", + "removed": false + }, + { + "address": "0x9008d19f58aabd9ed0d60971565aa8510560ab41", + "topics": [ + "0xed99827efb37016f2275f98c4bcf71c7551c75d59e9b450f79fa32e60be672c2", + "0x00000000000000000000000060bf78233f48ec42ee3f101b9a05ec7878728006" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000000760f2a0b00000000000000000000000000000000000000000000000000000000", + "blockNumber": "0x161bd0f", + "transactionHash": "0xcd1ae1806eebfe30add1509b02c6f89e85865c7243450742ac86d402507667fd", + "transactionIndex": "0x7", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x35", + "removed": false + }, + { + "address": "0x9008d19f58aabd9ed0d60971565aa8510560ab41", + "topics": [ + "0xa07a543ab8a018198e99ca0184c93fe9050a79400a0a723441f84de1d972cc17", + "0x000000000000000000000000366aa56191e89d219ac36b33406fce85da1e7554" + ], + "data": "0x000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48000000000000000000000000899d774e0f8e14810d628db63e65dfacea682343000000000000000000000000000000000000000000000000000000000bebc2000000000000000000000000000000000000000000000006b06fe010314e3e0681000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000380bae44426440f171dbd7817d8375281635d1209ebc616a66fab075a25cef1271366aa56191e89d219ac36b33406fce85da1e755468a5d4fb0000000000000000", + "blockNumber": "0x161bd0f", + "transactionHash": "0xcd1ae1806eebfe30add1509b02c6f89e85865c7243450742ac86d402507667fd", + "transactionIndex": "0x7", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x36", + "removed": false + }, + { + "address": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x000000000000000000000000366aa56191e89d219ac36b33406fce85da1e7554", + "0x0000000000000000000000009008d19f58aabd9ed0d60971565aa8510560ab41" + ], + "data": "0x000000000000000000000000000000000000000000000000000000000bebc200", + "blockNumber": "0x161bd0f", + "transactionHash": "0xcd1ae1806eebfe30add1509b02c6f89e85865c7243450742ac86d402507667fd", + "transactionIndex": "0x7", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x37", + "removed": false + }, + { + "address": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x0000000000000000000000009008d19f58aabd9ed0d60971565aa8510560ab41", + "0x00000000000000000000000067336cec42645f55059eff241cb02ea5cc52ff86" + ], + "data": "0x000000000000000000000000000000000000000000000000000000000bebc200", + "blockNumber": "0x161bd0f", + "transactionHash": "0xcd1ae1806eebfe30add1509b02c6f89e85865c7243450742ac86d402507667fd", + "transactionIndex": "0x7", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x38", + "removed": false + }, + { + "address": "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x00000000000000000000000067336cec42645f55059eff241cb02ea5cc52ff86", + "0x0000000000000000000000009008d19f58aabd9ed0d60971565aa8510560ab41" + ], + "data": "0x00000000000000000000000000000000000000000000000000aa03ac85e927d0", + "blockNumber": "0x161bd0f", + "transactionHash": "0xcd1ae1806eebfe30add1509b02c6f89e85865c7243450742ac86d402507667fd", + "transactionIndex": "0x7", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x39", + "removed": false + }, + { + "address": "0xbbbbbbb520d69a9775e85b458c58c648259fad5f", + "topics": [ + "0xadd7095becdaa725f0f33243630938c861b0bba83dfd217d4055701aa768ec2e", + "0x000000000000000000000000000000006d9aa07971bc4e6731b47ed80776c574" + ], + "data": "0x", + "blockNumber": "0x161bd0f", + "transactionHash": "0xcd1ae1806eebfe30add1509b02c6f89e85865c7243450742ac86d402507667fd", + "transactionIndex": "0x7", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x3a", + "removed": false + }, + { + "address": "0x9008d19f58aabd9ed0d60971565aa8510560ab41", + "topics": [ + "0xed99827efb37016f2275f98c4bcf71c7551c75d59e9b450f79fa32e60be672c2", + "0x000000000000000000000000bbbbbbb520d69a9775e85b458c58c648259fad5f" + ], + "data": "0x00000000000000000000000000000000000000000000000000000000000000004dcebcba00000000000000000000000000000000000000000000000000000000", + "blockNumber": "0x161bd0f", + "transactionHash": "0xcd1ae1806eebfe30add1509b02c6f89e85865c7243450742ac86d402507667fd", + "transactionIndex": "0x7", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x3b", + "removed": false + }, + { + "address": "0x899d774e0f8e14810d628db63e65dfacea682343", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x0000000000000000000000001346d1ee3fb1b65fecfcb65c149ca0702c286f53", + "0x0000000000000000000000009008d19f58aabd9ed0d60971565aa8510560ab41" + ], + "data": "0x0000000000000000000000000000000000000000000006c52e602622b8b3a20b", + "blockNumber": "0x161bd0f", + "transactionHash": "0xcd1ae1806eebfe30add1509b02c6f89e85865c7243450742ac86d402507667fd", + "transactionIndex": "0x7", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x3c", + "removed": false + }, + { + "address": "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x0000000000000000000000009008d19f58aabd9ed0d60971565aa8510560ab41", + "0x0000000000000000000000001346d1ee3fb1b65fecfcb65c149ca0702c286f53" + ], + "data": "0x00000000000000000000000000000000000000000000000000aa03ac85e927d0", + "blockNumber": "0x161bd0f", + "transactionHash": "0xcd1ae1806eebfe30add1509b02c6f89e85865c7243450742ac86d402507667fd", + "transactionIndex": "0x7", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x3d", + "removed": false + }, + { + "address": "0x1346d1ee3fb1b65fecfcb65c149ca0702c286f53", + "topics": [ + "0xc42079f94a6350d7e6235f29174924f928cc2ac818eb64fed8004e115fbcca67", + "0x00000000000000000000000068b3465833fb72a70ecdf485e0e4c7bd8665fc45", + "0x0000000000000000000000009008d19f58aabd9ed0d60971565aa8510560ab41" + ], + "data": "0xfffffffffffffffffffffffffffffffffffffffffffff93ad19fd9dd474c5df500000000000000000000000000000000000000000000000000aa03ac85e927d000000000000000000000000000000000000000000059466393d63f7ecd2357870000000000000000000000000000000000000000000000095bc56c6d693f8780fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdfc74", + "blockNumber": "0x161bd0f", + "transactionHash": "0xcd1ae1806eebfe30add1509b02c6f89e85865c7243450742ac86d402507667fd", + "transactionIndex": "0x7", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x3e", + "removed": false + }, + { + "address": "0x9008d19f58aabd9ed0d60971565aa8510560ab41", + "topics": [ + "0xed99827efb37016f2275f98c4bcf71c7551c75d59e9b450f79fa32e60be672c2", + "0x00000000000000000000000068b3465833fb72a70ecdf485e0e4c7bd8665fc45" + ], + "data": "0x000000000000000000000000000000000000000000000000000000000000000004e45aaf00000000000000000000000000000000000000000000000000000000", + "blockNumber": "0x161bd0f", + "transactionHash": "0xcd1ae1806eebfe30add1509b02c6f89e85865c7243450742ac86d402507667fd", + "transactionIndex": "0x7", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x3f", + "removed": false + }, + { + "address": "0x899d774e0f8e14810d628db63e65dfacea682343", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x0000000000000000000000009008d19f58aabd9ed0d60971565aa8510560ab41", + "0x000000000000000000000000366aa56191e89d219ac36b33406fce85da1e7554" + ], + "data": "0x0000000000000000000000000000000000000000000006b06fe010314e3e0681", + "blockNumber": "0x161bd0f", + "transactionHash": "0xcd1ae1806eebfe30add1509b02c6f89e85865c7243450742ac86d402507667fd", + "transactionIndex": "0x7", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x40", + "removed": false + }, + { + "address": "0x9008d19f58aabd9ed0d60971565aa8510560ab41", + "topics": [ + "0x40338ce1a7c49204f0099533b1e9a7ee0a3d261f84974ab7af36105b8c4e9db4", + "0x0000000000000000000000006bf97afe2d2c790999cded2a8523009eb8a0823f" + ], + "data": "0x", + "blockNumber": "0x161bd0f", + "transactionHash": "0xcd1ae1806eebfe30add1509b02c6f89e85865c7243450742ac86d402507667fd", + "transactionIndex": "0x7", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x41", + "removed": false + } + ], + "logsBloom": "0x0000100000000000000000002000100000400000000008000000000000000000000000004040000040000000000000000200004008102000000000408020000200040000008000082800000c000000400800000100008000000000000000000200000000080000000000800000000000000002000000200010004010000818000000080000000000000900000000002000000000410000000000000000000400020000600000200000000000000000000004000000000000010000000000000100004002000800000008000000000000400020002000000000000100000000020410200000000000000002000000080000004000000000000000000000000010", + "status": "0x1", + "to": "0x9008d19f58aabd9ed0d60971565aa8510560ab41", + "transactionHash": "0xcd1ae1806eebfe30add1509b02c6f89e85865c7243450742ac86d402507667fd", + "transactionIndex": "0x7", + "type": "0x2" + }, + { + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "contractAddress": null, + "cumulativeGasUsed": "0x20ea7d", + "effectiveGasPrice": "0x2d50b891", + "from": "0xc8ad355c8291cbd52e738ed1df1f5ccbbbbf00ee", + "gasUsed": "0x34b28", + "logs": [ + { + "address": "0x9008d19f58aabd9ed0d60971565aa8510560ab41", + "topics": [ + "0xa07a543ab8a018198e99ca0184c93fe9050a79400a0a723441f84de1d972cc17", + "0x000000000000000000000000ee007a00b876742c33491454447a40bc63d3d468" + ], + "data": "0x000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec7000000000000000000000000f4308b0263723b121056938c2172868e408079d00000000000000000000000000000000000000000000000000000000002160ec0000000000000000000000000000000000000000000000001a0d9ab1774735d13000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000038f5de8823a77b47687c9ff654873353ee47ab098b384a1bc844eb441aef6277a9ee007a00b876742c33491454447a40bc63d3d46868a5d50f0000000000000000", + "blockNumber": "0x161bd0f", + "transactionHash": "0x3441b6c4db11204dd038658ebd8ef15db513e8a24bab123454a76cf2f04b0e3c", + "transactionIndex": "0x8", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x42", + "removed": false + }, + { + "address": "0xdac17f958d2ee523a2206206994597c13d831ec7", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x000000000000000000000000ee007a00b876742c33491454447a40bc63d3d468", + "0x0000000000000000000000009008d19f58aabd9ed0d60971565aa8510560ab41" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000002160ec0", + "blockNumber": "0x161bd0f", + "transactionHash": "0x3441b6c4db11204dd038658ebd8ef15db513e8a24bab123454a76cf2f04b0e3c", + "transactionIndex": "0x8", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x43", + "removed": false + }, + { + "address": "0xdac17f958d2ee523a2206206994597c13d831ec7", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x0000000000000000000000009008d19f58aabd9ed0d60971565aa8510560ab41", + "0x00000000000000000000000067336cec42645f55059eff241cb02ea5cc52ff86" + ], + "data": "0x00000000000000000000000000000000000000000000000000000000020b32aa", + "blockNumber": "0x161bd0f", + "transactionHash": "0x3441b6c4db11204dd038658ebd8ef15db513e8a24bab123454a76cf2f04b0e3c", + "transactionIndex": "0x8", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x44", + "removed": false + }, + { + "address": "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x00000000000000000000000067336cec42645f55059eff241cb02ea5cc52ff86", + "0x0000000000000000000000009008d19f58aabd9ed0d60971565aa8510560ab41" + ], + "data": "0x000000000000000000000000000000000000000000000000001d27419875a766", + "blockNumber": "0x161bd0f", + "transactionHash": "0x3441b6c4db11204dd038658ebd8ef15db513e8a24bab123454a76cf2f04b0e3c", + "transactionIndex": "0x8", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x45", + "removed": false + }, + { + "address": "0xbbbbbbb520d69a9775e85b458c58c648259fad5f", + "topics": [ + "0xadd7095becdaa725f0f33243630938c861b0bba83dfd217d4055701aa768ec2e", + "0x000000000000000000000000000000003eeca8e9088f6bdbdb18cf6634723120" + ], + "data": "0x", + "blockNumber": "0x161bd0f", + "transactionHash": "0x3441b6c4db11204dd038658ebd8ef15db513e8a24bab123454a76cf2f04b0e3c", + "transactionIndex": "0x8", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x46", + "removed": false + }, + { + "address": "0x9008d19f58aabd9ed0d60971565aa8510560ab41", + "topics": [ + "0xed99827efb37016f2275f98c4bcf71c7551c75d59e9b450f79fa32e60be672c2", + "0x000000000000000000000000bbbbbbb520d69a9775e85b458c58c648259fad5f" + ], + "data": "0x00000000000000000000000000000000000000000000000000000000000000004dcebcba00000000000000000000000000000000000000000000000000000000", + "blockNumber": "0x161bd0f", + "transactionHash": "0x3441b6c4db11204dd038658ebd8ef15db513e8a24bab123454a76cf2f04b0e3c", + "transactionIndex": "0x8", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x47", + "removed": false + }, + { + "address": "0xf4308b0263723b121056938c2172868e408079d0", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x0000000000000000000000009008d19f58aabd9ed0d60971565aa8510560ab41", + "0x000000000000000000000000ee007a00b876742c33491454447a40bc63d3d468" + ], + "data": "0x000000000000000000000000000000000000000000000001a0d9ab1774735d13", + "blockNumber": "0x161bd0f", + "transactionHash": "0x3441b6c4db11204dd038658ebd8ef15db513e8a24bab123454a76cf2f04b0e3c", + "transactionIndex": "0x8", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x48", + "removed": false + }, + { + "address": "0x9008d19f58aabd9ed0d60971565aa8510560ab41", + "topics": [ + "0x40338ce1a7c49204f0099533b1e9a7ee0a3d261f84974ab7af36105b8c4e9db4", + "0x000000000000000000000000a9d635ef85bc37eb9ff9d6165481ea230ed32392" + ], + "data": "0x", + "blockNumber": "0x161bd0f", + "transactionHash": "0x3441b6c4db11204dd038658ebd8ef15db513e8a24bab123454a76cf2f04b0e3c", + "transactionIndex": "0x8", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x49", + "removed": false + } + ], + "logsBloom": "0x00001000000000000000000000001000004000000200000000000000000000000000000000040000000000004000010002000000080000000000004000000002000000000000000020000008000000400000000100200000000000000000002202000000080000000000800000000000000000000000000010004010000010000000080000000000000000000000002000000000400000000000000008100000000000600000000000000080000000000010002000000000010000000000000100000002000800200008000000000000000020000000000000000000000000000000200000000000000002000004000000084000000000000000000000000010", + "status": "0x1", + "to": "0xa9d635ef85bc37eb9ff9d6165481ea230ed32392", + "transactionHash": "0x3441b6c4db11204dd038658ebd8ef15db513e8a24bab123454a76cf2f04b0e3c", + "transactionIndex": "0x8", + "type": "0x2" + }, + { + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "contractAddress": null, + "cumulativeGasUsed": "0x284fcd", + "effectiveGasPrice": "0x2d50b891", + "from": "0x943810707e090f1bdc486c4c990d43da3b162e52", + "gasUsed": "0x76550", + "logs": [ + { + "address": "0x9008d19f58aabd9ed0d60971565aa8510560ab41", + "topics": [ + "0xa07a543ab8a018198e99ca0184c93fe9050a79400a0a723441f84de1d972cc17", + "0x00000000000000000000000089b537d4e0de035303dc1bdae18394f7a6c15c36" + ], + "data": "0x000000000000000000000000f5581dfefd8fb0e4aec526be659cfab1f8c781da000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48000000000000000000000000000000000000000000000318d845d95db27be800000000000000000000000000000000000000000000000000000000003c18ecd8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000383f4edaedae765e7131d494e6fca613763c52f46aef71574f2190c6b20724dbdf89b537d4e0de035303dc1bdae18394f7a6c15c3668a5ce8d0000000000000000", + "blockNumber": "0x161bd0f", + "transactionHash": "0x701f3baa584c50d52e6b4e1fa9f54a6413298cf889af51e9b3475804a4baeb12", + "transactionIndex": "0x9", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x4a", + "removed": false + }, + { + "address": "0xf5581dfefd8fb0e4aec526be659cfab1f8c781da", + "topics": [ + "0x06b541ddaa720db2b10a4d0cdac39b8d360425fc073085fac19bc82614677987", + "0x000000000000000000000000c92e8bdf79f0507f65a392b0ab4667716bfe0110", + "0x00000000000000000000000089b537d4e0de035303dc1bdae18394f7a6c15c36", + "0x0000000000000000000000009008d19f58aabd9ed0d60971565aa8510560ab41" + ], + "data": "0x000000000000000000000000000000000000000000000318d845d95db27be8000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "blockNumber": "0x161bd0f", + "transactionHash": "0x701f3baa584c50d52e6b4e1fa9f54a6413298cf889af51e9b3475804a4baeb12", + "transactionIndex": "0x9", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x4b", + "removed": false + }, + { + "address": "0xf5581dfefd8fb0e4aec526be659cfab1f8c781da", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x00000000000000000000000089b537d4e0de035303dc1bdae18394f7a6c15c36", + "0x0000000000000000000000009008d19f58aabd9ed0d60971565aa8510560ab41" + ], + "data": "0x000000000000000000000000000000000000000000000318d845d95db27be800", + "blockNumber": "0x161bd0f", + "transactionHash": "0x701f3baa584c50d52e6b4e1fa9f54a6413298cf889af51e9b3475804a4baeb12", + "transactionIndex": "0x9", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x4c", + "removed": false + }, + { + "address": "0xf5581dfefd8fb0e4aec526be659cfab1f8c781da", + "topics": [ + "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925", + "0x00000000000000000000000089b537d4e0de035303dc1bdae18394f7a6c15c36", + "0x000000000000000000000000c92e8bdf79f0507f65a392b0ab4667716bfe0110" + ], + "data": "0xffffffffffffffffffffffffffffffffffffffffffec5e7ea7a67c21739266ba", + "blockNumber": "0x161bd0f", + "transactionHash": "0x701f3baa584c50d52e6b4e1fa9f54a6413298cf889af51e9b3475804a4baeb12", + "transactionIndex": "0x9", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x4d", + "removed": false + }, + { + "address": "0x6b175474e89094c44da98b954eedeac495271d0f", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x00000000000000000000000087986ae1e99f99da1f955d16930dc8914ffbed56", + "0x0000000000000000000000009008d19f58aabd9ed0d60971565aa8510560ab41" + ], + "data": "0x000000000000000000000000000000000000000000000030c83b065345ecd3f5", + "blockNumber": "0x161bd0f", + "transactionHash": "0x701f3baa584c50d52e6b4e1fa9f54a6413298cf889af51e9b3475804a4baeb12", + "transactionIndex": "0x9", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x4e", + "removed": false + }, + { + "address": "0xf5581dfefd8fb0e4aec526be659cfab1f8c781da", + "topics": [ + "0x06b541ddaa720db2b10a4d0cdac39b8d360425fc073085fac19bc82614677987", + "0x0000000000000000000000002db07a3a657b6e16999b67d48500486a1cb0d649", + "0x0000000000000000000000009008d19f58aabd9ed0d60971565aa8510560ab41", + "0x00000000000000000000000087986ae1e99f99da1f955d16930dc8914ffbed56" + ], + "data": "0x0000000000000000000000000000000000000000000002c2b9c5fcc62d5453390000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "blockNumber": "0x161bd0f", + "transactionHash": "0x701f3baa584c50d52e6b4e1fa9f54a6413298cf889af51e9b3475804a4baeb12", + "transactionIndex": "0x9", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x4f", + "removed": false + }, + { + "address": "0xf5581dfefd8fb0e4aec526be659cfab1f8c781da", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x0000000000000000000000009008d19f58aabd9ed0d60971565aa8510560ab41", + "0x00000000000000000000000087986ae1e99f99da1f955d16930dc8914ffbed56" + ], + "data": "0x0000000000000000000000000000000000000000000002c2b9c5fcc62d545339", + "blockNumber": "0x161bd0f", + "transactionHash": "0x701f3baa584c50d52e6b4e1fa9f54a6413298cf889af51e9b3475804a4baeb12", + "transactionIndex": "0x9", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x50", + "removed": false + }, + { + "address": "0xf5581dfefd8fb0e4aec526be659cfab1f8c781da", + "topics": [ + "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925", + "0x0000000000000000000000009008d19f58aabd9ed0d60971565aa8510560ab41", + "0x0000000000000000000000002db07a3a657b6e16999b67d48500486a1cb0d649" + ], + "data": "0x0000000000000000000000000000000000000000ffffd59a39059bc5a28618a8", + "blockNumber": "0x161bd0f", + "transactionHash": "0x701f3baa584c50d52e6b4e1fa9f54a6413298cf889af51e9b3475804a4baeb12", + "transactionIndex": "0x9", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x51", + "removed": false + }, + { + "address": "0x87986ae1e99f99da1f955d16930dc8914ffbed56", + "topics": [ + "0xc42079f94a6350d7e6235f29174924f928cc2ac818eb64fed8004e115fbcca67", + "0x0000000000000000000000002db07a3a657b6e16999b67d48500486a1cb0d649", + "0x0000000000000000000000009008d19f58aabd9ed0d60971565aa8510560ab41" + ], + "data": "0xffffffffffffffffffffffffffffffffffffffffffffffcf37c4f9acba132c0b0000000000000000000000000000000000000000000002c2b9c5fcc62d5453390000000000000000000000000000000000000003ce3e190a8a5ab790bdc2670a000000000000000000000000000000000000000000010d01c59477b71ba1ad1f000000000000000000000000000000000000000000000000000000000000686a", + "blockNumber": "0x161bd0f", + "transactionHash": "0x701f3baa584c50d52e6b4e1fa9f54a6413298cf889af51e9b3475804a4baeb12", + "transactionIndex": "0x9", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x52", + "removed": false + }, + { + "address": "0xf5581dfefd8fb0e4aec526be659cfab1f8c781da", + "topics": [ + "0x06b541ddaa720db2b10a4d0cdac39b8d360425fc073085fac19bc82614677987", + "0x0000000000000000000000002db07a3a657b6e16999b67d48500486a1cb0d649", + "0x0000000000000000000000009008d19f58aabd9ed0d60971565aa8510560ab41", + "0x00000000000000000000000092c2fc5f306405eab0ff0958f6d85d7f8892cf4d" + ], + "data": "0x000000000000000000000000000000000000000000000054e9ab31a1339be5930000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "blockNumber": "0x161bd0f", + "transactionHash": "0x701f3baa584c50d52e6b4e1fa9f54a6413298cf889af51e9b3475804a4baeb12", + "transactionIndex": "0x9", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x53", + "removed": false + }, + { + "address": "0xf5581dfefd8fb0e4aec526be659cfab1f8c781da", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x0000000000000000000000009008d19f58aabd9ed0d60971565aa8510560ab41", + "0x00000000000000000000000092c2fc5f306405eab0ff0958f6d85d7f8892cf4d" + ], + "data": "0x000000000000000000000000000000000000000000000054e9ab31a1339be593", + "blockNumber": "0x161bd0f", + "transactionHash": "0x701f3baa584c50d52e6b4e1fa9f54a6413298cf889af51e9b3475804a4baeb12", + "transactionIndex": "0x9", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x54", + "removed": false + }, + { + "address": "0xf5581dfefd8fb0e4aec526be659cfab1f8c781da", + "topics": [ + "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925", + "0x0000000000000000000000009008d19f58aabd9ed0d60971565aa8510560ab41", + "0x0000000000000000000000002db07a3a657b6e16999b67d48500486a1cb0d649" + ], + "data": "0x0000000000000000000000000000000000000000ffffd5454f5a6a246eea3315", + "blockNumber": "0x161bd0f", + "transactionHash": "0x701f3baa584c50d52e6b4e1fa9f54a6413298cf889af51e9b3475804a4baeb12", + "transactionIndex": "0x9", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x55", + "removed": false + }, + { + "address": "0x6b175474e89094c44da98b954eedeac495271d0f", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x00000000000000000000000092c2fc5f306405eab0ff0958f6d85d7f8892cf4d", + "0x0000000000000000000000009008d19f58aabd9ed0d60971565aa8510560ab41" + ], + "data": "0x000000000000000000000000000000000000000000000005e0bb5fb57e3f0b03", + "blockNumber": "0x161bd0f", + "transactionHash": "0x701f3baa584c50d52e6b4e1fa9f54a6413298cf889af51e9b3475804a4baeb12", + "transactionIndex": "0x9", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x56", + "removed": false + }, + { + "address": "0x92c2fc5f306405eab0ff0958f6d85d7f8892cf4d", + "topics": [ + "0x1c411e9a96e071241c2f21f7726b17ae89e3cab4c78be50e062b03a9fffbbad1" + ], + "data": "0x00000000000000000000000000000000000000000000040e2b05566d40762733000000000000000000000000000000000000000000003abd82aa5833b3997cd7", + "blockNumber": "0x161bd0f", + "transactionHash": "0x701f3baa584c50d52e6b4e1fa9f54a6413298cf889af51e9b3475804a4baeb12", + "transactionIndex": "0x9", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x57", + "removed": false + }, + { + "address": "0x92c2fc5f306405eab0ff0958f6d85d7f8892cf4d", + "topics": [ + "0xd78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d822", + "0x0000000000000000000000002db07a3a657b6e16999b67d48500486a1cb0d649", + "0x0000000000000000000000009008d19f58aabd9ed0d60971565aa8510560ab41" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000054e9ab31a1339be593000000000000000000000000000000000000000000000005e0bb5fb57e3f0b030000000000000000000000000000000000000000000000000000000000000000", + "blockNumber": "0x161bd0f", + "transactionHash": "0x701f3baa584c50d52e6b4e1fa9f54a6413298cf889af51e9b3475804a4baeb12", + "transactionIndex": "0x9", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x58", + "removed": false + }, + { + "address": "0x2db07a3a657b6e16999b67d48500486a1cb0d649", + "topics": [ + "0xd7cf88e4bcca455701f69cc774034a649b16dcf4c3607676ea5f556353332623" + ], + "data": "0x00000000000000000000000000000000002e7bdc06b21b40b0cc17df2b421598", + "blockNumber": "0x161bd0f", + "transactionHash": "0x701f3baa584c50d52e6b4e1fa9f54a6413298cf889af51e9b3475804a4baeb12", + "transactionIndex": "0x9", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x59", + "removed": false + }, + { + "address": "0x9008d19f58aabd9ed0d60971565aa8510560ab41", + "topics": [ + "0xed99827efb37016f2275f98c4bcf71c7551c75d59e9b450f79fa32e60be672c2", + "0x0000000000000000000000002db07a3a657b6e16999b67d48500486a1cb0d649" + ], + "data": "0x000000000000000000000000000000000000000000000000000000000000000047a4a98900000000000000000000000000000000000000000000000000000000", + "blockNumber": "0x161bd0f", + "transactionHash": "0x701f3baa584c50d52e6b4e1fa9f54a6413298cf889af51e9b3475804a4baeb12", + "transactionIndex": "0x9", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x5a", + "removed": false + }, + { + "address": "0x6b175474e89094c44da98b954eedeac495271d0f", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x0000000000000000000000009008d19f58aabd9ed0d60971565aa8510560ab41", + "0x000000000000000000000000f6e72db5454dd049d0788e411b06cfaf16853042" + ], + "data": "0x000000000000000000000000000000000000000000000036a8f6d6fbd1977000", + "blockNumber": "0x161bd0f", + "transactionHash": "0x701f3baa584c50d52e6b4e1fa9f54a6413298cf889af51e9b3475804a4baeb12", + "transactionIndex": "0x9", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x5b", + "removed": false + }, + { + "address": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x00000000000000000000000037305b1cd40574e4c5ce33f8e8306be057fd7341", + "0x0000000000000000000000009008d19f58aabd9ed0d60971565aa8510560ab41" + ], + "data": "0x000000000000000000000000000000000000000000000000000000003c196d47", + "blockNumber": "0x161bd0f", + "transactionHash": "0x701f3baa584c50d52e6b4e1fa9f54a6413298cf889af51e9b3475804a4baeb12", + "transactionIndex": "0x9", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x5c", + "removed": false + }, + { + "address": "0xf6e72db5454dd049d0788e411b06cfaf16853042", + "topics": [ + "0x085d06ecf4c34b237767a31c0888e121d89546a77f186f1987c6b8715e1a8caa", + "0x0000000000000000000000009008d19f58aabd9ed0d60971565aa8510560ab41" + ], + "data": "0x000000000000000000000000000000000000000000000000000000003c196d470000000000000000000000000000000000000000000000000000000000000000", + "blockNumber": "0x161bd0f", + "transactionHash": "0x701f3baa584c50d52e6b4e1fa9f54a6413298cf889af51e9b3475804a4baeb12", + "transactionIndex": "0x9", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x5d", + "removed": false + }, + { + "address": "0x9008d19f58aabd9ed0d60971565aa8510560ab41", + "topics": [ + "0xed99827efb37016f2275f98c4bcf71c7551c75d59e9b450f79fa32e60be672c2", + "0x000000000000000000000000f6e72db5454dd049d0788e411b06cfaf16853042" + ], + "data": "0x00000000000000000000000000000000000000000000000000000000000000008d7ef9bb00000000000000000000000000000000000000000000000000000000", + "blockNumber": "0x161bd0f", + "transactionHash": "0x701f3baa584c50d52e6b4e1fa9f54a6413298cf889af51e9b3475804a4baeb12", + "transactionIndex": "0x9", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x5e", + "removed": false + }, + { + "address": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x0000000000000000000000009008d19f58aabd9ed0d60971565aa8510560ab41", + "0x00000000000000000000000089b537d4e0de035303dc1bdae18394f7a6c15c36" + ], + "data": "0x000000000000000000000000000000000000000000000000000000003c18ecd8", + "blockNumber": "0x161bd0f", + "transactionHash": "0x701f3baa584c50d52e6b4e1fa9f54a6413298cf889af51e9b3475804a4baeb12", + "transactionIndex": "0x9", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x5f", + "removed": false + }, + { + "address": "0x9008d19f58aabd9ed0d60971565aa8510560ab41", + "topics": [ + "0x40338ce1a7c49204f0099533b1e9a7ee0a3d261f84974ab7af36105b8c4e9db4", + "0x000000000000000000000000a9d635ef85bc37eb9ff9d6165481ea230ed32392" + ], + "data": "0x", + "blockNumber": "0x161bd0f", + "transactionHash": "0x701f3baa584c50d52e6b4e1fa9f54a6413298cf889af51e9b3475804a4baeb12", + "transactionIndex": "0x9", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x60", + "removed": false + } + ], + "logsBloom": "0x0060100000000020000000008000108002400000001000200000000000000020000000000044000000000000c000000800000040000420000000000080200400000400001000000808000008000000210000000100000000000010200000000010000000000000000000804000000000000200402000000010004010000800000000000000000000000000008000000000040000450001080800004200000000020000680100200000000000000000000000008000000000010000000000000000000002000800600001040000000020000022080000041000002008000000400010002000000000000002000004000000104000000000000000010000000000", + "status": "0x1", + "to": "0xa9d635ef85bc37eb9ff9d6165481ea230ed32392", + "transactionHash": "0x701f3baa584c50d52e6b4e1fa9f54a6413298cf889af51e9b3475804a4baeb12", + "transactionIndex": "0x9", + "type": "0x2" + }, + { + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "contractAddress": null, + "cumulativeGasUsed": "0x2947ba", + "effectiveGasPrice": "0x708ad4a2", + "from": "0xf70da97812cb96acdf810712aa562db8dfa3dbef", + "gasUsed": "0xf7ed", + "logs": [ + { + "address": "0xf5042e6ffac5a625d4e7848e0b01373d8eb9e222", + "topics": [ + "0xd35467972d1fda5b63c735f59d3974fa51785a41a92aa3ed1b70832836f8dba6" + ], + "data": "0x000000000000000000000000f5042e6ffac5a625d4e7848e0b01373d8eb9e2220000000000000000000000000000000000000000000000000304e4108473ed6d", + "blockNumber": "0x161bd0f", + "transactionHash": "0x9ff6af7f27a501a3f04503f82eca3d75470296a9c18ed65ea51951e820650066", + "transactionIndex": "0xa", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x61", + "removed": false + }, + { + "address": "0xf5042e6ffac5a625d4e7848e0b01373d8eb9e222", + "topics": [ + "0x93485dcd31a905e3ffd7b012abe3438fa8fa77f98ddc9f50e879d3fa7ccdc324" + ], + "data": "0x000000000000000000000000f5042e6ffac5a625d4e7848e0b01373d8eb9e22200000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000304e4108473ed6d0000000000000000000000000000000000000000000000000000000000000000", + "blockNumber": "0x161bd0f", + "transactionHash": "0x9ff6af7f27a501a3f04503f82eca3d75470296a9c18ed65ea51951e820650066", + "transactionIndex": "0xa", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x62", + "removed": false + }, + { + "address": "0xf5042e6ffac5a625d4e7848e0b01373d8eb9e222", + "topics": [ + "0xd35467972d1fda5b63c735f59d3974fa51785a41a92aa3ed1b70832836f8dba6" + ], + "data": "0x000000000000000000000000ae1a530128950b1735674a975e1622872e556b590000000000000000000000000000000000000000000000000304e4108473ed6d", + "blockNumber": "0x161bd0f", + "transactionHash": "0x9ff6af7f27a501a3f04503f82eca3d75470296a9c18ed65ea51951e820650066", + "transactionIndex": "0xa", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x63", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000080000000000000000000000000000000000000000000000000040000000000000000000000000000004000000000000000000000000000000040000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000080000000000000000000000000000000000000000000000800000000000000", + "status": "0x1", + "to": "0xf5042e6ffac5a625d4e7848e0b01373d8eb9e222", + "transactionHash": "0x9ff6af7f27a501a3f04503f82eca3d75470296a9c18ed65ea51951e820650066", + "transactionIndex": "0xa", + "type": "0x2" + }, + { + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "contractAddress": null, + "cumulativeGasUsed": "0x2b1f0f", + "effectiveGasPrice": "0x2c523e86", + "from": "0x80c700683ec017a190b132a4ce042beeb7c6b821", + "gasUsed": "0x1d755", + "logs": [ + { + "address": "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2", + "topics": [ + "0xe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c", + "0x0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d" + ], + "data": "0x00000000000000000000000000000000000000000000000000621b921b80f2af", + "blockNumber": "0x161bd0f", + "transactionHash": "0x0c5250b391b89ddb6bcee896bf09c5419f4a8627f94c1c8ee0432c46259d5af2", + "transactionIndex": "0xb", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x64", + "removed": false + }, + { + "address": "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d", + "0x0000000000000000000000006f9f435fa79e30e34f7679211904fcabc87ad924" + ], + "data": "0x00000000000000000000000000000000000000000000000000621b921b80f2af", + "blockNumber": "0x161bd0f", + "transactionHash": "0x0c5250b391b89ddb6bcee896bf09c5419f4a8627f94c1c8ee0432c46259d5af2", + "transactionIndex": "0xb", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x65", + "removed": false + }, + { + "address": "0xe0265346277ad201609308b506e901b520150a08", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x0000000000000000000000006f9f435fa79e30e34f7679211904fcabc87ad924", + "0x00000000000000000000000080c700683ec017a190b132a4ce042beeb7c6b821" + ], + "data": "0x00000000000000000000000000000000000000000000fcc9f4e9bd2d304d8e56", + "blockNumber": "0x161bd0f", + "transactionHash": "0x0c5250b391b89ddb6bcee896bf09c5419f4a8627f94c1c8ee0432c46259d5af2", + "transactionIndex": "0xb", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x66", + "removed": false + }, + { + "address": "0x6f9f435fa79e30e34f7679211904fcabc87ad924", + "topics": [ + "0x1c411e9a96e071241c2f21f7726b17ae89e3cab4c78be50e062b03a9fffbbad1" + ], + "data": "0x000000000000000000000000000000000000000000000000154aea80178ffe200000000000000000000000000000000000000000003609cc562e12cf568499f7", + "blockNumber": "0x161bd0f", + "transactionHash": "0x0c5250b391b89ddb6bcee896bf09c5419f4a8627f94c1c8ee0432c46259d5af2", + "transactionIndex": "0xb", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x67", + "removed": false + }, + { + "address": "0x6f9f435fa79e30e34f7679211904fcabc87ad924", + "topics": [ + "0xd78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d822", + "0x0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d", + "0x00000000000000000000000080c700683ec017a190b132a4ce042beeb7c6b821" + ], + "data": "0x00000000000000000000000000000000000000000000000000621b921b80f2af0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000fcc9f4e9bd2d304d8e56", + "blockNumber": "0x161bd0f", + "transactionHash": "0x0c5250b391b89ddb6bcee896bf09c5419f4a8627f94c1c8ee0432c46259d5af2", + "transactionIndex": "0xb", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x68", + "removed": false + } + ], + "logsBloom": "0x00200000000000000000000080000000000000000000000000010000000000000100000000000000000000000000000002000000080000000000000000000000000000000000000000000008080000a00000000000000000000000008001000010000000000000000000000008000000000000000000000000000010000000000000000000000000004000000000000000000001000000080000004000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000004004000080000000000000000001000000000100020000000200000000000000000000000000000000000000001400000000001000000", + "status": "0x1", + "to": "0x7a250d5630b4cf539739df2c5dacb4c659f2488d", + "transactionHash": "0x0c5250b391b89ddb6bcee896bf09c5419f4a8627f94c1c8ee0432c46259d5af2", + "transactionIndex": "0xb", + "type": "0x0" + }, + { + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "contractAddress": null, + "cumulativeGasUsed": "0x2e78ec", + "effectiveGasPrice": "0x5f6a09d4", + "from": "0x7830c87c02e56aff27fa8ab1241711331fa86f43", + "gasUsed": "0x359dd", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "status": "0x1", + "to": "0xa9d1e08c7793af67e9d92fe308d5697fb81d3e43", + "transactionHash": "0x65dfef793509b00a864042275789801fd0c89fe3fe1d67648c4bba8148fd511c", + "transactionIndex": "0xc", + "type": "0x2" + }, + { + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "contractAddress": null, + "cumulativeGasUsed": "0x3119a3", + "effectiveGasPrice": "0x9b04d3d4", + "from": "0x078430ebd8db8288fd056d137e0e11cf67fb8fc1", + "gasUsed": "0x2a0b7", + "logs": [ + { + "address": "0xb1911d8ffcc2d8ca6c5ea4f4f18be6ea675c1ce7", + "topics": [ + "0x6bae97ad4b952cdee3720ed0ea228b5eb79d5adb4475c05d9f3f6539627d8e2a", + "0x000000000000000000000000078430ebd8db8288fd056d137e0e11cf67fb8fc1" + ], + "data": "0x000000000000000000000000000000000000000000000a2a792108221ac98c540000000000000000000000000000000000000000000000000000000068a5ce5b", + "blockNumber": "0x161bd0f", + "transactionHash": "0x26c30055f1b6d43badaa5b519480af74f120afac79589b30485dc872a06cac18", + "transactionIndex": "0xd", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x69", + "removed": false + }, + { + "address": "0xb131f4a55907b10d1f0a50d8ab8fa09ec342cd74", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x000000000000000000000000b1911d8ffcc2d8ca6c5ea4f4f18be6ea675c1ce7", + "0x000000000000000000000000078430ebd8db8288fd056d137e0e11cf67fb8fc1" + ], + "data": "0x000000000000000000000000000000000000000000000a2a792108221ac98c54", + "blockNumber": "0x161bd0f", + "transactionHash": "0x26c30055f1b6d43badaa5b519480af74f120afac79589b30485dc872a06cac18", + "transactionIndex": "0xd", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x6a", + "removed": false + }, + { + "address": "0xb131f4a55907b10d1f0a50d8ab8fa09ec342cd74", + "topics": [ + "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925", + "0x000000000000000000000000078430ebd8db8288fd056d137e0e11cf67fb8fc1", + "0x00000000000000000000000032c1f663919102dc032dc3c22fe434af686f3b15" + ], + "data": "0x000000000000000000000000000000000000000000000a2a792108221ac98c54", + "blockNumber": "0x161bd0f", + "transactionHash": "0x26c30055f1b6d43badaa5b519480af74f120afac79589b30485dc872a06cac18", + "transactionIndex": "0xd", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x6b", + "removed": false + }, + { + "address": "0xb131f4a55907b10d1f0a50d8ab8fa09ec342cd74", + "topics": [ + "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925", + "0x000000000000000000000000078430ebd8db8288fd056d137e0e11cf67fb8fc1", + "0x00000000000000000000000032c1f663919102dc032dc3c22fe434af686f3b15" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000000", + "blockNumber": "0x161bd0f", + "transactionHash": "0x26c30055f1b6d43badaa5b519480af74f120afac79589b30485dc872a06cac18", + "transactionIndex": "0xd", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x6c", + "removed": false + }, + { + "address": "0xb131f4a55907b10d1f0a50d8ab8fa09ec342cd74", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x000000000000000000000000078430ebd8db8288fd056d137e0e11cf67fb8fc1", + "0x00000000000000000000000071a41517fe65890fe835d67fce17a9747112696c" + ], + "data": "0x000000000000000000000000000000000000000000000a2a792108221ac98c54", + "blockNumber": "0x161bd0f", + "transactionHash": "0x26c30055f1b6d43badaa5b519480af74f120afac79589b30485dc872a06cac18", + "transactionIndex": "0xd", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x6d", + "removed": false + }, + { + "address": "0xb131f4a55907b10d1f0a50d8ab8fa09ec342cd74", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x00000000000000000000000071a41517fe65890fe835d67fce17a9747112696c", + "0x000000000000000000000000c059a531b4234d05e9ef4ac51028f7e6156e2cce" + ], + "data": "0x000000000000000000000000000000000000000000000a2a792108221ac98c54", + "blockNumber": "0x161bd0f", + "transactionHash": "0x26c30055f1b6d43badaa5b519480af74f120afac79589b30485dc872a06cac18", + "transactionIndex": "0xd", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x6e", + "removed": false + }, + { + "address": "0xc059a531b4234d05e9ef4ac51028f7e6156e2cce", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x000000000000000000000000078430ebd8db8288fd056d137e0e11cf67fb8fc1" + ], + "data": "0x000000000000000000000000000000000000000000000a2a792108221ac98c54", + "blockNumber": "0x161bd0f", + "transactionHash": "0x26c30055f1b6d43badaa5b519480af74f120afac79589b30485dc872a06cac18", + "transactionIndex": "0xd", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x6f", + "removed": false + }, + { + "address": "0xc059a531b4234d05e9ef4ac51028f7e6156e2cce", + "topics": [ + "0x1449c6dd7851abc30abf37f57715f492010519147cc2652fbc38202c18a6ee90", + "0x000000000000000000000000078430ebd8db8288fd056d137e0e11cf67fb8fc1" + ], + "data": "0x000000000000000000000000000000000000000000000a2a792108221ac98c540000000000000000000000000000000000000000000000000000000068a5ce5b", + "blockNumber": "0x161bd0f", + "transactionHash": "0x26c30055f1b6d43badaa5b519480af74f120afac79589b30485dc872a06cac18", + "transactionIndex": "0xd", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x70", + "removed": false + }, + { + "address": "0x71a41517fe65890fe835d67fce17a9747112696c", + "topics": [ + "0x1d667fd3a2b3ff56d86b9f53a15185be64f72321819599d0f059e609581169ba", + "0x000000000000000000000000078430ebd8db8288fd056d137e0e11cf67fb8fc1" + ], + "data": "0x000000000000000000000000000000000000000000000a2a792108221ac98c540000000000000000000000000000000000000000000000000000000068a5ce5b", + "blockNumber": "0x161bd0f", + "transactionHash": "0x26c30055f1b6d43badaa5b519480af74f120afac79589b30485dc872a06cac18", + "transactionIndex": "0xd", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x71", + "removed": false + } + ], + "logsBloom": "0x000000000040000000000000000008000008000000000000001000000002000000000080000004000200020000040000000010800000000000000000002000000002000900008000000000080000000000000000000000200000000000000000000000000200000001000200000008000000000000000000000000100000000000001000000002000000020000000000044000004000000000000000000100000200002000100000000c00000000000000000000000000000000000000000040000000020001000000000000000000000000000000000000000000000008200000100000000000000000000000008000c0000000000000000000000000000000", + "status": "0x1", + "to": "0x71a41517fe65890fe835d67fce17a9747112696c", + "transactionHash": "0x26c30055f1b6d43badaa5b519480af74f120afac79589b30485dc872a06cac18", + "transactionIndex": "0xd", + "type": "0x2" + }, + { + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "contractAddress": null, + "cumulativeGasUsed": "0x39a5c0", + "effectiveGasPrice": "0x5f6a09d4", + "from": "0x7830c87c02e56aff27fa8ab1241711331fa86f43", + "gasUsed": "0x88c1d", + "logs": [ + { + "address": "0xdac17f958d2ee523a2206206994597c13d831ec7", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x000000000000000000000000a9d1e08c7793af67e9d92fe308d5697fb81d3e43", + "0x0000000000000000000000004fa31bbbb0729c76ca3fb7c5d466c1b30764749b" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000015476340", + "blockNumber": "0x161bd0f", + "transactionHash": "0xca596815ac0d42d85cd700df64d361590f1d06cf2d09806862d46944feda2044", + "transactionIndex": "0xe", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x72", + "removed": false + }, + { + "address": "0xdac17f958d2ee523a2206206994597c13d831ec7", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x000000000000000000000000a9d1e08c7793af67e9d92fe308d5697fb81d3e43", + "0x0000000000000000000000008e1e9185870f026be6b59219f673fe84481a329a" + ], + "data": "0x000000000000000000000000000000000000000000000000000000002d27ecbb", + "blockNumber": "0x161bd0f", + "transactionHash": "0xca596815ac0d42d85cd700df64d361590f1d06cf2d09806862d46944feda2044", + "transactionIndex": "0xe", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x73", + "removed": false + }, + { + "address": "0xdac17f958d2ee523a2206206994597c13d831ec7", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x000000000000000000000000a9d1e08c7793af67e9d92fe308d5697fb81d3e43", + "0x00000000000000000000000060c531e7594102a7a9be19197c969639bebf5fae" + ], + "data": "0x000000000000000000000000000000000000000000000000000000001cf8f755", + "blockNumber": "0x161bd0f", + "transactionHash": "0xca596815ac0d42d85cd700df64d361590f1d06cf2d09806862d46944feda2044", + "transactionIndex": "0xe", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x74", + "removed": false + }, + { + "address": "0xdac17f958d2ee523a2206206994597c13d831ec7", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x000000000000000000000000a9d1e08c7793af67e9d92fe308d5697fb81d3e43", + "0x000000000000000000000000f8b2374fc5335176857aa83f8a37be8afdf8bac7" + ], + "data": "0x000000000000000000000000000000000000000000000000000000002113fe2a", + "blockNumber": "0x161bd0f", + "transactionHash": "0xca596815ac0d42d85cd700df64d361590f1d06cf2d09806862d46944feda2044", + "transactionIndex": "0xe", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x75", + "removed": false + }, + { + "address": "0xdac17f958d2ee523a2206206994597c13d831ec7", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x000000000000000000000000a9d1e08c7793af67e9d92fe308d5697fb81d3e43", + "0x00000000000000000000000088a857dfc3ed7b4e326adbbe79224de634982235" + ], + "data": "0x000000000000000000000000000000000000000000000000000000000e4e1c00", + "blockNumber": "0x161bd0f", + "transactionHash": "0xca596815ac0d42d85cd700df64d361590f1d06cf2d09806862d46944feda2044", + "transactionIndex": "0xe", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x76", + "removed": false + }, + { + "address": "0xdac17f958d2ee523a2206206994597c13d831ec7", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x000000000000000000000000a9d1e08c7793af67e9d92fe308d5697fb81d3e43", + "0x000000000000000000000000f668293ea8362fe9dccd4499c23fcb0025919613" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000002a9f1f7", + "blockNumber": "0x161bd0f", + "transactionHash": "0xca596815ac0d42d85cd700df64d361590f1d06cf2d09806862d46944feda2044", + "transactionIndex": "0xe", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x77", + "removed": false + }, + { + "address": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x000000000000000000000000a9d1e08c7793af67e9d92fe308d5697fb81d3e43", + "0x00000000000000000000000026b23da6eb7d863bef139feb51ba027ec2f0769a" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000002faf080", + "blockNumber": "0x161bd0f", + "transactionHash": "0xca596815ac0d42d85cd700df64d361590f1d06cf2d09806862d46944feda2044", + "transactionIndex": "0xe", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x78", + "removed": false + }, + { + "address": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x000000000000000000000000a9d1e08c7793af67e9d92fe308d5697fb81d3e43", + "0x000000000000000000000000de396526ede4218a67327cec9658e7571a0eac5c" + ], + "data": "0x00000000000000000000000000000000000000000000000000000000017f2b8d", + "blockNumber": "0x161bd0f", + "transactionHash": "0xca596815ac0d42d85cd700df64d361590f1d06cf2d09806862d46944feda2044", + "transactionIndex": "0xe", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x79", + "removed": false + }, + { + "address": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x000000000000000000000000a9d1e08c7793af67e9d92fe308d5697fb81d3e43", + "0x000000000000000000000000f5261acdfbe5b46b6c79271ea86d933603236899" + ], + "data": "0x000000000000000000000000000000000000000000000000000000014437f0cd", + "blockNumber": "0x161bd0f", + "transactionHash": "0xca596815ac0d42d85cd700df64d361590f1d06cf2d09806862d46944feda2044", + "transactionIndex": "0xe", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x7a", + "removed": false + }, + { + "address": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x000000000000000000000000a9d1e08c7793af67e9d92fe308d5697fb81d3e43", + "0x0000000000000000000000006de7232e53fd11e218842e5506577837134a1171" + ], + "data": "0x000000000000000000000000000000000000000000000000000000000311d3e0", + "blockNumber": "0x161bd0f", + "transactionHash": "0xca596815ac0d42d85cd700df64d361590f1d06cf2d09806862d46944feda2044", + "transactionIndex": "0xe", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x7b", + "removed": false + }, + { + "address": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x000000000000000000000000a9d1e08c7793af67e9d92fe308d5697fb81d3e43", + "0x0000000000000000000000006de7232e53fd11e218842e5506577837134a1171" + ], + "data": "0x00000000000000000000000000000000000000000000000000000000077e07a0", + "blockNumber": "0x161bd0f", + "transactionHash": "0xca596815ac0d42d85cd700df64d361590f1d06cf2d09806862d46944feda2044", + "transactionIndex": "0xe", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x7c", + "removed": false + }, + { + "address": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x000000000000000000000000a9d1e08c7793af67e9d92fe308d5697fb81d3e43", + "0x000000000000000000000000d5b12d6651b94d6340699077258feb3314d6b1ae" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000004661940", + "blockNumber": "0x161bd0f", + "transactionHash": "0xca596815ac0d42d85cd700df64d361590f1d06cf2d09806862d46944feda2044", + "transactionIndex": "0xe", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x7d", + "removed": false + }, + { + "address": "0xbe9895146f7af43049ca1c1ae358b0541ea49704", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x000000000000000000000000a9d1e08c7793af67e9d92fe308d5697fb81d3e43", + "0x00000000000000000000000051c72848c68a965f66fa7a88855f9f7784502a7f" + ], + "data": "0x000000000000000000000000000000000000000000000002ec03212a197a0c00", + "blockNumber": "0x161bd0f", + "transactionHash": "0xca596815ac0d42d85cd700df64d361590f1d06cf2d09806862d46944feda2044", + "transactionIndex": "0xe", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x7e", + "removed": false + }, + { + "address": "0x84ca8bc7997272c7cfb4d0cd3d55cd942b3c9419", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x000000000000000000000000a9d1e08c7793af67e9d92fe308d5697fb81d3e43", + "0x00000000000000000000000089b537d4e0de035303dc1bdae18394f7a6c15c36" + ], + "data": "0x0000000000000000000000000000000000000000000000230ec810de9c63d000", + "blockNumber": "0x161bd0f", + "transactionHash": "0xca596815ac0d42d85cd700df64d361590f1d06cf2d09806862d46944feda2044", + "transactionIndex": "0xe", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x7f", + "removed": false + }, + { + "address": "0x0d8775f648430679a709e98d2b0cb6250d2887ef", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x000000000000000000000000a9d1e08c7793af67e9d92fe308d5697fb81d3e43", + "0x0000000000000000000000007c06dfc7576ef157e111d80cd8ce98f8ab60feaf" + ], + "data": "0x0000000000000000000000000000000000000000000000008b95e9381c0e2400", + "blockNumber": "0x161bd0f", + "transactionHash": "0xca596815ac0d42d85cd700df64d361590f1d06cf2d09806862d46944feda2044", + "transactionIndex": "0xe", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x80", + "removed": false + }, + { + "address": "0x1f9840a85d5af5bf1d1762f925bdaddc4201f984", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x000000000000000000000000a9d1e08c7793af67e9d92fe308d5697fb81d3e43", + "0x00000000000000000000000006fd4ba7973a0d39a91734bbc35bc2bcaa99e3b0" + ], + "data": "0x0000000000000000000000000000000000000000000000334af9bea1f4c02c00", + "blockNumber": "0x161bd0f", + "transactionHash": "0xca596815ac0d42d85cd700df64d361590f1d06cf2d09806862d46944feda2044", + "transactionIndex": "0xe", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x81", + "removed": false + }, + { + "address": "0x4a220e6096b25eadb88358cb44068a3248254675", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x000000000000000000000000a9d1e08c7793af67e9d92fe308d5697fb81d3e43", + "0x0000000000000000000000009f3b333f36069244901885d5e520ffee722a4585" + ], + "data": "0x000000000000000000000000000000000000000000000000106df6c44af68000", + "blockNumber": "0x161bd0f", + "transactionHash": "0xca596815ac0d42d85cd700df64d361590f1d06cf2d09806862d46944feda2044", + "transactionIndex": "0xe", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x82", + "removed": false + }, + { + "address": "0xfaba6f8e4a5e8ab82f62fe7c39859fa577269be3", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x000000000000000000000000a9d1e08c7793af67e9d92fe308d5697fb81d3e43", + "0x000000000000000000000000c3bf801d58a4c0418d96eda0164fb743ad065aca" + ], + "data": "0x0000000000000000000000000000000000000000000000016d4f128775330000", + "blockNumber": "0x161bd0f", + "transactionHash": "0xca596815ac0d42d85cd700df64d361590f1d06cf2d09806862d46944feda2044", + "transactionIndex": "0xe", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x83", + "removed": false + }, + { + "address": "0x6c3ea9036406852006290770bedfcaba0e23a0e8", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x000000000000000000000000a9d1e08c7793af67e9d92fe308d5697fb81d3e43", + "0x0000000000000000000000002c8b4fba3b3706827c96f3e4ccbc0d1442dcd074" + ], + "data": "0x00000000000000000000000000000000000000000000000000000016e43d727e", + "blockNumber": "0x161bd0f", + "transactionHash": "0xca596815ac0d42d85cd700df64d361590f1d06cf2d09806862d46944feda2044", + "transactionIndex": "0xe", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x84", + "removed": false + } + ], + "logsBloom": "0x00000000200001000000000060000000000000010000000400000000000000800000004000000000000000100000011000000028040000000080040000020600000000000000020008000008100000000000200000040000000100000000000008000000000000008400000000000800000000400000000000a80030018402200000000000000000008000000000200000000100010000200001000200122000000000800000204010000080000000000000000420000000000080000000000000000003000000002401400408001000002000000442040000000400000800000000000000000000000200000102000000000000002000900000200000000100", + "status": "0x1", + "to": "0xa9d1e08c7793af67e9d92fe308d5697fb81d3e43", + "transactionHash": "0xca596815ac0d42d85cd700df64d361590f1d06cf2d09806862d46944feda2044", + "transactionIndex": "0xe", + "type": "0x2" + }, + { + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "contractAddress": null, + "cumulativeGasUsed": "0x3adc08", + "effectiveGasPrice": "0xa6f095d4", + "from": "0xa03400e098f4421b34a3a44a1b4e571419517687", + "gasUsed": "0x13648", + "logs": [ + { + "address": "0xf8ebf4849f1fa4faf0dff2106a173d3a6cb2eb3a", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x000000000000000000000000a03400e098f4421b34a3a44a1b4e571419517687", + "0x0000000000000000000000000fac5094987a848754db82a7db870e635f126939" + ], + "data": "0x00000000000000000000000000000000000000006d06bff6e90832e72f68a000", + "blockNumber": "0x161bd0f", + "transactionHash": "0x706cc7072418792c08feb0ace7ba254538265f6bfdb6282584f936160791d8e1", + "transactionIndex": "0xf", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x85", + "removed": false + } + ], + "logsBloom": "0x00004000000000000000402000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000002008000000000000000000000000000000002000000000000000000000000180000000000000000000000000000000000000000000000000000000000", + "status": "0x1", + "to": "0xf8ebf4849f1fa4faf0dff2106a173d3a6cb2eb3a", + "transactionHash": "0x706cc7072418792c08feb0ace7ba254538265f6bfdb6282584f936160791d8e1", + "transactionIndex": "0xf", + "type": "0x2" + }, + { + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "contractAddress": null, + "cumulativeGasUsed": "0x3e8c4b", + "effectiveGasPrice": "0x2f779f57", + "from": "0xae2fc483527b8ef99eb5d9b44875f005ba1fae13", + "gasUsed": "0x3b043", + "logs": [ + { + "address": "0x615987d46003cc37387dbe544ff4f16fa1200077", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x000000000000000000000000dd6e1a4e35d307497da8d5d4052173410951b3d5", + "0x0000000000000000000000006c618dd1040a79923cd74113ef0ed07c07d2b0e7" + ], + "data": "0x000000000000000000000000000000000000000000000000000010d97cfd0001", + "blockNumber": "0x161bd0f", + "transactionHash": "0x24070e8f3c56fa6b8da89ac744e37e1e2bad090ac3bc3e0ad637cd1e3dbe57b4", + "transactionIndex": "0x10", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x86", + "removed": false + }, + { + "address": "0xe0f63a424a4439cbe457d80e4f4b51ad25b2c56c", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x0000000000000000000000007c706586679af2ba6d1a9fc2da9c6af59883fdd3", + "0x000000000000000000000000dd6e1a4e35d307497da8d5d4052173410951b3d5" + ], + "data": "0x00000000000000000000000000000000000000000000000000000001456521ca", + "blockNumber": "0x161bd0f", + "transactionHash": "0x24070e8f3c56fa6b8da89ac744e37e1e2bad090ac3bc3e0ad637cd1e3dbe57b4", + "transactionIndex": "0x10", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x87", + "removed": false + }, + { + "address": "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x0000000000000000000000001f2f10d1c40777ae1da742455c65828ff36df387", + "0x0000000000000000000000007c706586679af2ba6d1a9fc2da9c6af59883fdd3" + ], + "data": "0x000000000000000000000000000000000000000000000000003deea5386727c3", + "blockNumber": "0x161bd0f", + "transactionHash": "0x24070e8f3c56fa6b8da89ac744e37e1e2bad090ac3bc3e0ad637cd1e3dbe57b4", + "transactionIndex": "0x10", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x88", + "removed": false + }, + { + "address": "0x7c706586679af2ba6d1a9fc2da9c6af59883fdd3", + "topics": [ + "0xc42079f94a6350d7e6235f29174924f928cc2ac818eb64fed8004e115fbcca67", + "0x0000000000000000000000001f2f10d1c40777ae1da742455c65828ff36df387", + "0x000000000000000000000000dd6e1a4e35d307497da8d5d4052173410951b3d5" + ], + "data": "0x000000000000000000000000000000000000000000000000003deea5386727c3fffffffffffffffffffffffffffffffffffffffffffffffffffffffeba9ade3600000000000000000000000000000000000000000024babbbd70e20d3f4fd5180000000000000000000000000000000000000000000000000567142df5d24d20fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdb710", + "blockNumber": "0x161bd0f", + "transactionHash": "0x24070e8f3c56fa6b8da89ac744e37e1e2bad090ac3bc3e0ad637cd1e3dbe57b4", + "transactionIndex": "0x10", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x89", + "removed": false + }, + { + "address": "0xdd6e1a4e35d307497da8d5d4052173410951b3d5", + "topics": [ + "0xc42079f94a6350d7e6235f29174924f928cc2ac818eb64fed8004e115fbcca67", + "0x0000000000000000000000001f2f10d1c40777ae1da742455c65828ff36df387", + "0x0000000000000000000000006c618dd1040a79923cd74113ef0ed07c07d2b0e7" + ], + "data": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffef268302ffff00000000000000000000000000000000000000000000000000000001456521ca000000000000000000000000000000000000000004654a0d63ff5dd89c18ba8400000000000000000000000000000000000000000000000000001b39705b4ba0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec270", + "blockNumber": "0x161bd0f", + "transactionHash": "0x24070e8f3c56fa6b8da89ac744e37e1e2bad090ac3bc3e0ad637cd1e3dbe57b4", + "transactionIndex": "0x10", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x8a", + "removed": false + }, + { + "address": "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x0000000000000000000000006c618dd1040a79923cd74113ef0ed07c07d2b0e7", + "0x0000000000000000000000001f2f10d1c40777ae1da742455c65828ff36df387" + ], + "data": "0x000000000000000000000000000000000000000000000000003e9e4299000000", + "blockNumber": "0x161bd0f", + "transactionHash": "0x24070e8f3c56fa6b8da89ac744e37e1e2bad090ac3bc3e0ad637cd1e3dbe57b4", + "transactionIndex": "0x10", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x8b", + "removed": false + }, + { + "address": "0x6c618dd1040a79923cd74113ef0ed07c07d2b0e7", + "topics": [ + "0x1c411e9a96e071241c2f21f7726b17ae89e3cab4c78be50e062b03a9fffbbad1" + ], + "data": "0x000000000000000000000000000000000000000000000000009ca8a393168f4300000000000000000000000000000000000000000000000247b2f0cb40170fc5", + "blockNumber": "0x161bd0f", + "transactionHash": "0x24070e8f3c56fa6b8da89ac744e37e1e2bad090ac3bc3e0ad637cd1e3dbe57b4", + "transactionIndex": "0x10", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x8c", + "removed": false + }, + { + "address": "0x6c618dd1040a79923cd74113ef0ed07c07d2b0e7", + "topics": [ + "0xd78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d822", + "0x0000000000000000000000001f2f10d1c40777ae1da742455c65828ff36df387", + "0x0000000000000000000000001f2f10d1c40777ae1da742455c65828ff36df387" + ], + "data": "0x000000000000000000000000000000000000000000000000000010d97cfd000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003e9e4299000000", + "blockNumber": "0x161bd0f", + "transactionHash": "0x24070e8f3c56fa6b8da89ac744e37e1e2bad090ac3bc3e0ad637cd1e3dbe57b4", + "transactionIndex": "0x10", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x8d", + "removed": false + } + ], + "logsBloom": "0x002000000000000000000000800000010000000000000000000000000000000000000000000000000000020020000008020000040800200000000000000000000000000000000008000000080000002000000000000000000400000400000800000000000000000000000204000000000000008000000010008000100008000020000000000000000000000000000000000000000000000c0000004080000000040000000400001000000000000000004000000010000000000000000000000000004002000000000000000000000000000c00000000001000000000000000000000202000000000000000000000000000400000000000000000000000000000", + "status": "0x1", + "to": "0x1f2f10d1c40777ae1da742455c65828ff36df387", + "transactionHash": "0x24070e8f3c56fa6b8da89ac744e37e1e2bad090ac3bc3e0ad637cd1e3dbe57b4", + "transactionIndex": "0x10", + "type": "0x2" + }, + { + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "contractAddress": null, + "cumulativeGasUsed": "0x3ede53", + "effectiveGasPrice": "0x9b04d3d4", + "from": "0xab97925eb84fe0260779f58b7cb08d77dcb1ee2b", + "gasUsed": "0x5208", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "status": "0x1", + "to": "0xa5ccd022e4b4ac431deadb329e20aa76c4a80f5a", + "transactionHash": "0x341b093276998eaf55ba531d7cb2be1ff32f44a398c85b60d4180791cdadf218", + "transactionIndex": "0x11", + "type": "0x2" + }, + { + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "contractAddress": null, + "cumulativeGasUsed": "0x3f7fbc", + "effectiveGasPrice": "0x4fb1722d", + "from": "0xd24b2b3f3420cda82d40e0c8584b88ce7ec386e8", + "gasUsed": "0xa169", + "logs": [ + { + "address": "0xdac17f958d2ee523a2206206994597c13d831ec7", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x000000000000000000000000d24b2b3f3420cda82d40e0c8584b88ce7ec386e8", + "0x0000000000000000000000005626213e557182a6d19048d29b535b5d7f5408be" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000129d00963", + "blockNumber": "0x161bd0f", + "transactionHash": "0xa7c324afd989fec33f0436d148f3e9ef90f7159b55075827aab7b72d6840a977", + "transactionIndex": "0x12", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x8e", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000801000000000000000000000000000000000010000000000000000000000000000000000000000001000000020000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000080000000000000000000000000000000000000000000000002000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000002000000000000000", + "status": "0x1", + "to": "0xdac17f958d2ee523a2206206994597c13d831ec7", + "transactionHash": "0xa7c324afd989fec33f0436d148f3e9ef90f7159b55075827aab7b72d6840a977", + "transactionIndex": "0x12", + "type": "0x0" + }, + { + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "contractAddress": null, + "cumulativeGasUsed": "0x403018", + "effectiveGasPrice": "0x9b04d3d4", + "from": "0x260b364fe0d3d37e6fd3cda0fa50926a06c54cea", + "gasUsed": "0xb05c", + "logs": [ + { + "address": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x000000000000000000000000260b364fe0d3d37e6fd3cda0fa50926a06c54cea", + "0x0000000000000000000000005a617641788bc9c3a91696eda1bb66c60034c9b6" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000042636c39", + "blockNumber": "0x161bd0f", + "transactionHash": "0xe5cb77f931850a0890a14d4ae7f73fe1bad375114d0ccf680c7c744d1f73a045", + "transactionIndex": "0x13", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x8f", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000008000008000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000010000000000000000000000000000000000000000000000000010000000000000000000000000000000000200000000000000000000000000000000000000000000000200000001002000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000040000000000000000000000", + "status": "0x1", + "to": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48", + "transactionHash": "0xe5cb77f931850a0890a14d4ae7f73fe1bad375114d0ccf680c7c744d1f73a045", + "transactionIndex": "0x13", + "type": "0x2" + }, + { + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "contractAddress": null, + "cumulativeGasUsed": "0x42847e", + "effectiveGasPrice": "0x6b55cbd4", + "from": "0x5000afd95cbc51054caf4c5330342890ead87b70", + "gasUsed": "0x25466", + "logs": [ + { + "address": "0x000000000004444c5dc75cb358380d2e3de08a90", + "topics": [ + "0x40e9cecb9f5f1f1c5b9c97dec2917b7ee92e57ba5563708daca94dd84ad7112f", + "0x00b9edc1583bf6ef09ff3a09f6c23ecb57fd7d0bb75625717ec81eed181e22d7", + "0x00000000000000000000000066a9893cc07d91d95644aedd05d03f95e1dba8af" + ], + "data": "0xfffffffffffffffffffffffffffffffffffffffffffffffffecae9f6008a80000000000000000000000000000000000000000000000000000000000015a9d16e000000000000000000000000000000000000000000043c6e58a0426bb3e170af0000000000000000000000000000000000000000000000000601e4d79975daecfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd0e4f0000000000000000000000000000000000000000000000000000000000000064", + "blockNumber": "0x161bd0f", + "transactionHash": "0x6e1e0f9f8da08e644bd26763eb62a2b5dbe994ccfdc218de585989d06bdd1161", + "transactionIndex": "0x14", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x90", + "removed": false + }, + { + "address": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x000000000000000000000000000000000004444c5dc75cb358380d2e3de08a90", + "0x00000000000000000000000066a9893cc07d91d95644aedd05d03f95e1dba8af" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000015a9d16e", + "blockNumber": "0x161bd0f", + "transactionHash": "0x6e1e0f9f8da08e644bd26763eb62a2b5dbe994ccfdc218de585989d06bdd1161", + "transactionIndex": "0x14", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x91", + "removed": false + }, + { + "address": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x00000000000000000000000066a9893cc07d91d95644aedd05d03f95e1dba8af", + "0x00000000000000000000000027213e28d7fda5c57fe9e5dd923818dbccf71c47" + ], + "data": "0x00000000000000000000000000000000000000000000000000000000000ddd52", + "blockNumber": "0x161bd0f", + "transactionHash": "0x6e1e0f9f8da08e644bd26763eb62a2b5dbe994ccfdc218de585989d06bdd1161", + "transactionIndex": "0x14", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x92", + "removed": false + }, + { + "address": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x00000000000000000000000066a9893cc07d91d95644aedd05d03f95e1dba8af", + "0x0000000000000000000000005000afd95cbc51054caf4c5330342890ead87b70" + ], + "data": "0x00000000000000000000000000000000000000000000000000000000159bf41c", + "blockNumber": "0x161bd0f", + "transactionHash": "0x6e1e0f9f8da08e644bd26763eb62a2b5dbe994ccfdc218de585989d06bdd1161", + "transactionIndex": "0x14", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x93", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000001000000000000020080000001000000000000000000000040000000000000000000000000000000000000008000008004000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000010000000000008000800000000400000000000000000000000010000000008000000000000000000000000200000000000100000000000000000000000000000000000000200000882400020000000001000000000000400400000000000000000000000000000000000000000004000000000000000000000000000000000000000000000", + "status": "0x1", + "to": "0x66a9893cc07d91d95644aedd05d03f95e1dba8af", + "transactionHash": "0x6e1e0f9f8da08e644bd26763eb62a2b5dbe994ccfdc218de585989d06bdd1161", + "transactionIndex": "0x14", + "type": "0x2" + }, + { + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "contractAddress": null, + "cumulativeGasUsed": "0x43552f", + "effectiveGasPrice": "0x2c523e86", + "from": "0xc35fb86f962ea955751a793a007b5cdd44f798d7", + "gasUsed": "0xd0b1", + "logs": [ + { + "address": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x0000000000000000000000007d7990b713c3497937fac4331176c127710b97d5", + "0x00000000000000000000000016fbc59070699f26c094fa8716b743561e0c53d3" + ], + "data": "0x00000000000000000000000000000000000000000000000000000000148b1abe", + "blockNumber": "0x161bd0f", + "transactionHash": "0x8af00935a2db3f2e066c91359011f9e29093f62a7616e816413f2710dbfc4b41", + "transactionIndex": "0x15", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x94", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000008000000000000000000000000008000004000000000000000000000000000000000000000000000000000000000000010000010000000000000000000000000000000000000000000010000000000000000000000000000000000200000000000000000000000800000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000008000000002000000000000000000000000000000000000000000", + "status": "0x1", + "to": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48", + "transactionHash": "0x8af00935a2db3f2e066c91359011f9e29093f62a7616e816413f2710dbfc4b41", + "transactionIndex": "0x15", + "type": "0x0" + }, + { + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "contractAddress": null, + "cumulativeGasUsed": "0x43a737", + "effectiveGasPrice": "0x330fb22a", + "from": "0x5de41533c43766bb1181de4826a7f8f2e4e64549", + "gasUsed": "0x5208", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "status": "0x1", + "to": "0x0c8aa5263afde3c43a0fe88aed2b10ade922e666", + "transactionHash": "0x7c406076c4f872219370ca69e2e9dfb8096c47f514615aecda99577551b8cba1", + "transactionIndex": "0x16", + "type": "0x0" + }, + { + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "contractAddress": null, + "cumulativeGasUsed": "0x445793", + "effectiveGasPrice": "0x14bfac694", + "from": "0x3ffa6671d869ae0d923a17505e633e700fb8e35a", + "gasUsed": "0xb05c", + "logs": [ + { + "address": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x0000000000000000000000003ffa6671d869ae0d923a17505e633e700fb8e35a", + "0x000000000000000000000000842264311e492fdb425e8430472b6f9a4f660483" + ], + "data": "0x00000000000000000000000000000000000000000000000000000000001ed2a0", + "blockNumber": "0x161bd0f", + "transactionHash": "0xef7c2d4ba0dbc86ccfd07a62ca7f843ea8cdc1587011fd8c14ba640f1535ac79", + "transactionIndex": "0x17", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x95", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000010000000000000000002000000000000000000000000000000000000000000000000000000008000008000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000010000000000000000000000000000000000000000000200000010000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000002000000040000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000", + "status": "0x1", + "to": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48", + "transactionHash": "0xef7c2d4ba0dbc86ccfd07a62ca7f843ea8cdc1587011fd8c14ba640f1535ac79", + "transactionIndex": "0x17", + "type": "0x2" + }, + { + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "contractAddress": null, + "cumulativeGasUsed": "0x44a99b", + "effectiveGasPrice": "0xd69f9dd4", + "from": "0x552fe7e19ecd9789e57131c09712977b4d075cbe", + "gasUsed": "0x5208", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "status": "0x1", + "to": "0x76eeb4c8b149738a9b198d866c80e8087a0a4f17", + "transactionHash": "0xac88e9bd517db66ea5eebd8caba9d5c33ddfce1f779eef3e6821e15510f4c864", + "transactionIndex": "0x18", + "type": "0x2" + }, + { + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "contractAddress": null, + "cumulativeGasUsed": "0x453a97", + "effectiveGasPrice": "0x6a5efc76", + "from": "0x4791eb2224d272655e8d5da171bb07dd5a805ff6", + "gasUsed": "0x90fc", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "status": "0x1", + "to": "0x62b53c45305d29bbe4b1bfa49dd78766b2f1e624", + "transactionHash": "0xda8bc5dc5617758c6af0681d71642f68ce679bb92df4d8cf48493f0cfad14e20", + "transactionIndex": "0x19", + "type": "0x4" + }, + { + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "contractAddress": null, + "cumulativeGasUsed": "0x458c9f", + "effectiveGasPrice": "0x9b04d3d4", + "from": "0xab97925eb84fe0260779f58b7cb08d77dcb1ee2b", + "gasUsed": "0x5208", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "status": "0x1", + "to": "0xe401a6a38024d8f5ab88f1b08cad476ccaca45e8", + "transactionHash": "0xd7938913fd206fc1ef384e45dada725badd5a3ff87a793d9c432b70488a7bcdb", + "transactionIndex": "0x1a", + "type": "0x2" + }, + { + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "contractAddress": null, + "cumulativeGasUsed": "0x45dea7", + "effectiveGasPrice": "0x9b04d3d4", + "from": "0xab97925eb84fe0260779f58b7cb08d77dcb1ee2b", + "gasUsed": "0x5208", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "status": "0x1", + "to": "0x3b26af33b78b1414e40c83be39a6f1b924b1e08a", + "transactionHash": "0x80c2402d4dbfadb46899b4ceb48f3851c8be0d08eb399608b6966f401653e60d", + "transactionIndex": "0x1b", + "type": "0x2" + }, + { + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "contractAddress": null, + "cumulativeGasUsed": "0x4fac28", + "effectiveGasPrice": "0x23d05144", + "from": "0x2c61206798f1ab3bce5833ecdd4a78aeba2e6b36", + "gasUsed": "0x9cd81", + "logs": [ + { + "address": "0xb167d99000cec6232e3b27f7f01d2b41c60f7fdc", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x00000000000000000000000073ada7d3ce2c1dcf9bb4100b650196ccc2ccdfa6", + "0x000000000000000000000000000000000000000000000000000000000000dead" + ], + "data": "0x000000000000000000000000000000000000000000002c70a2a249e16480990e", + "blockNumber": "0x161bd0f", + "transactionHash": "0x17a42c2526e9ea212781d9c40ee9348737b2f9815b53610366dfa3b571fcab70", + "transactionIndex": "0x1c", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x96", + "removed": false + }, + { + "address": "0x73ada7d3ce2c1dcf9bb4100b650196ccc2ccdfa6", + "topics": [ + "0x1c411e9a96e071241c2f21f7726b17ae89e3cab4c78be50e062b03a9fffbbad1" + ], + "data": "0x00000000000000000000000000000000000000000045438d7af1264ba46e8e420000000000000000000000000000000000000000000000000bb6892df1dc2d88", + "blockNumber": "0x161bd0f", + "transactionHash": "0x17a42c2526e9ea212781d9c40ee9348737b2f9815b53610366dfa3b571fcab70", + "transactionIndex": "0x1c", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x97", + "removed": false + }, + { + "address": "0xb167d99000cec6232e3b27f7f01d2b41c60f7fdc", + "topics": [ + "0x454c91ae84fcc766ddda0dcb289f26b3d0176efeacf4061fc219fa6ca8c3048d" + ], + "data": "0x", + "blockNumber": "0x161bd0f", + "transactionHash": "0x17a42c2526e9ea212781d9c40ee9348737b2f9815b53610366dfa3b571fcab70", + "transactionIndex": "0x1c", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x98", + "removed": false + }, + { + "address": "0xb167d99000cec6232e3b27f7f01d2b41c60f7fdc", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x000000000000000000000000ceb550db4b2f889782936bbedfe42ab406e8243d", + "0x00000000000000000000000073ada7d3ce2c1dcf9bb4100b650196ccc2ccdfa6" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000001", + "blockNumber": "0x161bd0f", + "transactionHash": "0x17a42c2526e9ea212781d9c40ee9348737b2f9815b53610366dfa3b571fcab70", + "transactionIndex": "0x1c", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x99", + "removed": false + }, + { + "address": "0x3b9c214a501b2ae33ab1793b57b09879a754f2ef", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x000000000000000000000000df37c5d3eea96515faa286c30e8f6b05640cad00", + "0x0000000000000000000000000000000000000000000000000000000000000000" + ], + "data": "0x000000000000000000000000000000000000000000001f9f41f9e900fbd8e19c", + "blockNumber": "0x161bd0f", + "transactionHash": "0x17a42c2526e9ea212781d9c40ee9348737b2f9815b53610366dfa3b571fcab70", + "transactionIndex": "0x1c", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x9a", + "removed": false + }, + { + "address": "0xdf37c5d3eea96515faa286c30e8f6b05640cad00", + "topics": [ + "0x1c411e9a96e071241c2f21f7726b17ae89e3cab4c78be50e062b03a9fffbbad1" + ], + "data": "0x000000000000000000000000000000000000000000314937d48228888707a2d90000000000000000000000000000000000000000000000001e8e8ddba5bec78b", + "blockNumber": "0x161bd0f", + "transactionHash": "0x17a42c2526e9ea212781d9c40ee9348737b2f9815b53610366dfa3b571fcab70", + "transactionIndex": "0x1c", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x9b", + "removed": false + }, + { + "address": "0x3b9c214a501b2ae33ab1793b57b09879a754f2ef", + "topics": [ + "0x454c91ae84fcc766ddda0dcb289f26b3d0176efeacf4061fc219fa6ca8c3048d" + ], + "data": "0x", + "blockNumber": "0x161bd0f", + "transactionHash": "0x17a42c2526e9ea212781d9c40ee9348737b2f9815b53610366dfa3b571fcab70", + "transactionIndex": "0x1c", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x9c", + "removed": false + }, + { + "address": "0x3b9c214a501b2ae33ab1793b57b09879a754f2ef", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x000000000000000000000000ceb550db4b2f889782936bbedfe42ab406e8243d", + "0x000000000000000000000000df37c5d3eea96515faa286c30e8f6b05640cad00" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000001", + "blockNumber": "0x161bd0f", + "transactionHash": "0x17a42c2526e9ea212781d9c40ee9348737b2f9815b53610366dfa3b571fcab70", + "transactionIndex": "0x1c", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x9d", + "removed": false + }, + { + "address": "0xc5327f8a6f6ea98928ff6a893d74a5cbc743f170", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x000000000000000000000000b21cef20389f300cdc7b2572f0a9a1afe62f4479", + "0x000000000000000000000000000000000000000000000000000000000000dead" + ], + "data": "0x000000000000000000000000000000000000000163e01624a3721a46e1ad41a4", + "blockNumber": "0x161bd0f", + "transactionHash": "0x17a42c2526e9ea212781d9c40ee9348737b2f9815b53610366dfa3b571fcab70", + "transactionIndex": "0x1c", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x9e", + "removed": false + }, + { + "address": "0xb21cef20389f300cdc7b2572f0a9a1afe62f4479", + "topics": [ + "0x1c411e9a96e071241c2f21f7726b17ae89e3cab4c78be50e062b03a9fffbbad1" + ], + "data": "0x0000000000000000000000000000000000000000000000000db819c1093f63c1000000000000000000000000000000000000022aaa42831abed6f479bd094fbd", + "blockNumber": "0x161bd0f", + "transactionHash": "0x17a42c2526e9ea212781d9c40ee9348737b2f9815b53610366dfa3b571fcab70", + "transactionIndex": "0x1c", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x9f", + "removed": false + }, + { + "address": "0xc5327f8a6f6ea98928ff6a893d74a5cbc743f170", + "topics": [ + "0x454c91ae84fcc766ddda0dcb289f26b3d0176efeacf4061fc219fa6ca8c3048d" + ], + "data": "0x", + "blockNumber": "0x161bd0f", + "transactionHash": "0x17a42c2526e9ea212781d9c40ee9348737b2f9815b53610366dfa3b571fcab70", + "transactionIndex": "0x1c", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0xa0", + "removed": false + }, + { + "address": "0xc5327f8a6f6ea98928ff6a893d74a5cbc743f170", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x000000000000000000000000ceb550db4b2f889782936bbedfe42ab406e8243d", + "0x000000000000000000000000b21cef20389f300cdc7b2572f0a9a1afe62f4479" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000001", + "blockNumber": "0x161bd0f", + "transactionHash": "0x17a42c2526e9ea212781d9c40ee9348737b2f9815b53610366dfa3b571fcab70", + "transactionIndex": "0x1c", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0xa1", + "removed": false + }, + { + "address": "0xf92c421115b1f11203abcfce78eed1aadad3e0a5", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x000000000000000000000000f1edbdf579ad83cc86064bd089300b6b9362f084", + "0x000000000000000000000000000000000000000000000000000000000000dead" + ], + "data": "0x00000000000000000000000000000000000000000089245c8e692932e3213cf6", + "blockNumber": "0x161bd0f", + "transactionHash": "0x17a42c2526e9ea212781d9c40ee9348737b2f9815b53610366dfa3b571fcab70", + "transactionIndex": "0x1c", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0xa2", + "removed": false + }, + { + "address": "0xf1edbdf579ad83cc86064bd089300b6b9362f084", + "topics": [ + "0x1c411e9a96e071241c2f21f7726b17ae89e3cab4c78be50e062b03a9fffbbad1" + ], + "data": "0x000000000000000000000000000000000000000000000000134aeb69c5d6d9290000000000000000000000000000000000000000d5bfac41f5e7365000ce0402", + "blockNumber": "0x161bd0f", + "transactionHash": "0x17a42c2526e9ea212781d9c40ee9348737b2f9815b53610366dfa3b571fcab70", + "transactionIndex": "0x1c", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0xa3", + "removed": false + }, + { + "address": "0xf92c421115b1f11203abcfce78eed1aadad3e0a5", + "topics": [ + "0x454c91ae84fcc766ddda0dcb289f26b3d0176efeacf4061fc219fa6ca8c3048d" + ], + "data": "0x", + "blockNumber": "0x161bd0f", + "transactionHash": "0x17a42c2526e9ea212781d9c40ee9348737b2f9815b53610366dfa3b571fcab70", + "transactionIndex": "0x1c", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0xa4", + "removed": false + }, + { + "address": "0xf92c421115b1f11203abcfce78eed1aadad3e0a5", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x000000000000000000000000ceb550db4b2f889782936bbedfe42ab406e8243d", + "0x000000000000000000000000f1edbdf579ad83cc86064bd089300b6b9362f084" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000001", + "blockNumber": "0x161bd0f", + "transactionHash": "0x17a42c2526e9ea212781d9c40ee9348737b2f9815b53610366dfa3b571fcab70", + "transactionIndex": "0x1c", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0xa5", + "removed": false + }, + { + "address": "0xf801db2654e911e922665c4cb885d8cca4c155bf", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x000000000000000000000000321166c624541dde00025d2d916d117410ba8421", + "0x000000000000000000000000000000000000000000000000000000000000dead" + ], + "data": "0x0000000000000000000000000000000000000000000013d075815ec17b746f4c", + "blockNumber": "0x161bd0f", + "transactionHash": "0x17a42c2526e9ea212781d9c40ee9348737b2f9815b53610366dfa3b571fcab70", + "transactionIndex": "0x1c", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0xa6", + "removed": false + }, + { + "address": "0x321166c624541dde00025d2d916d117410ba8421", + "topics": [ + "0x1c411e9a96e071241c2f21f7726b17ae89e3cab4c78be50e062b03a9fffbbad1" + ], + "data": "0x00000000000000000000000000000000000000000000000010d3766833cb24380000000000000000000000000000000000000000001ee1e724a2af8f6a797837", + "blockNumber": "0x161bd0f", + "transactionHash": "0x17a42c2526e9ea212781d9c40ee9348737b2f9815b53610366dfa3b571fcab70", + "transactionIndex": "0x1c", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0xa7", + "removed": false + }, + { + "address": "0xf801db2654e911e922665c4cb885d8cca4c155bf", + "topics": [ + "0x454c91ae84fcc766ddda0dcb289f26b3d0176efeacf4061fc219fa6ca8c3048d" + ], + "data": "0x", + "blockNumber": "0x161bd0f", + "transactionHash": "0x17a42c2526e9ea212781d9c40ee9348737b2f9815b53610366dfa3b571fcab70", + "transactionIndex": "0x1c", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0xa8", + "removed": false + }, + { + "address": "0xf801db2654e911e922665c4cb885d8cca4c155bf", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x000000000000000000000000ceb550db4b2f889782936bbedfe42ab406e8243d", + "0x000000000000000000000000321166c624541dde00025d2d916d117410ba8421" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000001", + "blockNumber": "0x161bd0f", + "transactionHash": "0x17a42c2526e9ea212781d9c40ee9348737b2f9815b53610366dfa3b571fcab70", + "transactionIndex": "0x1c", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0xa9", + "removed": false + }, + { + "address": "0xc7e957681720875f3a2143f1afb72e7fb6ffdd78", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x000000000000000000000000e1e82ee891f469897a815b0bfcc34dd5d597f76a", + "0x000000000000000000000000000000000000000000000000000000000000dead" + ], + "data": "0x000000000000000000000000000000000000000000005e5d99029678a6debc2e", + "blockNumber": "0x161bd0f", + "transactionHash": "0x17a42c2526e9ea212781d9c40ee9348737b2f9815b53610366dfa3b571fcab70", + "transactionIndex": "0x1c", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0xaa", + "removed": false + }, + { + "address": "0xe1e82ee891f469897a815b0bfcc34dd5d597f76a", + "topics": [ + "0x1c411e9a96e071241c2f21f7726b17ae89e3cab4c78be50e062b03a9fffbbad1" + ], + "data": "0x000000000000000000000000000000000000000000000000165e66cb28b490a20000000000000000000000000000000000000000009313e17b08860c15274d0f", + "blockNumber": "0x161bd0f", + "transactionHash": "0x17a42c2526e9ea212781d9c40ee9348737b2f9815b53610366dfa3b571fcab70", + "transactionIndex": "0x1c", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0xab", + "removed": false + }, + { + "address": "0xc7e957681720875f3a2143f1afb72e7fb6ffdd78", + "topics": [ + "0x454c91ae84fcc766ddda0dcb289f26b3d0176efeacf4061fc219fa6ca8c3048d" + ], + "data": "0x", + "blockNumber": "0x161bd0f", + "transactionHash": "0x17a42c2526e9ea212781d9c40ee9348737b2f9815b53610366dfa3b571fcab70", + "transactionIndex": "0x1c", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0xac", + "removed": false + }, + { + "address": "0xc7e957681720875f3a2143f1afb72e7fb6ffdd78", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x000000000000000000000000ceb550db4b2f889782936bbedfe42ab406e8243d", + "0x000000000000000000000000e1e82ee891f469897a815b0bfcc34dd5d597f76a" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000001", + "blockNumber": "0x161bd0f", + "transactionHash": "0x17a42c2526e9ea212781d9c40ee9348737b2f9815b53610366dfa3b571fcab70", + "transactionIndex": "0x1c", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0xad", + "removed": false + } + ], + "logsBloom": "0x000810000000100000400000804000000000802800000000000000000000000000000000000000000240040000000040008200000000000800200020000200002000001000000000081000a800004000000002014000000002000000000002000000000002000000000000000000080040000100080000000000001004000000000000000000400000000400000000000200000004000008080000002000200080000000010020050000001000000800000000000800000000000000000000000800040a200000000000000000000000000010000000001000000000000020000000000004000000202000002000000020000000000001000000000008000100", + "status": "0x1", + "to": "0xceb550db4b2f889782936bbedfe42ab406e8243d", + "transactionHash": "0x17a42c2526e9ea212781d9c40ee9348737b2f9815b53610366dfa3b571fcab70", + "transactionIndex": "0x1c", + "type": "0x2" + }, + { + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "contractAddress": null, + "cumulativeGasUsed": "0x51fb32", + "effectiveGasPrice": "0x6b55cbd4", + "from": "0xaf8648ea8cecb238158b6fdf3fd3faf57f7e5828", + "gasUsed": "0x24f0a", + "logs": [ + { + "address": "0x0000000000000068f116a894984e2db1123eb395", + "topics": [ + "0x6bacc01dbe442496068f7d234edd811f1a5f833243e0aec824f86ab861f3c90d", + "0x000000000000000000000000af8648ea8cecb238158b6fdf3fd3faf57f7e5828", + "0x0000000000000000000000000000000000000000000000000000000000000000" + ], + "data": "0xe3e0fb0a038bc3551a6478b42b4afe222d3b9ee58ccab68dabb1768a550cbfb0", + "blockNumber": "0x161bd0f", + "transactionHash": "0xb35c3c3a68b519d71d68889f3fb0a250f4deb043a8037c6e398875964cd505df", + "transactionIndex": "0x1d", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0xae", + "removed": false + }, + { + "address": "0x0000000000000068f116a894984e2db1123eb395", + "topics": [ + "0x6bacc01dbe442496068f7d234edd811f1a5f833243e0aec824f86ab861f3c90d", + "0x000000000000000000000000af8648ea8cecb238158b6fdf3fd3faf57f7e5828", + "0x0000000000000000000000000000000000000000000000000000000000000000" + ], + "data": "0x4b4dfcc04791d09879f5d1f22ca4507605c8f30e1892892a740ca1d2a0da73df", + "blockNumber": "0x161bd0f", + "transactionHash": "0xb35c3c3a68b519d71d68889f3fb0a250f4deb043a8037c6e398875964cd505df", + "transactionIndex": "0x1d", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0xaf", + "removed": false + }, + { + "address": "0x0000000000000068f116a894984e2db1123eb395", + "topics": [ + "0x6bacc01dbe442496068f7d234edd811f1a5f833243e0aec824f86ab861f3c90d", + "0x000000000000000000000000af8648ea8cecb238158b6fdf3fd3faf57f7e5828", + "0x0000000000000000000000000000000000000000000000000000000000000000" + ], + "data": "0xec28195d952db26d0c13238998280ed9bac737582347b18e92b7df7bdc8279d1", + "blockNumber": "0x161bd0f", + "transactionHash": "0xb35c3c3a68b519d71d68889f3fb0a250f4deb043a8037c6e398875964cd505df", + "transactionIndex": "0x1d", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0xb0", + "removed": false + }, + { + "address": "0x0000000000000068f116a894984e2db1123eb395", + "topics": [ + "0x6bacc01dbe442496068f7d234edd811f1a5f833243e0aec824f86ab861f3c90d", + "0x000000000000000000000000af8648ea8cecb238158b6fdf3fd3faf57f7e5828", + "0x0000000000000000000000000000000000000000000000000000000000000000" + ], + "data": "0xf9a5a3ac5d66d04c588fe7308aa48021df65decd1ae3024cc267b23e5382b3dc", + "blockNumber": "0x161bd0f", + "transactionHash": "0xb35c3c3a68b519d71d68889f3fb0a250f4deb043a8037c6e398875964cd505df", + "transactionIndex": "0x1d", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0xb1", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000008000000000000000000020000000000800000000800002000000000000000000000000000010200000200000000000000000000000000000000000000000000000000000000000000010010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000", + "status": "0x1", + "to": "0x0000000000000068f116a894984e2db1123eb395", + "transactionHash": "0xb35c3c3a68b519d71d68889f3fb0a250f4deb043a8037c6e398875964cd505df", + "transactionIndex": "0x1d", + "type": "0x2" + }, + { + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "contractAddress": null, + "cumulativeGasUsed": "0x529c8f", + "effectiveGasPrice": "0x4fb1722d", + "from": "0xe75de7c288e72bb44ce46d4a795bb794bd19664b", + "gasUsed": "0xa15d", + "logs": [ + { + "address": "0xdac17f958d2ee523a2206206994597c13d831ec7", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x000000000000000000000000e75de7c288e72bb44ce46d4a795bb794bd19664b", + "0x000000000000000000000000408cb2bb16d073f0b6d4785fdab75b184e59e41e" + ], + "data": "0x00000000000000000000000000000000000000000000000000000000831967dc", + "blockNumber": "0x161bd0f", + "transactionHash": "0xffe56e6ac055509a585cbce2c45f16125695652d5214c2d06b0c4a1646780b0e", + "transactionIndex": "0x1e", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0xb2", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000200000000000000000000000000000000000000000000000000100000000000000000000000000080000000000000000000000000000000000000010000000002000000000000000000000000000000000088000000000000200000000000000000000000000000000000000000000000000000000000040000000000", + "status": "0x1", + "to": "0xdac17f958d2ee523a2206206994597c13d831ec7", + "transactionHash": "0xffe56e6ac055509a585cbce2c45f16125695652d5214c2d06b0c4a1646780b0e", + "transactionIndex": "0x1e", + "type": "0x0" + }, + { + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "contractAddress": null, + "cumulativeGasUsed": "0x57572f", + "effectiveGasPrice": "0x5f6a09d4", + "from": "0x1cca465c62fb70741dd181ee86b53974db7d4122", + "gasUsed": "0x4baa0", + "logs": [ + { + "address": "0x3ffeea07a27fab7ad1df5297fa75e77a43cb5790", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x0000000000000000000000001cca465c62fb70741dd181ee86b53974db7d4122", + "0x000000000000000000000000a7ca2c8673bcfa5a26d8ceec2887f2cc2b0db22a" + ], + "data": "0x000000000000000000000000000000000000000049101d6a5ed6b6800bdcca49", + "blockNumber": "0x161bd0f", + "transactionHash": "0x58cf8b1080f939e17a12a98187292e9dbfc3fd075db5db577997b1ba7f26021c", + "transactionIndex": "0x1f", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0xb3", + "removed": false + }, + { + "address": "0x3ffeea07a27fab7ad1df5297fa75e77a43cb5790", + "topics": [ + "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925", + "0x0000000000000000000000001cca465c62fb70741dd181ee86b53974db7d4122", + "0x000000000000000000000000a7ca2c8673bcfa5a26d8ceec2887f2cc2b0db22a" + ], + "data": "0xffffffffffffffffffffffffffffffffffffffff905d7d1052a9f197aad6f249", + "blockNumber": "0x161bd0f", + "transactionHash": "0x58cf8b1080f939e17a12a98187292e9dbfc3fd075db5db577997b1ba7f26021c", + "transactionIndex": "0x1f", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0xb4", + "removed": false + }, + { + "address": "0xa7ca2c8673bcfa5a26d8ceec2887f2cc2b0db22a", + "topics": [ + "0x42bd73ea702d7cf4505c06a7ac02a171536177d9cc2c7665443151ec91cc43fc", + "0x0000000000000000000000003ffeea07a27fab7ad1df5297fa75e77a43cb5790", + "0x0000000000000000000000001cca465c62fb70741dd181ee86b53974db7d4122" + ], + "data": "0x000000000000000000000000000000000000000049101d6a5ed6b6800bdcca4900000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000", + "blockNumber": "0x161bd0f", + "transactionHash": "0x58cf8b1080f939e17a12a98187292e9dbfc3fd075db5db577997b1ba7f26021c", + "transactionIndex": "0x1f", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0xb5", + "removed": false + }, + { + "address": "0x3ffeea07a27fab7ad1df5297fa75e77a43cb5790", + "topics": [ + "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925", + "0x000000000000000000000000a7ca2c8673bcfa5a26d8ceec2887f2cc2b0db22a", + "0x0000000000000000000000001111111254eeb25477b68fb85ed929f73a960582" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000000", + "blockNumber": "0x161bd0f", + "transactionHash": "0x58cf8b1080f939e17a12a98187292e9dbfc3fd075db5db577997b1ba7f26021c", + "transactionIndex": "0x1f", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0xb6", + "removed": false + }, + { + "address": "0x3ffeea07a27fab7ad1df5297fa75e77a43cb5790", + "topics": [ + "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925", + "0x000000000000000000000000a7ca2c8673bcfa5a26d8ceec2887f2cc2b0db22a", + "0x0000000000000000000000001111111254eeb25477b68fb85ed929f73a960582" + ], + "data": "0x000000000000000000000000000000000000000049101d6a5ed6b6800bdcca49", + "blockNumber": "0x161bd0f", + "transactionHash": "0x58cf8b1080f939e17a12a98187292e9dbfc3fd075db5db577997b1ba7f26021c", + "transactionIndex": "0x1f", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0xb7", + "removed": false + }, + { + "address": "0x3ffeea07a27fab7ad1df5297fa75e77a43cb5790", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x000000000000000000000000a7ca2c8673bcfa5a26d8ceec2887f2cc2b0db22a", + "0x000000000000000000000000bf16540c857b4e32ce6c37d2f7725c8eec869b8b" + ], + "data": "0x000000000000000000000000000000000000000049101d6a5ed6b6800bdcca49", + "blockNumber": "0x161bd0f", + "transactionHash": "0x58cf8b1080f939e17a12a98187292e9dbfc3fd075db5db577997b1ba7f26021c", + "transactionIndex": "0x1f", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0xb8", + "removed": false + }, + { + "address": "0x3ffeea07a27fab7ad1df5297fa75e77a43cb5790", + "topics": [ + "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925", + "0x000000000000000000000000a7ca2c8673bcfa5a26d8ceec2887f2cc2b0db22a", + "0x0000000000000000000000001111111254eeb25477b68fb85ed929f73a960582" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000000", + "blockNumber": "0x161bd0f", + "transactionHash": "0x58cf8b1080f939e17a12a98187292e9dbfc3fd075db5db577997b1ba7f26021c", + "transactionIndex": "0x1f", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0xb9", + "removed": false + }, + { + "address": "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x000000000000000000000000bf16540c857b4e32ce6c37d2f7725c8eec869b8b", + "0x0000000000000000000000001111111254eeb25477b68fb85ed929f73a960582" + ], + "data": "0x00000000000000000000000000000000000000000000000002c4c470058b00c2", + "blockNumber": "0x161bd0f", + "transactionHash": "0x58cf8b1080f939e17a12a98187292e9dbfc3fd075db5db577997b1ba7f26021c", + "transactionIndex": "0x1f", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0xba", + "removed": false + }, + { + "address": "0xbf16540c857b4e32ce6c37d2f7725c8eec869b8b", + "topics": [ + "0x1c411e9a96e071241c2f21f7726b17ae89e3cab4c78be50e062b03a9fffbbad1" + ], + "data": "0x000000000000000000000000000000000000013bc94e104376a8b240900c19ee00000000000000000000000000000000000000000000000bfdd04708f7656da8", + "blockNumber": "0x161bd0f", + "transactionHash": "0x58cf8b1080f939e17a12a98187292e9dbfc3fd075db5db577997b1ba7f26021c", + "transactionIndex": "0x1f", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0xbb", + "removed": false + }, + { + "address": "0xbf16540c857b4e32ce6c37d2f7725c8eec869b8b", + "topics": [ + "0xd78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d822", + "0x0000000000000000000000005141b82f5ffda4c6fe1e372978f1c5427640a190", + "0x0000000000000000000000001111111254eeb25477b68fb85ed929f73a960582" + ], + "data": "0x000000000000000000000000000000000000000049101d6a5ed6b6800bdcca490000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002c4c470058b00c2", + "blockNumber": "0x161bd0f", + "transactionHash": "0x58cf8b1080f939e17a12a98187292e9dbfc3fd075db5db577997b1ba7f26021c", + "transactionIndex": "0x1f", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0xbc", + "removed": false + }, + { + "address": "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x0000000000000000000000001111111254eeb25477b68fb85ed929f73a960582", + "0x000000000000000000000000a7ca2c8673bcfa5a26d8ceec2887f2cc2b0db22a" + ], + "data": "0x00000000000000000000000000000000000000000000000002c4c470058b00c2", + "blockNumber": "0x161bd0f", + "transactionHash": "0x58cf8b1080f939e17a12a98187292e9dbfc3fd075db5db577997b1ba7f26021c", + "transactionIndex": "0x1f", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0xbd", + "removed": false + }, + { + "address": "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x000000000000000000000000a7ca2c8673bcfa5a26d8ceec2887f2cc2b0db22a", + "0x000000000000000000000000965dc72531bc322cab5537d432bb14451cabb30d" + ], + "data": "0x0000000000000000000000000000000000000000000000000004f61c6ea17c2a", + "blockNumber": "0x161bd0f", + "transactionHash": "0x58cf8b1080f939e17a12a98187292e9dbfc3fd075db5db577997b1ba7f26021c", + "transactionIndex": "0x1f", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0xbe", + "removed": false + }, + { + "address": "0xa7ca2c8673bcfa5a26d8ceec2887f2cc2b0db22a", + "topics": [ + "0xfc431937278b84c6fa5b23bcc58f673c647fea974d3656e766b22d8c1412e544", + "0x0000000000000000000000000000000000000000000000000000000000000004", + "0x0000000000000000000000003ffeea07a27fab7ad1df5297fa75e77a43cb5790", + "0x000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2" + ], + "data": "0x000000000000000000000000000000000000000049101d6a5ed6b6800bdcca4900000000000000000000000000000000000000000000000002bfce5396e9849800000000000000000000000000000000000000000000000002b477372c53d6800000000000000000000000000000000000000000000000000004f61c6ea17c2a00000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000022812aa3caf0000000000000000000000005141b82f5ffda4c6fe1e372978f1c5427640a1900000000000000000000000003ffeea07a27fab7ad1df5297fa75e77a43cb5790000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2000000000000000000000000bf16540c857b4e32ce6c37d2f7725c8eec869b8b000000000000000000000000a7ca2c8673bcfa5a26d8ceec2887f2cc2b0db22a000000000000000000000000000000000000000049101d6a5ed6b6800bdcca4900000000000000000000000000000000000000000000000002b477372c53d6800000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000014000000000000000000000000000000000000000000000000000000000000001600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008500000000000000000000000000000000000000000000000000000000006700206ae40711b8002dc6c0bf16540c857b4e32ce6c37d2f7725c8eec869b8b1111111254eeb25477b68fb85ed929f73a96058200000000000000000000000000000000000000000000000002b477372c53d6803ffeea07a27fab7ad1df5297fa75e77a43cb5790000000000000000000000000000000000000000000000000000000c4e3736f000000000000000000000000000000000000000000000000", + "blockNumber": "0x161bd0f", + "transactionHash": "0x58cf8b1080f939e17a12a98187292e9dbfc3fd075db5db577997b1ba7f26021c", + "transactionIndex": "0x1f", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0xbf", + "removed": false + }, + { + "address": "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2", + "topics": [ + "0x7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b65", + "0x000000000000000000000000a7ca2c8673bcfa5a26d8ceec2887f2cc2b0db22a" + ], + "data": "0x00000000000000000000000000000000000000000000000002bfce5396e98498", + "blockNumber": "0x161bd0f", + "transactionHash": "0x58cf8b1080f939e17a12a98187292e9dbfc3fd075db5db577997b1ba7f26021c", + "transactionIndex": "0x1f", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0xc0", + "removed": false + }, + { + "address": "0xa7ca2c8673bcfa5a26d8ceec2887f2cc2b0db22a", + "topics": [ + "0xb4d99315c288c112a1d49da08c3fa85f78e2c83392f63f0a8964418f96aa24ed" + ], + "data": "0x00000000000000000000000000000000000000000000000002bfce5396e9849800000000000000000000000000000000000000000000000002bfce5396e9849800000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000000", + "blockNumber": "0x161bd0f", + "transactionHash": "0x58cf8b1080f939e17a12a98187292e9dbfc3fd075db5db577997b1ba7f26021c", + "transactionIndex": "0x1f", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0xc1", + "removed": false + }, + { + "address": "0xa7ca2c8673bcfa5a26d8ceec2887f2cc2b0db22a", + "topics": [ + "0x33be7eabd8ed368ca1aa14ce2ad1e90a0c9bf21edbb3820d5591546e4eb84157", + "0x000000000000000000000000eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee", + "0x0000000000000000000000001cca465c62fb70741dd181ee86b53974db7d4122" + ], + "data": "0x00000000000000000000000000000000000000000000000002bfce5396e98498000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000000", + "blockNumber": "0x161bd0f", + "transactionHash": "0x58cf8b1080f939e17a12a98187292e9dbfc3fd075db5db577997b1ba7f26021c", + "transactionIndex": "0x1f", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0xc2", + "removed": false + }, + { + "address": "0x3c11f6265ddec22f4d049dde480615735f451646", + "topics": [ + "0x68f46c45a243a0e9065a97649faf9a5afe1692f2679e650c2f853b9cd734cc0e" + ], + "data": "0x", + "blockNumber": "0x161bd0f", + "transactionHash": "0x58cf8b1080f939e17a12a98187292e9dbfc3fd075db5db577997b1ba7f26021c", + "transactionIndex": "0x1f", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0xc3", + "removed": false + } + ], + "logsBloom": "0x002000000000010000000000800000000000000004000000008c0000000000000040000000000000000020000100080002004000080000200010004000200000000000000000080000000008000000a00000000020600000000004000000020008000000040000000000000000080000000004000000040002000010000000000000000000000080000000400000000000004000000000080000004000020080020000000100081000400000008004000000040000000000002000200000002010020002800000000000001000380000000000109000001000000002000000001110200000000020000400000040000000002000000800000000000000000000", + "status": "0x1", + "to": "0x3c11f6265ddec22f4d049dde480615735f451646", + "transactionHash": "0x58cf8b1080f939e17a12a98187292e9dbfc3fd075db5db577997b1ba7f26021c", + "transactionIndex": "0x1f", + "type": "0x2" + }, + { + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "contractAddress": null, + "cumulativeGasUsed": "0x57a937", + "effectiveGasPrice": "0x495818a5", + "from": "0x776e7ad582e7ccc660f628774c54dd5aad1f14a1", + "gasUsed": "0x5208", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "status": "0x1", + "to": "0xb9bd424575359fcc3d3c1538b2e11e37fb517fcf", + "transactionHash": "0x0230cf61b59c8ac739a7cced4477df1611842ca8faeadeab19307145889782a7", + "transactionIndex": "0x20", + "type": "0x2" + }, + { + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "contractAddress": null, + "cumulativeGasUsed": "0x58f4f1", + "effectiveGasPrice": "0x4182b434", + "from": "0xaf31d6f4e3841b28c5b0581770ffaf2e1f558515", + "gasUsed": "0x14bba", + "logs": [ + { + "address": "0x0000bbddc7ce488642fb579f8b00f3a590007251", + "topics": [], + "data": "0xaf31d6f4e3841b28c5b0581770ffaf2e1f5585158703a14049cde59eeb9733a488b963e44544990641bab848f807b8ccb680947fe318ac28dd993d7af5d9873f1127af77a360d4f3c1018b5a8782d75c7509fe8d383311432833c2c8a293f0a2a7b1bbcdbcc53df43624b7dea2c3eaa1e640bc5c", + "blockNumber": "0x161bd0f", + "transactionHash": "0x30c4df0d162a8e6b3a0677be57584d0a50da42677eff50c900f15f36ca1ad7a9", + "transactionIndex": "0x21", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0xc4", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "status": "0x1", + "to": "0x0000bbddc7ce488642fb579f8b00f3a590007251", + "transactionHash": "0x30c4df0d162a8e6b3a0677be57584d0a50da42677eff50c900f15f36ca1ad7a9", + "transactionIndex": "0x21", + "type": "0x2" + }, + { + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "contractAddress": null, + "cumulativeGasUsed": "0x59a902", + "effectiveGasPrice": "0x5f6a09d4", + "from": "0x70df61c20275d9088c4e50c12de9af6d23276e5c", + "gasUsed": "0xb411", + "logs": [ + { + "address": "0xdac17f958d2ee523a2206206994597c13d831ec7", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x00000000000000000000000070df61c20275d9088c4e50c12de9af6d23276e5c", + "0x00000000000000000000000069275b5c10143c8fd1cbdb2637348b1558c73660" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000001312d00", + "blockNumber": "0x161bd0f", + "transactionHash": "0x315141d0a9a6f772f7a151235bdc319a32aed88e0ddd6ca34a94f903cdecd562", + "transactionIndex": "0x22", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0xc5", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000200000400000000000000000000000000000000000000000000008000004000000000000000000000000000200000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000080000000000000000000000000000000000000000000000002000000000000000000000400000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000", + "status": "0x1", + "to": "0xdac17f958d2ee523a2206206994597c13d831ec7", + "transactionHash": "0x315141d0a9a6f772f7a151235bdc319a32aed88e0ddd6ca34a94f903cdecd562", + "transactionIndex": "0x22", + "type": "0x2" + }, + { + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "contractAddress": null, + "cumulativeGasUsed": "0x5a9c36", + "effectiveGasPrice": "0x3fce7f68", + "from": "0x10fdba297c8da9fa8904ffd699ce81de5615985c", + "gasUsed": "0xf334", + "logs": [ + { + "address": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x00000000000000000000000010fdba297c8da9fa8904ffd699ce81de5615985c", + "0x00000000000000000000000025d772eb5e0c9dcd7229c7b9158b1e6cb73dadc1" + ], + "data": "0x00000000000000000000000000000000000000000000000000000007aef40a00", + "blockNumber": "0x161bd0f", + "transactionHash": "0xd208e85483ab2355d80676863ecac1a0c67f2455f8af2bcaa68e6cc9bbf92fe6", + "transactionIndex": "0x23", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0xc6", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000008000008000008000000000000000020000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000010000000000000000000000000000000000200000000000000000040000000000000000000000004000000000000002000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "status": "0x1", + "to": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48", + "transactionHash": "0xd208e85483ab2355d80676863ecac1a0c67f2455f8af2bcaa68e6cc9bbf92fe6", + "transactionIndex": "0x23", + "type": "0x2" + }, + { + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "contractAddress": null, + "cumulativeGasUsed": "0x5b655a", + "effectiveGasPrice": "0xdc3a2c62", + "from": "0x9642b23ed1e01df1092b92641051881a322f5d4e", + "gasUsed": "0xc924", + "logs": [ + { + "address": "0xcab84bc21f9092167fcfe0ea60f5ce053ab39a1e", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x0000000000000000000000009642b23ed1e01df1092b92641051881a322f5d4e", + "0x000000000000000000000000a842ba73e0bfe9adeacd527570cc3ab2617de753" + ], + "data": "0x000000000000000000000000000000000000000000000012f365a5d8850e0000", + "blockNumber": "0x161bd0f", + "transactionHash": "0x8e59ea830734462addb7c73571c2092c1d2bfcc0689987a2d08dd234827e5c5e", + "transactionIndex": "0x24", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0xc7", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000010000000000000000000800000000000000000000000000000000000000000000000000000000000020000000000000800000000000000000000000000000000000000000000000002000000000000000000000000000000000000400000208000000000000000000000000000000000800000000000000000000000000000000000000010", + "status": "0x1", + "to": "0xcab84bc21f9092167fcfe0ea60f5ce053ab39a1e", + "transactionHash": "0x8e59ea830734462addb7c73571c2092c1d2bfcc0689987a2d08dd234827e5c5e", + "transactionIndex": "0x24", + "type": "0x0" + }, + { + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "contractAddress": null, + "cumulativeGasUsed": "0x5c4c54", + "effectiveGasPrice": "0x29c520d4", + "from": "0xb1b2d032aa2f52347fbcfd08e5c3cc55216e8404", + "gasUsed": "0xe6fa", + "logs": [ + { + "address": "0xc52c326331e9ce41f04484d3b5e5648158028804", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x000000000000000000000000b1b2d032aa2f52347fbcfd08e5c3cc55216e8404", + "0x0000000000000000000000008e7dedd9b1a7fd101a08b1c95f3c602fe0d4b486" + ], + "data": "0x00000000000000000000000000000000000000000000001fd4a70fe0b9180000", + "blockNumber": "0x161bd0f", + "transactionHash": "0xeb72be22b2d9521239741a245f8c90a561199b1df62649eea12f1d504fcf0511", + "transactionIndex": "0x25", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0xc8", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000008000200000000000000000000000000000100000000000000000000000000000000002000000000000000000800000010000000000000000400000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000008000000000000000000000000000002000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "status": "0x1", + "to": "0xc52c326331e9ce41f04484d3b5e5648158028804", + "transactionHash": "0xeb72be22b2d9521239741a245f8c90a561199b1df62649eea12f1d504fcf0511", + "transactionIndex": "0x25", + "type": "0x2" + }, + { + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "contractAddress": null, + "cumulativeGasUsed": "0x5e876a", + "effectiveGasPrice": "0x251c128e", + "from": "0x87fcc6982257de5bdaa679d08e56117aa0b5a5d1", + "gasUsed": "0x23b16", + "logs": [ + { + "address": "0xcced7736d6781f2a3aa9c7a2a24fea935c9fa9f8", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x00000000000000000000000087fcc6982257de5bdaa679d08e56117aa0b5a5d1", + "0x00000000000000000000000016da6c5883387edeb9e701efecd9ef9f8b902605" + ], + "data": "0x0000000000000000000000000000000000000000000000000002dc9608740d6e", + "blockNumber": "0x161bd0f", + "transactionHash": "0x76f700f01e6e0fa014346c9e24bc544743540dd8992d4e08409f515c4112c3ad", + "transactionIndex": "0x26", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0xc9", + "removed": false + }, + { + "address": "0xcced7736d6781f2a3aa9c7a2a24fea935c9fa9f8", + "topics": [ + "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925", + "0x00000000000000000000000087fcc6982257de5bdaa679d08e56117aa0b5a5d1", + "0x0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d" + ], + "data": "0x0000000000000000000000000000000000000000000000000dd7807d23929f5c", + "blockNumber": "0x161bd0f", + "transactionHash": "0x76f700f01e6e0fa014346c9e24bc544743540dd8992d4e08409f515c4112c3ad", + "transactionIndex": "0x26", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0xca", + "removed": false + }, + { + "address": "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x00000000000000000000000016da6c5883387edeb9e701efecd9ef9f8b902605", + "0x0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d" + ], + "data": "0x00000000000000000000000000000000000000000000000007ed690ca0ae0f23", + "blockNumber": "0x161bd0f", + "transactionHash": "0x76f700f01e6e0fa014346c9e24bc544743540dd8992d4e08409f515c4112c3ad", + "transactionIndex": "0x26", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0xcb", + "removed": false + }, + { + "address": "0x16da6c5883387edeb9e701efecd9ef9f8b902605", + "topics": [ + "0x1c411e9a96e071241c2f21f7726b17ae89e3cab4c78be50e062b03a9fffbbad1" + ], + "data": "0x000000000000000000000000000000000000000000000001cc51093ba644c15e00000000000000000000000000000000000000000000000000a887c79105ea90", + "blockNumber": "0x161bd0f", + "transactionHash": "0x76f700f01e6e0fa014346c9e24bc544743540dd8992d4e08409f515c4112c3ad", + "transactionIndex": "0x26", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0xcc", + "removed": false + }, + { + "address": "0x16da6c5883387edeb9e701efecd9ef9f8b902605", + "topics": [ + "0xd78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d822", + "0x0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d", + "0x0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d" + ], + "data": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002dc9608740d6e00000000000000000000000000000000000000000000000007ed690ca0ae0f230000000000000000000000000000000000000000000000000000000000000000", + "blockNumber": "0x161bd0f", + "transactionHash": "0x76f700f01e6e0fa014346c9e24bc544743540dd8992d4e08409f515c4112c3ad", + "transactionIndex": "0x26", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0xcd", + "removed": false + }, + { + "address": "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2", + "topics": [ + "0x7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b65", + "0x0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d" + ], + "data": "0x00000000000000000000000000000000000000000000000007ed690ca0ae0f23", + "blockNumber": "0x161bd0f", + "transactionHash": "0x76f700f01e6e0fa014346c9e24bc544743540dd8992d4e08409f515c4112c3ad", + "transactionIndex": "0x26", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0xce", + "removed": false + } + ], + "logsBloom": "0x00200000000000000000000080000000000000000000000000010000000000000000000000000000000000000000000002000000080000000000000000204000200000000000000000000008000000200000000000400000000080000000000008000000000000000000000000000000000000000000040000000110000000000000040000000000004000000000000000000100000000080000004000000000020008000000000800000000000000000800000000000000000000000000000000000002000000000000000000000000000000000000001000040002000020000010200000000000000000000000000000000000000000080000000000000000", + "status": "0x1", + "to": "0x7a250d5630b4cf539739df2c5dacb4c659f2488d", + "transactionHash": "0x76f700f01e6e0fa014346c9e24bc544743540dd8992d4e08409f515c4112c3ad", + "transactionIndex": "0x26", + "type": "0x2" + }, + { + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "contractAddress": null, + "cumulativeGasUsed": "0x5ee957", + "effectiveGasPrice": "0x338a0fe7", + "from": "0xf51710015536957a01f32558402902a2d9c35d82", + "gasUsed": "0x61ed", + "logs": [ + { + "address": "0x6f4bb3d0625b2cfd4400c6834943fde26c057f7a", + "topics": [ + "0xa419615bc8fda4c87663805ee2a3597a6d71c1d476911d9892f340d965bc7bf1" + ], + "data": "0x000000000000000000000000f51710015536957a01f32558402902a2d9c35d820000000000000000000000000000000000000000000000000635fb4242c74000", + "blockNumber": "0x161bd0f", + "transactionHash": "0xf01b080912591defbcce2bb82770072f83b3a91a83ccf4bd7d54893f8cb9cbae", + "transactionIndex": "0x27", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0xcf", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000", + "status": "0x1", + "to": "0x6f4bb3d0625b2cfd4400c6834943fde26c057f7a", + "transactionHash": "0xf01b080912591defbcce2bb82770072f83b3a91a83ccf4bd7d54893f8cb9cbae", + "transactionIndex": "0x27", + "type": "0x2" + }, + { + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "contractAddress": null, + "cumulativeGasUsed": "0x5f3b5f", + "effectiveGasPrice": "0x29c520d4", + "from": "0x9696f59e4d72e237be84ffd425dcad154bf96976", + "gasUsed": "0x5208", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "status": "0x1", + "to": "0x19d315d10037a99d54d099a13e5e3a99a826ecae", + "transactionHash": "0xfd26a9f8e2db5d764cf715384c0bfac63f02b7562b0e6f955709d4da06ef261c", + "transactionIndex": "0x28", + "type": "0x2" + }, + { + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "contractAddress": null, + "cumulativeGasUsed": "0x5f8d67", + "effectiveGasPrice": "0x29c520d4", + "from": "0x4976a4a02f38326660d17bf34b431dc6e2eb2327", + "gasUsed": "0x5208", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "status": "0x1", + "to": "0x7a9c7afb0673dfb0cacb2bfde0a55c873c59fe1c", + "transactionHash": "0xea9ffed304d53fbaabf6114693e8bb852ce67b3246f6db6bf20e2bb63c606cb6", + "transactionIndex": "0x29", + "type": "0x2" + }, + { + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "contractAddress": null, + "cumulativeGasUsed": "0x5fdf6f", + "effectiveGasPrice": "0x27e37c7e", + "from": "0x6dce2424e724a02d231cbcf64edeee8d15bd9e4b", + "gasUsed": "0x5208", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "status": "0x1", + "to": "0xb386dff391830280763869d8f416206d16289e31", + "transactionHash": "0x6bbd906f6a605b46a4863de27fbd8497f1e320ddb54b8daf1c932fb25ecce27b", + "transactionIndex": "0x2a", + "type": "0x2" + }, + { + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "contractAddress": null, + "cumulativeGasUsed": "0x60938c", + "effectiveGasPrice": "0x3b9aca00", + "from": "0x2d0d297c319be90844fab9b4ee070b8a81243163", + "gasUsed": "0xb41d", + "logs": [ + { + "address": "0xdac17f958d2ee523a2206206994597c13d831ec7", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x0000000000000000000000002d0d297c319be90844fab9b4ee070b8a81243163", + "0x000000000000000000000000cff7b816bdcc412d3a8ee0461ba7a30a9b6a5cac" + ], + "data": "0x00000000000000000000000000000000000000000000000000000000da054a19", + "blockNumber": "0x161bd0f", + "transactionHash": "0x3f164f5ef4d0c9cea6fd7defbda6abdfb3f6dd12957fe85f721d1443e8ac1998", + "transactionIndex": "0x2b", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0xd0", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000010000000000000000000000000001000040000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000008000000000000000000800000000000100000000000000000000000000080000000000000000000000000000000000000000000000002010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "status": "0x1", + "to": "0xdac17f958d2ee523a2206206994597c13d831ec7", + "transactionHash": "0x3f164f5ef4d0c9cea6fd7defbda6abdfb3f6dd12957fe85f721d1443e8ac1998", + "transactionIndex": "0x2b", + "type": "0x0" + }, + { + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "contractAddress": null, + "cumulativeGasUsed": "0x60e594", + "effectiveGasPrice": "0x261331f8", + "from": "0xb5357b69181efcf8f6f45198b601e21e270a20ff", + "gasUsed": "0x5208", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "status": "0x1", + "to": "0x7bf38c17a6519dd17842bc37044cc30b92b81dc5", + "transactionHash": "0xe79c391b1b8ee215a67c818d1b3318872b9c8282d8ea3956349a831fa7fffbcd", + "transactionIndex": "0x2c", + "type": "0x2" + }, + { + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "contractAddress": null, + "cumulativeGasUsed": "0x61379c", + "effectiveGasPrice": "0x23d0d9fc", + "from": "0x2cff890f0378a11913b6129b2e97417a2c302680", + "gasUsed": "0x5208", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "status": "0x1", + "to": "0xa455eb2c7a4f4b90106cad96cc9c36e62cd46806", + "transactionHash": "0x124c9963d0414550d86a8c6d796b054f04ab221dfd4df6fc37135a5d2a33ed09", + "transactionIndex": "0x2d", + "type": "0x2" + }, + { + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "contractAddress": null, + "cumulativeGasUsed": "0x6189a4", + "effectiveGasPrice": "0x23d0d9fc", + "from": "0x0da475ffc29623e805bbcf7216ea8a438209882c", + "gasUsed": "0x5208", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "status": "0x1", + "to": "0x4762631fdff1a1fed3eedf95a685d57007cf9b43", + "transactionHash": "0x4d99f405c49268e1d4a3845a46e54178c6b1becd3e2dacc512d18007f1be3076", + "transactionIndex": "0x2e", + "type": "0x2" + }, + { + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "contractAddress": null, + "cumulativeGasUsed": "0x635d27", + "effectiveGasPrice": "0xa3c4056e0", + "from": "0x6f0a91ef8adeb54db0e63be507747ab9a31d3926", + "gasUsed": "0x1d383", + "logs": [ + { + "address": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x000000000000000000000000e0554a476a092703abdb3ef35c80e0d76d32939f", + "0x00000000000000000000000051c72848c68a965f66fa7a88855f9f7784502a7f" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000739d1d714", + "blockNumber": "0x161bd0f", + "transactionHash": "0x70383933da0c9016ae0e7d79cd334df0c31172ad4c55640e4010269ef28923e5", + "transactionIndex": "0x2f", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0xd1", + "removed": false + }, + { + "address": "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x00000000000000000000000051c72848c68a965f66fa7a88855f9f7784502a7f", + "0x000000000000000000000000e0554a476a092703abdb3ef35c80e0d76d32939f" + ], + "data": "0x000000000000000000000000000000000000000000000000672ed4843c7fdc00", + "blockNumber": "0x161bd0f", + "transactionHash": "0x70383933da0c9016ae0e7d79cd334df0c31172ad4c55640e4010269ef28923e5", + "transactionIndex": "0x2f", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0xd2", + "removed": false + }, + { + "address": "0xe0554a476a092703abdb3ef35c80e0d76d32939f", + "topics": [ + "0xc42079f94a6350d7e6235f29174924f928cc2ac818eb64fed8004e115fbcca67", + "0x00000000000000000000000051c72848c68a965f66fa7a88855f9f7784502a7f", + "0x00000000000000000000000051c72848c68a965f66fa7a88855f9f7784502a7f" + ], + "data": "0xfffffffffffffffffffffffffffffffffffffffffffffffffffffff8c62e28ec000000000000000000000000000000000000000000000000672ed4843c7fdc000000000000000000000000000000000000003c7b65443ee3c32ab7469f75cd270000000000000000000000000000000000000000000000000893bb9df6efdc72000000000000000000000000000000000000000000000000000000000002f1c0", + "blockNumber": "0x161bd0f", + "transactionHash": "0x70383933da0c9016ae0e7d79cd334df0c31172ad4c55640e4010269ef28923e5", + "transactionIndex": "0x2f", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0xd3", + "removed": false + } + ], + "logsBloom": "0x00000000000000002000000000000000010000000400000000000000000000000000000000000000000000000000000002000000080020000000040000000000000000000000000808000008000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000010000800000000000000000000000000000000000000000000010000000020000000000000000000000000200000000000000000000000000400000000000000000000000000000002000000000000000000000000000000000400000000000000000000000000200000000000000000000000000001000000000000000000000000000000", + "status": "0x1", + "to": "0x51c72848c68a965f66fa7a88855f9f7784502a7f", + "transactionHash": "0x70383933da0c9016ae0e7d79cd334df0c31172ad4c55640e4010269ef28923e5", + "transactionIndex": "0x2f", + "type": "0x2" + }, + { + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "contractAddress": null, + "cumulativeGasUsed": "0x67f3da", + "effectiveGasPrice": "0xe53094a6", + "from": "0xdada79040afa6ac7d7660e7e18f8a9b82c31f49a", + "gasUsed": "0x496b3", + "logs": [ + { + "address": "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x00000000000000000000000051c72848c68a965f66fa7a88855f9f7784502a7f", + "0x000000000000000000000000ec6fc9be2d5e505b40a2df8b0622cd25333823db" + ], + "data": "0x00000000000000000000000000000000000000000000000013464f00da493600", + "blockNumber": "0x161bd0f", + "transactionHash": "0xcc22c7f26e825e0c86c4377e428f16feb525bf5b81d845c52e1bb0921384ecc1", + "transactionIndex": "0x30", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0xd4", + "removed": false + }, + { + "address": "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x000000000000000000000000ec6fc9be2d5e505b40a2df8b0622cd25333823db", + "0x000000000000000000000000d51a44d3fae010294c616388b506acda1bfaae46" + ], + "data": "0x00000000000000000000000000000000000000000000000013464f00da493600", + "blockNumber": "0x161bd0f", + "transactionHash": "0xcc22c7f26e825e0c86c4377e428f16feb525bf5b81d845c52e1bb0921384ecc1", + "transactionIndex": "0x30", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0xd5", + "removed": false + }, + { + "address": "0xdac17f958d2ee523a2206206994597c13d831ec7", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x000000000000000000000000d51a44d3fae010294c616388b506acda1bfaae46", + "0x000000000000000000000000ec6fc9be2d5e505b40a2df8b0622cd25333823db" + ], + "data": "0x00000000000000000000000000000000000000000000000000000001598b4135", + "blockNumber": "0x161bd0f", + "transactionHash": "0xcc22c7f26e825e0c86c4377e428f16feb525bf5b81d845c52e1bb0921384ecc1", + "transactionIndex": "0x30", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0xd6", + "removed": false + }, + { + "address": "0xd51a44d3fae010294c616388b506acda1bfaae46", + "topics": [ + "0xb2e76ae99761dc136e598d4a629bb347eccb9532a5f8bbd72e18467c3c34cc98", + "0x000000000000000000000000ec6fc9be2d5e505b40a2df8b0622cd25333823db" + ], + "data": "0x000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000013464f00da493600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001598b4135", + "blockNumber": "0x161bd0f", + "transactionHash": "0xcc22c7f26e825e0c86c4377e428f16feb525bf5b81d845c52e1bb0921384ecc1", + "transactionIndex": "0x30", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0xd7", + "removed": false + }, + { + "address": "0xdac17f958d2ee523a2206206994597c13d831ec7", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x000000000000000000000000ec6fc9be2d5e505b40a2df8b0622cd25333823db", + "0x00000000000000000000000051c72848c68a965f66fa7a88855f9f7784502a7f" + ], + "data": "0x00000000000000000000000000000000000000000000000000000001598b4135", + "blockNumber": "0x161bd0f", + "transactionHash": "0xcc22c7f26e825e0c86c4377e428f16feb525bf5b81d845c52e1bb0921384ecc1", + "transactionIndex": "0x30", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0xd8", + "removed": false + } + ], + "logsBloom": "0x00000000000000800000000000000000000000000000000020000000000000000000000000000000000000000000010002000000080000000040040000000000000000000000000000000008000000000000000000040000000000000000000000000000000000000000000000000000000000000040000000000010000000000000000000000000000000000000000000000000000000000000000002100000000080000000000000000080000000000080000000000000000000000000000000000002000000000040000000000000000000000400001000000000000000000000200001000000000000000020000000000000000000000000000000000000", + "status": "0x1", + "to": "0xec6fc9be2d5e505b40a2df8b0622cd25333823db", + "transactionHash": "0xcc22c7f26e825e0c86c4377e428f16feb525bf5b81d845c52e1bb0921384ecc1", + "transactionIndex": "0x30", + "type": "0x2" + }, + { + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "contractAddress": null, + "cumulativeGasUsed": "0x6ac18b", + "effectiveGasPrice": "0x153bf91bc", + "from": "0xebedc8e9ff409b23dd251f87ccbffa8075f87255", + "gasUsed": "0x2cdb1", + "logs": [ + { + "address": "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x00000000000000000000000051c72848c68a965f66fa7a88855f9f7784502a7f", + "0x0000000000000000000000007f86bf177dd4f3494b841a37e810a34dd56c829b" + ], + "data": "0x00000000000000000000000000000000000000000000000016c1d8e56b090000", + "blockNumber": "0x161bd0f", + "transactionHash": "0x53a25cc5a3c26afe402f6856abc3518ab64554f07608d4917160d0de63ffb05b", + "transactionIndex": "0x31", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0xd9", + "removed": false + }, + { + "address": "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2", + "topics": [ + "0x7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b65", + "0x0000000000000000000000007f86bf177dd4f3494b841a37e810a34dd56c829b" + ], + "data": "0x00000000000000000000000000000000000000000000000016c1d8e56b090000", + "blockNumber": "0x161bd0f", + "transactionHash": "0x53a25cc5a3c26afe402f6856abc3518ab64554f07608d4917160d0de63ffb05b", + "transactionIndex": "0x31", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0xda", + "removed": false + }, + { + "address": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x0000000000000000000000007f86bf177dd4f3494b841a37e810a34dd56c829b", + "0x00000000000000000000000051c72848c68a965f66fa7a88855f9f7784502a7f" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000197f3bff3", + "blockNumber": "0x161bd0f", + "transactionHash": "0x53a25cc5a3c26afe402f6856abc3518ab64554f07608d4917160d0de63ffb05b", + "transactionIndex": "0x31", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0xdb", + "removed": false + }, + { + "address": "0x7f86bf177dd4f3494b841a37e810a34dd56c829b", + "topics": [ + "0x143f1f8e861fbdeddd5b46e844b7d3ac7b86a122f36e8c463859ee6811b1f29c", + "0x00000000000000000000000051c72848c68a965f66fa7a88855f9f7784502a7f" + ], + "data": "0x000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000016c1d8e56b09000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000197f3bff3000000000000000000000000000000000000000000000000000000000031dbf900000000000000e1a52b2444049dac570000000000001802d2bd63425c10da74", + "blockNumber": "0x161bd0f", + "transactionHash": "0x53a25cc5a3c26afe402f6856abc3518ab64554f07608d4917160d0de63ffb05b", + "transactionIndex": "0x31", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0xdc", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000002000100080000000000040000000000000000000000000008000008000000000000002000440000001000000000000000000000000000000000000000000000000000000000040000000010000000000000000000000000000040000000000000010004010000000000000000000000000000000000201000000000000000000000000000000000000000000000000000000002000000000000020000000000000000000400000000000002000000000000200000000000000000000000000000000000000000000000000000000000", + "status": "0x1", + "to": "0x51c72848c68a965f66fa7a88855f9f7784502a7f", + "transactionHash": "0x53a25cc5a3c26afe402f6856abc3518ab64554f07608d4917160d0de63ffb05b", + "transactionIndex": "0x31", + "type": "0x2" + }, + { + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "contractAddress": null, + "cumulativeGasUsed": "0x6d2246", + "effectiveGasPrice": "0x3a5d5e6a8d", + "from": "0xac8b6e55c809e4dd83dc9943cf460c1caca84125", + "gasUsed": "0x260bb", + "logs": [ + { + "address": "0x000000000004444c5dc75cb358380d2e3de08a90", + "topics": [ + "0x40e9cecb9f5f1f1c5b9c97dec2917b7ee92e57ba5563708daca94dd84ad7112f", + "0x21c67e77068de97969ba93d4aab21826d33ca12bb9f565d8496e8fda8a82ca27", + "0x000000000000000000000000ba47cbfdd61029833841fcaa2ec2591ddfa87e51" + ], + "data": "0xfffffffffffffffffffffffffffffffffffffffffffffffd0a718657b2178000000000000000000000000000000000000000000000000000000000350c60dcb5000000000000000000000000000000000000000000043bb7248357b1b91f72f70000000000000000000000000000000000000000000000003a6da3f97343c983fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd0e4200000000000000000000000000000000000000000000000000000000000001f4", + "blockNumber": "0x161bd0f", + "transactionHash": "0x1df496bb45ca13107e0e19ee8e50438b66726b3e2da50c2d46c44c5d6d05a2e3", + "transactionIndex": "0x32", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0xdd", + "removed": false + }, + { + "address": "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x00000000000000000000000051c72848c68a965f66fa7a88855f9f7784502a7f", + "0x000000000000000000000000ba47cbfdd61029833841fcaa2ec2591ddfa87e51" + ], + "data": "0x000000000000000000000000000000000000000000000002f58e79a84de88000", + "blockNumber": "0x161bd0f", + "transactionHash": "0x1df496bb45ca13107e0e19ee8e50438b66726b3e2da50c2d46c44c5d6d05a2e3", + "transactionIndex": "0x32", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0xde", + "removed": false + }, + { + "address": "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2", + "topics": [ + "0x7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b65", + "0x000000000000000000000000ba47cbfdd61029833841fcaa2ec2591ddfa87e51" + ], + "data": "0x000000000000000000000000000000000000000000000002f58e79a84de88000", + "blockNumber": "0x161bd0f", + "transactionHash": "0x1df496bb45ca13107e0e19ee8e50438b66726b3e2da50c2d46c44c5d6d05a2e3", + "transactionIndex": "0x32", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0xdf", + "removed": false + }, + { + "address": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x000000000000000000000000000000000004444c5dc75cb358380d2e3de08a90", + "0x00000000000000000000000051c72848c68a965f66fa7a88855f9f7784502a7f" + ], + "data": "0x000000000000000000000000000000000000000000000000000000350c60dcb5", + "blockNumber": "0x161bd0f", + "transactionHash": "0x1df496bb45ca13107e0e19ee8e50438b66726b3e2da50c2d46c44c5d6d05a2e3", + "transactionIndex": "0x32", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0xe0", + "removed": false + } + ], + "logsBloom": "0x000000000000020000000000000000000000000000000000000000080000000000000000200000000010000000000000020000000c0000000000040000000000000000000000000008000008000000000000000000440020000000000000000000000000000000000000000000000000000000000000040000000010000000000000000800000000000002000000000000000000010000000000000000000000080008000000200000000000100000000000000000000000000000000000000000000802000000000000000000000000000000400400000000000002000000000000200000000000004000000000000000000000000000000000000000004000", + "status": "0x1", + "to": "0xba47cbfdd61029833841fcaa2ec2591ddfa87e51", + "transactionHash": "0x1df496bb45ca13107e0e19ee8e50438b66726b3e2da50c2d46c44c5d6d05a2e3", + "transactionIndex": "0x32", + "type": "0x2" + }, + { + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "contractAddress": null, + "cumulativeGasUsed": "0x6ef9d5", + "effectiveGasPrice": "0x182f2c39bc", + "from": "0xeaa9ebddd373c4bd8bb92dfcc9c7e7fcdb268e51", + "gasUsed": "0x1d78f", + "logs": [ + { + "address": "0xdac17f958d2ee523a2206206994597c13d831ec7", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x00000000000000000000000011b815efb8f581194ae79006d24e0d814b7697f6", + "0x00000000000000000000000051c72848c68a965f66fa7a88855f9f7784502a7f" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000f9ce27d34", + "blockNumber": "0x161bd0f", + "transactionHash": "0x7e0a9525cc71210dae4368d25b22c432b8b7ae38936fa0052bacf5036fe5f306", + "transactionIndex": "0x33", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0xe1", + "removed": false + }, + { + "address": "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x00000000000000000000000051c72848c68a965f66fa7a88855f9f7784502a7f", + "0x00000000000000000000000011b815efb8f581194ae79006d24e0d814b7697f6" + ], + "data": "0x000000000000000000000000000000000000000000000000defc43c79ba7e000", + "blockNumber": "0x161bd0f", + "transactionHash": "0x7e0a9525cc71210dae4368d25b22c432b8b7ae38936fa0052bacf5036fe5f306", + "transactionIndex": "0x33", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0xe2", + "removed": false + }, + { + "address": "0x11b815efb8f581194ae79006d24e0d814b7697f6", + "topics": [ + "0xc42079f94a6350d7e6235f29174924f928cc2ac818eb64fed8004e115fbcca67", + "0x00000000000000000000000051c72848c68a965f66fa7a88855f9f7784502a7f", + "0x00000000000000000000000051c72848c68a965f66fa7a88855f9f7784502a7f" + ], + "data": "0x000000000000000000000000000000000000000000000000defc43c79ba7e000fffffffffffffffffffffffffffffffffffffffffffffffffffffff0631d82cc000000000000000000000000000000000000000000043ba34777dac0e090457c00000000000000000000000000000000000000000000000010b912988f66a1bafffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd0e41", + "blockNumber": "0x161bd0f", + "transactionHash": "0x7e0a9525cc71210dae4368d25b22c432b8b7ae38936fa0052bacf5036fe5f306", + "transactionIndex": "0x33", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0xe3", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010002000000080020000000040000000000000000000000000800000008000000000000000000040000000010000000000000000000000000000000000000000000000000000000000000000090000800000000000000000000000000000000000000000000000000000400000000100000000000000000000000000080000000000000000000000000000004000000000000000002000000000000000000000000000000000400000000000000000000000000200000000000000000000000000000000000000000000008001000000000", + "status": "0x1", + "to": "0x51c72848c68a965f66fa7a88855f9f7784502a7f", + "transactionHash": "0x7e0a9525cc71210dae4368d25b22c432b8b7ae38936fa0052bacf5036fe5f306", + "transactionIndex": "0x33", + "type": "0x2" + }, + { + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "contractAddress": null, + "cumulativeGasUsed": "0x71623a", + "effectiveGasPrice": "0xee6546334", + "from": "0x45923a43492d0deb458cb97c4ca8b7ccb0a20c71", + "gasUsed": "0x26865", + "logs": [ + { + "address": "0x000000000004444c5dc75cb358380d2e3de08a90", + "topics": [ + "0x40e9cecb9f5f1f1c5b9c97dec2917b7ee92e57ba5563708daca94dd84ad7112f", + "0x72331fcb696b0151904c03584b66dc8365bc63f8a144d89a773384e3a579ca73", + "0x000000000000000000000000ba47cbfdd61029833841fcaa2ec2591ddfa87e51" + ], + "data": "0xffffffffffffffffffffffffffffffffffffffffffffffff4b85e6bd418c18000000000000000000000000000000000000000000000000000000000ca2eaebe7000000000000000000000000000000000000000000043ba347af94015f704a750000000000000000000000000000000000000000000000000dac0e6095949700fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd0e4100000000000000000000000000000000000000000000000000000000000001f4", + "blockNumber": "0x161bd0f", + "transactionHash": "0x07b3229c57fab47e183ee215ba5fa2a3364c56d64316f75ae86747d2fc316002", + "transactionIndex": "0x34", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0xe4", + "removed": false + }, + { + "address": "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x00000000000000000000000051c72848c68a965f66fa7a88855f9f7784502a7f", + "0x000000000000000000000000ba47cbfdd61029833841fcaa2ec2591ddfa87e51" + ], + "data": "0x000000000000000000000000000000000000000000000000b47a1942be73e800", + "blockNumber": "0x161bd0f", + "transactionHash": "0x07b3229c57fab47e183ee215ba5fa2a3364c56d64316f75ae86747d2fc316002", + "transactionIndex": "0x34", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0xe5", + "removed": false + }, + { + "address": "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2", + "topics": [ + "0x7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b65", + "0x000000000000000000000000ba47cbfdd61029833841fcaa2ec2591ddfa87e51" + ], + "data": "0x000000000000000000000000000000000000000000000000b47a1942be73e800", + "blockNumber": "0x161bd0f", + "transactionHash": "0x07b3229c57fab47e183ee215ba5fa2a3364c56d64316f75ae86747d2fc316002", + "transactionIndex": "0x34", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0xe6", + "removed": false + }, + { + "address": "0xdac17f958d2ee523a2206206994597c13d831ec7", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x000000000000000000000000000000000004444c5dc75cb358380d2e3de08a90", + "0x00000000000000000000000051c72848c68a965f66fa7a88855f9f7784502a7f" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000ca2eaebe7", + "blockNumber": "0x161bd0f", + "transactionHash": "0x07b3229c57fab47e183ee215ba5fa2a3364c56d64316f75ae86747d2fc316002", + "transactionIndex": "0x34", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0xe7", + "removed": false + } + ], + "logsBloom": "0x000000000000020000000000000000000000000000000000000000000000000000000000200000000010000000000100020000000c0000000000040000000000000000000000000000000008000000000020000000440020000000000000000000000000000000000000000000000000000000000000040000000010000000000000000800000000000002000000000000000000000000000000080000100000000008000000000000000080100000000000000000000000000000000000000000000802100000000000000000000000000000400400000000000002000000000000200000000000004000000000000000000000000000000000000000000000", + "status": "0x1", + "to": "0xba47cbfdd61029833841fcaa2ec2591ddfa87e51", + "transactionHash": "0x07b3229c57fab47e183ee215ba5fa2a3364c56d64316f75ae86747d2fc316002", + "transactionIndex": "0x34", + "type": "0x2" + }, + { + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "contractAddress": null, + "cumulativeGasUsed": "0x736cc5", + "effectiveGasPrice": "0x23cf3fd5", + "from": "0x639b2d751e6436667b97fe350c0fed111fc33fb4", + "gasUsed": "0x20a8b", + "logs": [ + { + "address": "0x000000000004444c5dc75cb358380d2e3de08a90", + "topics": [ + "0x40e9cecb9f5f1f1c5b9c97dec2917b7ee92e57ba5563708daca94dd84ad7112f", + "0x00b9edc1583bf6ef09ff3a09f6c23ecb57fd7d0bb75625717ec81eed181e22d7", + "0x000000000000000000000000eff6cb8b614999d130e537751ee99724d01aa167" + ], + "data": "0xffffffffffffffffffffffffffffffffffffffffffffffffb2dc9c126573b1060000000000000000000000000000000000000000000000000000000566e5c345000000000000000000000000000000000000000000043b8825a96b1a400000000000000000000000000000000000000000000000000000000601e4d79975daecfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd0e3f0000000000000000000000000000000000000000000000000000000000000064", + "blockNumber": "0x161bd0f", + "transactionHash": "0x402d2311d7b2cea94653c9e5e708cec48f8e7886a1ae2dc1f37460525c5853a4", + "transactionIndex": "0x35", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0xe8", + "removed": false + }, + { + "address": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x000000000000000000000000000000000004444c5dc75cb358380d2e3de08a90", + "0x000000000000000000000000eff6cb8b614999d130e537751ee99724d01aa167" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000566e5c345", + "blockNumber": "0x161bd0f", + "transactionHash": "0x402d2311d7b2cea94653c9e5e708cec48f8e7886a1ae2dc1f37460525c5853a4", + "transactionIndex": "0x35", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0xe9", + "removed": false + }, + { + "address": "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2", + "topics": [ + "0x7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b65", + "0x000000000000000000000000eff6cb8b614999d130e537751ee99724d01aa167" + ], + "data": "0x0000000000000000000000000000000000000000000000004d2363ed9a8c4efa", + "blockNumber": "0x161bd0f", + "transactionHash": "0x402d2311d7b2cea94653c9e5e708cec48f8e7886a1ae2dc1f37460525c5853a4", + "transactionIndex": "0x35", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0xea", + "removed": false + } + ], + "logsBloom": "0x000000000000000000000000000000000000000000000000000000000000000000000000200000000010000000000000020000000c0000000000000000000000000000000000000008000008000000000000000000520020000000000000000000000000000000000000000000000000000000000000040000000010000000000000000800000000400000000000000000000000010000000000000000000000000000000000200000000000100000000000000000000000000000000000000000000802400000000000001000000000000000400000000000000002000000000000200000000000004000000100000000000000000000000000000000000000", + "status": "0x1", + "to": "0xeff6cb8b614999d130e537751ee99724d01aa167", + "transactionHash": "0x402d2311d7b2cea94653c9e5e708cec48f8e7886a1ae2dc1f37460525c5853a4", + "transactionIndex": "0x35", + "type": "0x2" + }, + { + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "contractAddress": null, + "cumulativeGasUsed": "0x75a487", + "effectiveGasPrice": "0x23cf3fd5", + "from": "0x5c132e26694e1f3bad52a4f55c9cfd0f181d7463", + "gasUsed": "0x237c2", + "logs": [ + { + "address": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x0000000000000000000000007df7c84f2f9dcef3c0813e539878b76b89a916f8", + "0x000000000000000000000000eff6cb8b614999d130e537751ee99724d01aa167" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000013ee400b", + "blockNumber": "0x161bd0f", + "transactionHash": "0xc04f925427a29481b736474a2746ece9b5fad1cf598758bca8b830f2b1e0b48d", + "transactionIndex": "0x36", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0xeb", + "removed": false + }, + { + "address": "0x2dff88a56767223a5529ea5960da7a3f5f766406", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x000000000000000000000000eff6cb8b614999d130e537751ee99724d01aa167", + "0x0000000000000000000000007df7c84f2f9dcef3c0813e539878b76b89a916f8" + ], + "data": "0x000000000000000000000000000000000000000000000074e8b8f27fc31243d9", + "blockNumber": "0x161bd0f", + "transactionHash": "0xc04f925427a29481b736474a2746ece9b5fad1cf598758bca8b830f2b1e0b48d", + "transactionIndex": "0x36", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0xec", + "removed": false + }, + { + "address": "0x7df7c84f2f9dcef3c0813e539878b76b89a916f8", + "topics": [ + "0x19b47279256b2a23a1665c810c8d55a1758940ee09377d4f8d26497a3577dc83", + "0x000000000000000000000000eff6cb8b614999d130e537751ee99724d01aa167", + "0x000000000000000000000000eff6cb8b614999d130e537751ee99724d01aa167" + ], + "data": "0x000000000000000000000000000000000000000000000074e8b8f27fc31243d9ffffffffffffffffffffffffffffffffffffffffffffffffffffffffec11bff500000000000000000000000000000000000000000000069c1adf3fbff1400000000000000000000000000000000000000000000000000000082a8a4ae870e18dfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb7fd500000000000000000000000000000000000000000000000017f16700ebe17fd90000000000000000000000000000000000000000000000000000000000000000", + "blockNumber": "0x161bd0f", + "transactionHash": "0xc04f925427a29481b736474a2746ece9b5fad1cf598758bca8b830f2b1e0b48d", + "transactionIndex": "0x36", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0xed", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000002000002000000000000000000008800400000000000040000000040000008000008000000000000000000120000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000010000000000000000000000000000000040200000000002000000000000000000000000000000000000000000000002000000020000000000000000000000000000000000000000000000000008000000000000000000000100000000100000000000000000000000000000", + "status": "0x1", + "to": "0xeff6cb8b614999d130e537751ee99724d01aa167", + "transactionHash": "0xc04f925427a29481b736474a2746ece9b5fad1cf598758bca8b830f2b1e0b48d", + "transactionIndex": "0x36", + "type": "0x2" + }, + { + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "contractAddress": null, + "cumulativeGasUsed": "0x77af0a", + "effectiveGasPrice": "0x23cf3fd5", + "from": "0x69021e92840bd777cf2c495f3be516700e430a5b", + "gasUsed": "0x20a83", + "logs": [ + { + "address": "0x000000000004444c5dc75cb358380d2e3de08a90", + "topics": [ + "0x40e9cecb9f5f1f1c5b9c97dec2917b7ee92e57ba5563708daca94dd84ad7112f", + "0x1e58170b9bd63a7394ddb486ed8e94d2255568a7913fb02a24f30e079f4e0e9a", + "0x000000000000000000000000eff6cb8b614999d130e537751ee99724d01aa167" + ], + "data": "0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2a5900000000000000000000000000000000000000000000000000000000156908bb0000000000000000000000000000000000000021ac6aeaccbcfc000000000000000000000000000000000000000000000000000000000000000000024894324700000000000000000000000000000000000000000000000000000000000112c100000000000000000000000000000000000000000000000000000000000004e2", + "blockNumber": "0x161bd0f", + "transactionHash": "0x1b749e72067a68bfa58cfa9619740526b9d32cc512ece7d3f7e28f53451da460", + "transactionIndex": "0x37", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0xee", + "removed": false + }, + { + "address": "0xdac17f958d2ee523a2206206994597c13d831ec7", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x000000000000000000000000000000000004444c5dc75cb358380d2e3de08a90", + "0x000000000000000000000000eff6cb8b614999d130e537751ee99724d01aa167" + ], + "data": "0x00000000000000000000000000000000000000000000000000000000156908bb", + "blockNumber": "0x161bd0f", + "transactionHash": "0x1b749e72067a68bfa58cfa9619740526b9d32cc512ece7d3f7e28f53451da460", + "transactionIndex": "0x37", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0xef", + "removed": false + }, + { + "address": "0x2260fac5e5542a773aa44fbcfedf7c193bc2c599", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x000000000000000000000000eff6cb8b614999d130e537751ee99724d01aa167", + "0x000000000000000000000000000000000004444c5dc75cb358380d2e3de08a90" + ], + "data": "0x000000000000000000000000000000000000000000000000000000000004d5a7", + "blockNumber": "0x161bd0f", + "transactionHash": "0x1b749e72067a68bfa58cfa9619740526b9d32cc512ece7d3f7e28f53451da460", + "transactionIndex": "0x37", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0xf0", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000000000200000000000000000000020000000001000000000010000000000040000000000000000000000000000000000000000000008000001000000000000120020000000000000000000000000000000000000000000000000020000000000000000000010000000000000000800000010000000000000000000000000000000000000000000100000010000000000000000000080100000000000000000000000000000000000000000000802000000000000000000000000000000400000000000000000000000000000000000000000004000000100000000200000000000000000000000000000", + "status": "0x1", + "to": "0xeff6cb8b614999d130e537751ee99724d01aa167", + "transactionHash": "0x1b749e72067a68bfa58cfa9619740526b9d32cc512ece7d3f7e28f53451da460", + "transactionIndex": "0x37", + "type": "0x2" + }, + { + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "contractAddress": null, + "cumulativeGasUsed": "0x7a1d3c", + "effectiveGasPrice": "0x36eb8fdca", + "from": "0x545da54509ef233642343b8beac5ef4443e79d73", + "gasUsed": "0x26e32", + "logs": [ + { + "address": "0xdac17f958d2ee523a2206206994597c13d831ec7", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x0000000000000000000000006ca298d2983ab03aa1da7679389d955a4efee15c", + "0x00000000000000000000000051c72848c68a965f66fa7a88855f9f7784502a7f" + ], + "data": "0x00000000000000000000000000000000000000000000000000000002b22ae61e", + "blockNumber": "0x161bd0f", + "transactionHash": "0x4d7804919a1739d0784249538bcebd71a3e448cd1091e25ab17205686e28405c", + "transactionIndex": "0x38", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0xf1", + "removed": false + }, + { + "address": "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x00000000000000000000000051c72848c68a965f66fa7a88855f9f7784502a7f", + "0x0000000000000000000000006ca298d2983ab03aa1da7679389d955a4efee15c" + ], + "data": "0x0000000000000000000000000000000000000000000000002680cb38d1649c00", + "blockNumber": "0x161bd0f", + "transactionHash": "0x4d7804919a1739d0784249538bcebd71a3e448cd1091e25ab17205686e28405c", + "transactionIndex": "0x38", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0xf2", + "removed": false + }, + { + "address": "0x6ca298d2983ab03aa1da7679389d955a4efee15c", + "topics": [ + "0x19b47279256b2a23a1665c810c8d55a1758940ee09377d4f8d26497a3577dc83", + "0x0000000000000000000000003b55732f6d3997a7d44a041b8496e1a60712a35f", + "0x00000000000000000000000051c72848c68a965f66fa7a88855f9f7784502a7f" + ], + "data": "0x0000000000000000000000000000000000000000000000002680cb38d1649c00fffffffffffffffffffffffffffffffffffffffffffffffffffffffd4dd519e2000000000000000000000000000000000000000000043b9fdf238091c45e86f900000000000000000000000000000000000000000000000002b610f914e5d61bfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd0e410000000000000000000000000000000000000000000000000001acf7b91288990000000000000000000000000000000000000000000000000000000000000000", + "blockNumber": "0x161bd0f", + "transactionHash": "0x4d7804919a1739d0784249538bcebd71a3e448cd1091e25ab17205686e28405c", + "transactionIndex": "0x38", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0xf3", + "removed": false + } + ], + "logsBloom": "0x00000040000000000000002000000000000000000000400000000000000000000000000000000000000000000002010002000008080000000000040000000000040000000040000000000008000000000000000000040000000000000000000000000000000000000000000000000000000004000000000200000010000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000080000000000002800000000000000000000000000000000002000000000000000000000000000000000400000000000004000000000000200000000000000000000000000000000000000000000000000000000000", + "status": "0x1", + "to": "0x3b55732f6d3997a7d44a041b8496e1a60712a35f", + "transactionHash": "0x4d7804919a1739d0784249538bcebd71a3e448cd1091e25ab17205686e28405c", + "transactionIndex": "0x38", + "type": "0x2" + }, + { + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "contractAddress": null, + "cumulativeGasUsed": "0x7d266f", + "effectiveGasPrice": "0x214369152", + "from": "0x448166a91e7bc50d0ac720c2fbed29e0963f5af8", + "gasUsed": "0x30933", + "logs": [ + { + "address": "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2", + "topics": [ + "0x7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b65", + "0x000000000000000000000000fbd4cdb413e45a52e2c8312f670e9ce67e794c37" + ], + "data": "0x0000000000000000000000000000000000000000000000007bde86a2e53bb9a6", + "blockNumber": "0x161bd0f", + "transactionHash": "0x9ad517969b986fe44221f228b4e1b5949c99d08e5a96f4cc0deff9d446ca6cc1", + "transactionIndex": "0x39", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0xf4", + "removed": false + }, + { + "address": "0x52aa899454998be5b000ad077a46bbe360f4e497", + "topics": [ + "0x4d93b232a24e82b284ced7461bf4deacffe66759d5c24513e6f29e571ad78d15", + "0x000000000000000000000000836951eb21f3df98273517b7249dceff270d34bf", + "0x000000000000000000000000eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee" + ], + "data": "0x0000000000000000000000000000000000000000000000004fcfa02432be1e80ffffffffffffffffffffffffffffffffffffffffffffffffd3f119814d8be3c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c917b591b25869140000000000000000e6be8696f7624f140000000000000007d4adbffcd8000007b35e662761a29611bc01e8ac43e80127", + "blockNumber": "0x161bd0f", + "transactionHash": "0x9ad517969b986fe44221f228b4e1b5949c99d08e5a96f4cc0deff9d446ca6cc1", + "transactionIndex": "0x39", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0xf5", + "removed": false + }, + { + "address": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x00000000000000000000000052aa899454998be5b000ad077a46bbe360f4e497", + "0x000000000000000000000000fbd4cdb413e45a52e2c8312f670e9ce67e794c37" + ], + "data": "0x00000000000000000000000000000000000000000000000000000008ac01b3f7", + "blockNumber": "0x161bd0f", + "transactionHash": "0x9ad517969b986fe44221f228b4e1b5949c99d08e5a96f4cc0deff9d446ca6cc1", + "transactionIndex": "0x39", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0xf6", + "removed": false + }, + { + "address": "0x52aa899454998be5b000ad077a46bbe360f4e497", + "topics": [ + "0x4d93b232a24e82b284ced7461bf4deacffe66759d5c24513e6f29e571ad78d15", + "0x000000000000000000000000836951eb21f3df98273517b7249dceff270d34bf", + "0x000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48" + ], + "data": "0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffa699cc60d00000000000000000000000000000000000000000000000000000003159e7a04000000000000000000000000fbd4cdb413e45a52e2c8312f670e9ce67e794c37000000000000000000000000fbd4cdb413e45a52e2c8312f670e9ce67e794c37000000000000000000dd001001890700000000000000000001111c3fd1050d0000000000000000085fc905d39000000815a8992621a297309c01e82f03e80299", + "blockNumber": "0x161bd0f", + "transactionHash": "0x9ad517969b986fe44221f228b4e1b5949c99d08e5a96f4cc0deff9d446ca6cc1", + "transactionIndex": "0x39", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0xf7", + "removed": false + }, + { + "address": "0x836951eb21f3df98273517b7249dceff270d34bf", + "topics": [ + "0xdc004dbca4ef9c966218431ee5d9133d337ad018dd5b5c5493722803f75c64f7" + ], + "data": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007bde86a2e53bb9a600000000000000000000000000000000000000000000000000000008ac01b3f7000000000000000000000000fbd4cdb413e45a52e2c8312f670e9ce67e794c37", + "blockNumber": "0x161bd0f", + "transactionHash": "0x9ad517969b986fe44221f228b4e1b5949c99d08e5a96f4cc0deff9d446ca6cc1", + "transactionIndex": "0x39", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0xf8", + "removed": false + } + ], + "logsBloom": "0x00000000000008000000000000000000000000000000000000800000000000000004000000000000000002400000000002000000080000000010000000000000000000000000000008000008000000000000000000500000000000000000000000040000000002000002020000000008000000000400040000000010000000000000000000000000000000000000000200000000010010000000000000040000000000000000200000000000000000000000000000000000000800200000000000000002000000000000000000100800000000004000000008000002000002000000240000000000000000000000000004400000000000000000000200000000", + "status": "0x1", + "to": "0xfbd4cdb413e45a52e2c8312f670e9ce67e794c37", + "transactionHash": "0x9ad517969b986fe44221f228b4e1b5949c99d08e5a96f4cc0deff9d446ca6cc1", + "transactionIndex": "0x39", + "type": "0x2" + }, + { + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "contractAddress": null, + "cumulativeGasUsed": "0x809ce1", + "effectiveGasPrice": "0x1ebd76860", + "from": "0x7f982f64ee9dfd024acb8c2abb5884fef0b9d440", + "gasUsed": "0x37672", + "logs": [ + { + "address": "0x9008d19f58aabd9ed0d60971565aa8510560ab41", + "topics": [ + "0xa07a543ab8a018198e99ca0184c93fe9050a79400a0a723441f84de1d972cc17", + "0x0000000000000000000000005236333ef2baa45b450689b69e4e4b277d84f954" + ], + "data": "0x000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec70000000000000000000000007fc66500c84a76ad7e9c93437bfc5ac33e2ddae900000000000000000000000000000000000000000000000000000003548cbd98000000000000000000000000000000000000000000000002b5e3af16b1880000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000388afd5e921fa3ba3fa6b9bd5d1e0ef74af410ac2b1755d3d886b693e6f421fd755236333ef2baa45b450689b69e4e4b277d84f95468a5d5340000000000000000", + "blockNumber": "0x161bd0f", + "transactionHash": "0x6ed161a1dd005c48b937d8f5049e8b0136693552e6eae52f3ee14f345683eeed", + "transactionIndex": "0x3a", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0xf9", + "removed": false + }, + { + "address": "0xdac17f958d2ee523a2206206994597c13d831ec7", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x0000000000000000000000005236333ef2baa45b450689b69e4e4b277d84f954", + "0x0000000000000000000000009008d19f58aabd9ed0d60971565aa8510560ab41" + ], + "data": "0x00000000000000000000000000000000000000000000000000000003548cbd98", + "blockNumber": "0x161bd0f", + "transactionHash": "0x6ed161a1dd005c48b937d8f5049e8b0136693552e6eae52f3ee14f345683eeed", + "transactionIndex": "0x3a", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0xfa", + "removed": false + }, + { + "address": "0xdac17f958d2ee523a2206206994597c13d831ec7", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x0000000000000000000000009008d19f58aabd9ed0d60971565aa8510560ab41", + "0x00000000000000000000000051c72848c68a965f66fa7a88855f9f7784502a7f" + ], + "data": "0x000000000000000000000000000000000000000000000000000000035413c376", + "blockNumber": "0x161bd0f", + "transactionHash": "0x6ed161a1dd005c48b937d8f5049e8b0136693552e6eae52f3ee14f345683eeed", + "transactionIndex": "0x3a", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0xfb", + "removed": false + }, + { + "address": "0x7fc66500c84a76ad7e9c93437bfc5ac33e2ddae9", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x00000000000000000000000051c72848c68a965f66fa7a88855f9f7784502a7f", + "0x0000000000000000000000009008d19f58aabd9ed0d60971565aa8510560ab41" + ], + "data": "0x000000000000000000000000000000000000000000000002b5e3af16b1880000", + "blockNumber": "0x161bd0f", + "transactionHash": "0x6ed161a1dd005c48b937d8f5049e8b0136693552e6eae52f3ee14f345683eeed", + "transactionIndex": "0x3a", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0xfc", + "removed": false + }, + { + "address": "0xbbbbbbb520d69a9775e85b458c58c648259fad5f", + "topics": [ + "0xadd7095becdaa725f0f33243630938c861b0bba83dfd217d4055701aa768ec2e", + "0x0000000000000000000000000000000000000000000000000000000000000000" + ], + "data": "0x", + "blockNumber": "0x161bd0f", + "transactionHash": "0x6ed161a1dd005c48b937d8f5049e8b0136693552e6eae52f3ee14f345683eeed", + "transactionIndex": "0x3a", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0xfd", + "removed": false + }, + { + "address": "0x9008d19f58aabd9ed0d60971565aa8510560ab41", + "topics": [ + "0xed99827efb37016f2275f98c4bcf71c7551c75d59e9b450f79fa32e60be672c2", + "0x000000000000000000000000bbbbbbb520d69a9775e85b458c58c648259fad5f" + ], + "data": "0x00000000000000000000000000000000000000000000000000000000000000004dcebcba00000000000000000000000000000000000000000000000000000000", + "blockNumber": "0x161bd0f", + "transactionHash": "0x6ed161a1dd005c48b937d8f5049e8b0136693552e6eae52f3ee14f345683eeed", + "transactionIndex": "0x3a", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0xfe", + "removed": false + }, + { + "address": "0x7fc66500c84a76ad7e9c93437bfc5ac33e2ddae9", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x0000000000000000000000009008d19f58aabd9ed0d60971565aa8510560ab41", + "0x0000000000000000000000005236333ef2baa45b450689b69e4e4b277d84f954" + ], + "data": "0x000000000000000000000000000000000000000000000002b5e3af16b1880000", + "blockNumber": "0x161bd0f", + "transactionHash": "0x6ed161a1dd005c48b937d8f5049e8b0136693552e6eae52f3ee14f345683eeed", + "transactionIndex": "0x3a", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0xff", + "removed": false + }, + { + "address": "0x9008d19f58aabd9ed0d60971565aa8510560ab41", + "topics": [ + "0x40338ce1a7c49204f0099533b1e9a7ee0a3d261f84974ab7af36105b8c4e9db4", + "0x0000000000000000000000004dd1be0cd607e5382dd2844fa61d3a17e3e83d56" + ], + "data": "0x", + "blockNumber": "0x161bd0f", + "transactionHash": "0x6ed161a1dd005c48b937d8f5049e8b0136693552e6eae52f3ee14f345683eeed", + "transactionIndex": "0x3a", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x100", + "removed": false + } + ], + "logsBloom": "0x000010040000000000000000000010000040000800000000000000000000000000000000000000000000000000000100000000000000000020000440000000020000000000000000202000080000000000000001000400000000000000000002000000000a0000000000800000000880000000000000000010004010000010000000080000000000000201000000002000000000400000000000000000100000000000600000000000000080000000000000000000000000010000000000000000000002000800000008000000000000000020000400000800000000000020000000000000000000000002000000000000004000000000000000000000000000", + "status": "0x1", + "to": "0x4dd1be0cd607e5382dd2844fa61d3a17e3e83d56", + "transactionHash": "0x6ed161a1dd005c48b937d8f5049e8b0136693552e6eae52f3ee14f345683eeed", + "transactionIndex": "0x3a", + "type": "0x2" + }, + { + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "contractAddress": null, + "cumulativeGasUsed": "0x82156c", + "effectiveGasPrice": "0x9b04d3d4", + "from": "0x55823001c8cd87a6e86716ca768bce51f2d89c9c", + "gasUsed": "0x1788b", + "logs": [ + { + "address": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x000000000000000000000000f7b52be96b229dc63e6301bea175a1b5f756c274", + "0x000000000000000000000000ce5586f0fbe00a3efbfc8d2caa714fdbe6a052eb" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000129fc57bd", + "blockNumber": "0x161bd0f", + "transactionHash": "0xbc730be36c276ca5a0a02eeaa192ed302cf87c7453ad567e22fc951a0bf8d7e8", + "transactionIndex": "0x3b", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x101", + "removed": false + } + ], + "logsBloom": "0x00000100000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000010000000000000000000000000008000000200000000000000000000000000000000000000000000000000000000002000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000100000000000000000000000000000", + "status": "0x1", + "to": "0xf7b52be96b229dc63e6301bea175a1b5f756c274", + "transactionHash": "0xbc730be36c276ca5a0a02eeaa192ed302cf87c7453ad567e22fc951a0bf8d7e8", + "transactionIndex": "0x3b", + "type": "0x2" + }, + { + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "contractAddress": null, + "cumulativeGasUsed": "0x9134a0", + "effectiveGasPrice": "0x5f6a09d4", + "from": "0x8611abf54b7ad26ccbfe99a213c201ee60dba0e5", + "gasUsed": "0xf1f34", + "logs": [ + { + "address": "0x13a5a916356242879b9509fd12bf8e4760a3f438", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x00000000000000000000000013a5a916356242879b9509fd12bf8e4760a3f438" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000022", + "blockNumber": "0x161bd0f", + "transactionHash": "0x8a80899afccd55cad486357cf5ffc1092a592a339d9d6c5935d25b5324d72e73", + "transactionIndex": "0x3c", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x102", + "removed": false + }, + { + "address": "0xdac17f958d2ee523a2206206994597c13d831ec7", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x0000000000000000000000008611abf54b7ad26ccbfe99a213c201ee60dba0e5", + "0x00000000000000000000000013a5a916356242879b9509fd12bf8e4760a3f438" + ], + "data": "0x00000000000000000000000000000000000000000000000000000000000f4240", + "blockNumber": "0x161bd0f", + "transactionHash": "0x8a80899afccd55cad486357cf5ffc1092a592a339d9d6c5935d25b5324d72e73", + "transactionIndex": "0x3c", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x103", + "removed": false + }, + { + "address": "0x13a5a916356242879b9509fd12bf8e4760a3f438", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000008611abf54b7ad26ccbfe99a213c201ee60dba0e5" + ], + "data": "0x00000000000000000000000000000000000000000000000000000000000f384c", + "blockNumber": "0x161bd0f", + "transactionHash": "0x8a80899afccd55cad486357cf5ffc1092a592a339d9d6c5935d25b5324d72e73", + "transactionIndex": "0x3c", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x104", + "removed": false + }, + { + "address": "0xdac17f958d2ee523a2206206994597c13d831ec7", + "topics": [ + "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925", + "0x00000000000000000000000013a5a916356242879b9509fd12bf8e4760a3f438", + "0x00000000000000000000000079fd640000f8563a866322483524a4b48f1ed702" + ], + "data": "0x00000000000000000000000000000000000000000000000000000000000f4240", + "blockNumber": "0x161bd0f", + "transactionHash": "0x8a80899afccd55cad486357cf5ffc1092a592a339d9d6c5935d25b5324d72e73", + "transactionIndex": "0x3c", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x105", + "removed": false + }, + { + "address": "0x79fd640000f8563a866322483524a4b48f1ed702", + "topics": [ + "0x15c027cc4fd826d986cad358803439f7326d3aa4ed969ff90dbee4bc150f68e9" + ], + "data": "0x00000000000000000000000000000000000000000000000000000018cdea085e", + "blockNumber": "0x161bd0f", + "transactionHash": "0x8a80899afccd55cad486357cf5ffc1092a592a339d9d6c5935d25b5324d72e73", + "transactionIndex": "0x3c", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x106", + "removed": false + }, + { + "address": "0x79fd640000f8563a866322483524a4b48f1ed702", + "topics": [ + "0x548669ea9bcc24888e6d74a69c9865fa98d795686853b8aa3eb87814261bbb71" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000000", + "blockNumber": "0x161bd0f", + "transactionHash": "0x8a80899afccd55cad486357cf5ffc1092a592a339d9d6c5935d25b5324d72e73", + "transactionIndex": "0x3c", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x107", + "removed": false + }, + { + "address": "0x79fd640000f8563a866322483524a4b48f1ed702", + "topics": [ + "0xf66f28b40975dbb933913542c7e6a0f50a1d0f20aa74ea6e0efe65ab616323ec" + ], + "data": "0x00000000000000000000000000000000000000000000000000000018cdea085e0000000000000000000000000000000000000000000000000000000000000000", + "blockNumber": "0x161bd0f", + "transactionHash": "0x8a80899afccd55cad486357cf5ffc1092a592a339d9d6c5935d25b5324d72e73", + "transactionIndex": "0x3c", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x108", + "removed": false + }, + { + "address": "0xdac17f958d2ee523a2206206994597c13d831ec7", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x00000000000000000000000013a5a916356242879b9509fd12bf8e4760a3f438", + "0x00000000000000000000000079fd640000f8563a866322483524a4b48f1ed702" + ], + "data": "0x00000000000000000000000000000000000000000000000000000000000f4240", + "blockNumber": "0x161bd0f", + "transactionHash": "0x8a80899afccd55cad486357cf5ffc1092a592a339d9d6c5935d25b5324d72e73", + "transactionIndex": "0x3c", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x109", + "removed": false + }, + { + "address": "0x79fd640000f8563a866322483524a4b48f1ed702", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x00000000000000000000000013a5a916356242879b9509fd12bf8e4760a3f438" + ], + "data": "0x0000000000000000000000000000000000000000000000000daf726dd543ad01", + "blockNumber": "0x161bd0f", + "transactionHash": "0x8a80899afccd55cad486357cf5ffc1092a592a339d9d6c5935d25b5324d72e73", + "transactionIndex": "0x3c", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x10a", + "removed": false + }, + { + "address": "0x79fd640000f8563a866322483524a4b48f1ed702", + "topics": [ + "0xdcbc1c05240f31ff3ad067ef1ee35ce4997762752e3a095284754544f4c709d7", + "0x00000000000000000000000013a5a916356242879b9509fd12bf8e4760a3f438", + "0x00000000000000000000000013a5a916356242879b9509fd12bf8e4760a3f438" + ], + "data": "0x00000000000000000000000000000000000000000000000000000000000f42400000000000000000000000000000000000000000000000000daf726dd543ad01", + "blockNumber": "0x161bd0f", + "transactionHash": "0x8a80899afccd55cad486357cf5ffc1092a592a339d9d6c5935d25b5324d72e73", + "transactionIndex": "0x3c", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x10b", + "removed": false + }, + { + "address": "0x870ac11d48b15db9a138cf899d20f13f79ba00bc", + "topics": [ + "0x7120161a7b3d31251e01294ab351ef15a41b91659a36032e4641bb89b121e321", + "0xa921ef34e2fc7a27ccc50ae7e4b154e16c9799d3387076c421423ef52ac4df99" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000062669641000000000000000000000000000000000000000000000000000000004cd5602e", + "blockNumber": "0x161bd0f", + "transactionHash": "0x8a80899afccd55cad486357cf5ffc1092a592a339d9d6c5935d25b5324d72e73", + "transactionIndex": "0x3c", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x10c", + "removed": false + }, + { + "address": "0xbbbbbbbbbb9cc5e90e3b3af64bdaf62c37eeffcb", + "topics": [ + "0x9d9bd501d0657d7dfe415f779a620a62b78bc508ddc0891fbbd8b7ac0f8fce87", + "0xa921ef34e2fc7a27ccc50ae7e4b154e16c9799d3387076c421423ef52ac4df99" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000062669641000000000000000000000000000000000000000000000000000000000b47db310000000000000000000000000000000000000000000000000000000000000000", + "blockNumber": "0x161bd0f", + "transactionHash": "0x8a80899afccd55cad486357cf5ffc1092a592a339d9d6c5935d25b5324d72e73", + "transactionIndex": "0x3c", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x10d", + "removed": false + }, + { + "address": "0xbbbbbbbbbb9cc5e90e3b3af64bdaf62c37eeffcb", + "topics": [ + "0xedf8870433c83823eb071d3df1caa8d008f12f6440918c20d75a3602cda30fe0", + "0xa921ef34e2fc7a27ccc50ae7e4b154e16c9799d3387076c421423ef52ac4df99", + "0x00000000000000000000000079fd640000f8563a866322483524a4b48f1ed702", + "0x00000000000000000000000079fd640000f8563a866322483524a4b48f1ed702" + ], + "data": "0x00000000000000000000000000000000000000000000000000000000000f4240000000000000000000000000000000000000000000000000000000d51ee5a890", + "blockNumber": "0x161bd0f", + "transactionHash": "0x8a80899afccd55cad486357cf5ffc1092a592a339d9d6c5935d25b5324d72e73", + "transactionIndex": "0x3c", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x10e", + "removed": false + }, + { + "address": "0xdac17f958d2ee523a2206206994597c13d831ec7", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x00000000000000000000000079fd640000f8563a866322483524a4b48f1ed702", + "0x000000000000000000000000bbbbbbbbbb9cc5e90e3b3af64bdaf62c37eeffcb" + ], + "data": "0x00000000000000000000000000000000000000000000000000000000000f4240", + "blockNumber": "0x161bd0f", + "transactionHash": "0x8a80899afccd55cad486357cf5ffc1092a592a339d9d6c5935d25b5324d72e73", + "transactionIndex": "0x3c", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x10f", + "removed": false + }, + { + "address": "0x79fd640000f8563a866322483524a4b48f1ed702", + "topics": [ + "0x15c027cc4fd826d986cad358803439f7326d3aa4ed969ff90dbee4bc150f68e9" + ], + "data": "0x00000000000000000000000000000000000000000000000000000018cdf94a9e", + "blockNumber": "0x161bd0f", + "transactionHash": "0x8a80899afccd55cad486357cf5ffc1092a592a339d9d6c5935d25b5324d72e73", + "transactionIndex": "0x3c", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x110", + "removed": false + }, + { + "address": "0x034771103dc1e9b1f2ebda95896fc44b6d63edc7", + "topics": [ + "0x34f2a7363b1ef64b0b62a223c88cf3f54a68686acfcb9531d7deb46004f37c46", + "0x00000000000000000000000013a5a916356242879b9509fd12bf8e4760a3f438" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000000", + "blockNumber": "0x161bd0f", + "transactionHash": "0x8a80899afccd55cad486357cf5ffc1092a592a339d9d6c5935d25b5324d72e73", + "transactionIndex": "0x3c", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x111", + "removed": false + }, + { + "address": "0x13a5a916356242879b9509fd12bf8e4760a3f438", + "topics": [ + "0xdcbc1c05240f31ff3ad067ef1ee35ce4997762752e3a095284754544f4c709d7", + "0x0000000000000000000000008611abf54b7ad26ccbfe99a213c201ee60dba0e5", + "0x0000000000000000000000008611abf54b7ad26ccbfe99a213c201ee60dba0e5" + ], + "data": "0x00000000000000000000000000000000000000000000000000000000000f424000000000000000000000000000000000000000000000000000000000000f384c", + "blockNumber": "0x161bd0f", + "transactionHash": "0x8a80899afccd55cad486357cf5ffc1092a592a339d9d6c5935d25b5324d72e73", + "transactionIndex": "0x3c", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x112", + "removed": false + } + ], + "logsBloom": "0x00000000000040000000000000000080000000000000000001000000000040000000400000000000000000000000010000000000000000000000000020a4400000000040001000000000000880000000004000080028000000000108000000000000000002000002000000000000080000000000000400000000001800000000000800000000000800200000000000000000000000000000003004000010040002000000002000000000008000000000004010000400040000000000000000002800000200000000000100000000000008000000810900000000000000002040c010000001000000000000240201000400000002000008000000000400080000", + "status": "0x1", + "to": "0x13a5a916356242879b9509fd12bf8e4760a3f438", + "transactionHash": "0x8a80899afccd55cad486357cf5ffc1092a592a339d9d6c5935d25b5324d72e73", + "transactionIndex": "0x3c", + "type": "0x2" + }, + { + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "contractAddress": null, + "cumulativeGasUsed": "0x9186a8", + "effectiveGasPrice": "0xdc3a2c62", + "from": "0x9642b23ed1e01df1092b92641051881a322f5d4e", + "gasUsed": "0x5208", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "status": "0x1", + "to": "0x1b216d8b75a050041e59860ff7fda6e3411424f4", + "transactionHash": "0x6ae2f1fd6116d2b93223ae3548caf9d85e43d8fefec88814d36f38b916bab652", + "transactionIndex": "0x3d", + "type": "0x0" + }, + { + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "contractAddress": null, + "cumulativeGasUsed": "0x91d8b0", + "effectiveGasPrice": "0xdc3a2c62", + "from": "0x9642b23ed1e01df1092b92641051881a322f5d4e", + "gasUsed": "0x5208", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "status": "0x1", + "to": "0x2e17aa7437b4ac446e5750202ab1d48c7884f5d9", + "transactionHash": "0x3991e33f52ae3cf5167bf1f07cc8d358caf226022c5128ad991fe279b702a27d", + "transactionIndex": "0x3e", + "type": "0x0" + }, + { + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "contractAddress": null, + "cumulativeGasUsed": "0x92a1d4", + "effectiveGasPrice": "0xdc3a2c62", + "from": "0x9642b23ed1e01df1092b92641051881a322f5d4e", + "gasUsed": "0xc924", + "logs": [ + { + "address": "0xcab84bc21f9092167fcfe0ea60f5ce053ab39a1e", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x0000000000000000000000009642b23ed1e01df1092b92641051881a322f5d4e", + "0x000000000000000000000000a882df02283fa89d5659a870414e2c1803fd54ca" + ], + "data": "0x00000000000000000000000000000000000000000000000ab407c9eb05200000", + "blockNumber": "0x161bd0f", + "transactionHash": "0xed80b011a517f5aab29dc7b79061fd54b68cc36c2023bfaff2812be53328e7fd", + "transactionIndex": "0x3f", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x113", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000800000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000010000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000208000000000000000000000000000000000800000000000000000000000800000000000000000", + "status": "0x1", + "to": "0xcab84bc21f9092167fcfe0ea60f5ce053ab39a1e", + "transactionHash": "0xed80b011a517f5aab29dc7b79061fd54b68cc36c2023bfaff2812be53328e7fd", + "transactionIndex": "0x3f", + "type": "0x0" + }, + { + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "contractAddress": null, + "cumulativeGasUsed": "0x92f3dc", + "effectiveGasPrice": "0xdc3a2c62", + "from": "0x9642b23ed1e01df1092b92641051881a322f5d4e", + "gasUsed": "0x5208", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "status": "0x1", + "to": "0x0b9b42d7edb6b669a24f50157f80e5d909cb6eb8", + "transactionHash": "0x06d504980fbacf359463537147c81348f5978476433367b067b185ad95be82e0", + "transactionIndex": "0x40", + "type": "0x0" + }, + { + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "contractAddress": null, + "cumulativeGasUsed": "0x9345e4", + "effectiveGasPrice": "0xdc3a2c62", + "from": "0x9642b23ed1e01df1092b92641051881a322f5d4e", + "gasUsed": "0x5208", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "status": "0x1", + "to": "0x0f000db45a0f4320ac77c5ba21312ae52174326a", + "transactionHash": "0xd33b517a15607a18d3c33ddc1f237aa61e9a3947b21287768ce3ba86d2495a03", + "transactionIndex": "0x41", + "type": "0x0" + }, + { + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "contractAddress": null, + "cumulativeGasUsed": "0x93fbd4", + "effectiveGasPrice": "0xd6455cd2", + "from": "0x7586854ec236f3ef8e7e5c7cc55dd3b449feed98", + "gasUsed": "0xb5f0", + "logs": [ + { + "address": "0xfa417cd491632620a582851b07abf7e3447bba71", + "topics": [ + "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925", + "0x0000000000000000000000007586854ec236f3ef8e7e5c7cc55dd3b449feed98", + "0x00000000000000000000000077edae6a5f332605720688c7fda7476476e8f83f" + ], + "data": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", + "blockNumber": "0x161bd0f", + "transactionHash": "0x1827070bb19ea45e3bf9eec57ccc94690038337ada1bc618ab79eb21a8078dac", + "transactionIndex": "0x42", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x114", + "removed": false + } + ], + "logsBloom": "0x01000000000000000000000000001000100000000000000000000000000000200000000000000000000000000000000400000000000000000000000001200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000002000000000020000000000000000000000000000000000", + "status": "0x1", + "to": "0xfa417cd491632620a582851b07abf7e3447bba71", + "transactionHash": "0x1827070bb19ea45e3bf9eec57ccc94690038337ada1bc618ab79eb21a8078dac", + "transactionIndex": "0x42", + "type": "0x0" + }, + { + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "contractAddress": null, + "cumulativeGasUsed": "0x94ac3c", + "effectiveGasPrice": "0xd69f9dd4", + "from": "0x3fdd41c3622aa33227d42d87c6838aaa9dca0dcf", + "gasUsed": "0xb068", + "logs": [ + { + "address": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x0000000000000000000000003fdd41c3622aa33227d42d87c6838aaa9dca0dcf", + "0x0000000000000000000000008476de5d91038c1015c73e6fec0a97d45d91ec18" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000008ebb1c8", + "blockNumber": "0x161bd0f", + "transactionHash": "0xc8d9083af83a6c8fa73051663d8a2c9d79195be21063c09066d39d562d1be993", + "transactionIndex": "0x43", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x115", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000002000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000008000008000000000000000080000000000000000000000000000000000000000000000000000000000000000000010000000010000000000000000000000000000000000000000000000000010000080000000000000000000000000000200000000000000000000000000000000000000000000000000000000002000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "status": "0x1", + "to": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48", + "transactionHash": "0xc8d9083af83a6c8fa73051663d8a2c9d79195be21063c09066d39d562d1be993", + "transactionIndex": "0x43", + "type": "0x2" + }, + { + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "contractAddress": null, + "cumulativeGasUsed": "0x959f70", + "effectiveGasPrice": "0x9b04d3d4", + "from": "0x93228d328c9c74c2bfe9f97638bbb5ef322f2bd5", + "gasUsed": "0xf334", + "logs": [ + { + "address": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x00000000000000000000000093228d328c9c74c2bfe9f97638bbb5ef322f2bd5", + "0x00000000000000000000000041ea4e72b88a8e84b83b739f4092339d721574cf" + ], + "data": "0x000000000000000000000000000000000000000000000000000000000ac9d740", + "blockNumber": "0x161bd0f", + "transactionHash": "0x7e1bbe3049928a58a967ff5188615b894fc8093d92778abcdedbdbdf9957c052", + "transactionIndex": "0x44", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x116", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000008000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000010000000000000000000000000000000000000000000000000010000000000000000008080000000000000200000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000400", + "status": "0x1", + "to": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48", + "transactionHash": "0x7e1bbe3049928a58a967ff5188615b894fc8093d92778abcdedbdbdf9957c052", + "transactionIndex": "0x44", + "type": "0x2" + }, + { + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "contractAddress": null, + "cumulativeGasUsed": "0x96ec8c", + "effectiveGasPrice": "0x7a4ab68f", + "from": "0x8347cd390c696372aa5ac17865117d5521c5476a", + "gasUsed": "0x14d1c", + "logs": [ + { + "address": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x0000000000000000000000008347cd390c696372aa5ac17865117d5521c5476a", + "0x0000000000000000000000005c7bcd6e7de5423a257d81b442095a1a6ced35c5" + ], + "data": "0x000000000000000000000000000000000000000000000000000000005120bce0", + "blockNumber": "0x161bd0f", + "transactionHash": "0x75205100cde683dcb84a3b361f7320c0a0adad9f4c151a7088938db3a90c682b", + "transactionIndex": "0x45", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x117", + "removed": false + }, + { + "address": "0x5c7bcd6e7de5423a257d81b442095a1a6ced35c5", + "topics": [ + "0x32ed1a409ef04c7b0227189c3a103dc5ac10e775a15b785dcc510201f7c25ad3", + "0x0000000000000000000000000000000000000000000000000000000000002105", + "0x00000000000000000000000000000000000000000000000000000000002e16ea", + "0x0000000000000000000000008347cd390c696372aa5ac17865117d5521c5476a" + ], + "data": "0x000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48000000000000000000000000833589fcd6edb6e08f4c7c32d4f71b54bda02913000000000000000000000000000000000000000000000000000000005120bce000000000000000000000000000000000000000000000000000000000511e68ef0000000000000000000000000000000000000000000000000000000068a5cd170000000000000000000000000000000000000000000000000000000068a5fc010000000000000000000000000000000000000000000000000000000068a5ce730000000000000000000000008347cd390c696372aa5ac17865117d5521c5476a000000000000000000000000394311a6aaa0d8e3411d8b62de4578d41322d1bd00000000000000000000000000000000000000000000000000000000000001400000000000000000000000000000000000000000000000000000000000000000", + "blockNumber": "0x161bd0f", + "transactionHash": "0x75205100cde683dcb84a3b361f7320c0a0adad9f4c151a7088938db3a90c682b", + "transactionIndex": "0x45", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x118", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000001000000000000000001000000000000000000000000000008000108000000000000000000000000000000000000000000010000000000000000000000000000000120000000000000000010000000000000000800000008000800100000001000000000210008000000000020000000001000000000200000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000010000000000000000000000000000000000000000000004000000000000000000000000000000", + "status": "0x1", + "to": "0x8347cd390c696372aa5ac17865117d5521c5476a", + "transactionHash": "0x75205100cde683dcb84a3b361f7320c0a0adad9f4c151a7088938db3a90c682b", + "transactionIndex": "0x45", + "type": "0x2" + }, + { + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "contractAddress": null, + "cumulativeGasUsed": "0x97d8c6", + "effectiveGasPrice": "0x9b04d3d4", + "from": "0x91d40e4818f4d4c57b4578d9eca6afc92ac8debe", + "gasUsed": "0xec3a", + "logs": [ + { + "address": "0x6982508145454ce325ddbe47a25d4ec3d2311933", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x00000000000000000000000091d40e4818f4d4c57b4578d9eca6afc92ac8debe", + "0x000000000000000000000000124f9ec75369ea83cdfdb1d87c5874ca7f081107" + ], + "data": "0x000000000000000000000000000000000000000000026d04ab7d750dfb350000", + "blockNumber": "0x161bd0f", + "transactionHash": "0x6a3001d1458aaae959847d930c1f1b4e813899c8702e5a3f7ea14123b633ee52", + "transactionIndex": "0x46", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x119", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000080000000000000008000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000010000000000000000000000000000000000010000000000000000000000000800200000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000001000000000000000000000000000000000000080001000000000000000000000000000000000000000000000000000000", + "status": "0x1", + "to": "0x6982508145454ce325ddbe47a25d4ec3d2311933", + "transactionHash": "0x6a3001d1458aaae959847d930c1f1b4e813899c8702e5a3f7ea14123b633ee52", + "transactionIndex": "0x46", + "type": "0x2" + }, + { + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "contractAddress": null, + "cumulativeGasUsed": "0x997e69", + "effectiveGasPrice": "0x5f6a09d5", + "from": "0x0fc7cb62247151faf5e7a948471308145f020d2e", + "gasUsed": "0x1a5a3", + "logs": [ + { + "address": "0x2260fac5e5542a773aa44fbcfedf7c193bc2c599", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x0000000000000000000000004585fe77225b41b697c938b018e2ac67ac5a20c0", + "0x000000000000000000000000a69babef1ca67a37ffaf7a485dfff3382056e78c" + ], + "data": "0x00000000000000000000000000000000000000000000000000000000003a4592", + "blockNumber": "0x161bd0f", + "transactionHash": "0xa992613624291aa6066c2b0e3c8f16a4cbf2da27d5124ae28c7041edb5c5f8cb", + "transactionIndex": "0x47", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x11a", + "removed": false + }, + { + "address": "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x000000000000000000000000a69babef1ca67a37ffaf7a485dfff3382056e78c", + "0x0000000000000000000000004585fe77225b41b697c938b018e2ac67ac5a20c0" + ], + "data": "0x0000000000000000000000000000000000000000000000000e6292767661e2a9", + "blockNumber": "0x161bd0f", + "transactionHash": "0xa992613624291aa6066c2b0e3c8f16a4cbf2da27d5124ae28c7041edb5c5f8cb", + "transactionIndex": "0x47", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x11b", + "removed": false + }, + { + "address": "0x4585fe77225b41b697c938b018e2ac67ac5a20c0", + "topics": [ + "0xc42079f94a6350d7e6235f29174924f928cc2ac818eb64fed8004e115fbcca67", + "0x000000000000000000000000a69babef1ca67a37ffaf7a485dfff3382056e78c", + "0x000000000000000000000000a69babef1ca67a37ffaf7a485dfff3382056e78c" + ], + "data": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc5ba6e0000000000000000000000000000000000000000000000000e6292767661e2a9000000000000000000000000000000000007f2bc5dc46b0bc91a11635bcf1c480000000000000000000000000000000000000000000000000032f67f85989ef7000000000000000000000000000000000000000000000000000000000004046f", + "blockNumber": "0x161bd0f", + "transactionHash": "0xa992613624291aa6066c2b0e3c8f16a4cbf2da27d5124ae28c7041edb5c5f8cb", + "transactionIndex": "0x47", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x11c", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000001000001000000000000000000000000000000000000000000000000000000000002000000080020000000000000000000000080000000000800000208000000000000000000000000000000000000000000080000000002000000000000002000020000000000000000000010000800000020000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000800000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000200000000000000000000000000000", + "status": "0x1", + "to": "0xa69babef1ca67a37ffaf7a485dfff3382056e78c", + "transactionHash": "0xa992613624291aa6066c2b0e3c8f16a4cbf2da27d5124ae28c7041edb5c5f8cb", + "transactionIndex": "0x47", + "type": "0x2" + }, + { + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "contractAddress": null, + "cumulativeGasUsed": "0x9b1a6d", + "effectiveGasPrice": "0x5f6a09d5", + "from": "0x234de29cc82f9ce20cdc71b8b4baf6d51f4a1a64", + "gasUsed": "0x19c04", + "logs": [ + { + "address": "0x6b175474e89094c44da98b954eedeac495271d0f", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x00000000000000000000000060594a405d53811d3bc4766596efd80fd545a270", + "0x000000000000000000000000a69babef1ca67a37ffaf7a485dfff3382056e78c" + ], + "data": "0x00000000000000000000000000000000000000000000004b2c431fda9185ee5e", + "blockNumber": "0x161bd0f", + "transactionHash": "0x00138f183df8f35e5cff95ae8911e29f833a0e4e1b2da55eaa2e7b9c0dc7c361", + "transactionIndex": "0x48", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x11d", + "removed": false + }, + { + "address": "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x000000000000000000000000a69babef1ca67a37ffaf7a485dfff3382056e78c", + "0x00000000000000000000000060594a405d53811d3bc4766596efd80fd545a270" + ], + "data": "0x000000000000000000000000000000000000000000000000049bff3124b7bb06", + "blockNumber": "0x161bd0f", + "transactionHash": "0x00138f183df8f35e5cff95ae8911e29f833a0e4e1b2da55eaa2e7b9c0dc7c361", + "transactionIndex": "0x48", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x11e", + "removed": false + }, + { + "address": "0x60594a405d53811d3bc4766596efd80fd545a270", + "topics": [ + "0xc42079f94a6350d7e6235f29174924f928cc2ac818eb64fed8004e115fbcca67", + "0x000000000000000000000000a69babef1ca67a37ffaf7a485dfff3382056e78c", + "0x000000000000000000000000a69babef1ca67a37ffaf7a485dfff3382056e78c" + ], + "data": "0xffffffffffffffffffffffffffffffffffffffffffffffb4d3bce0256e7a11a2000000000000000000000000000000000000000000000000049bff3124b7bb06000000000000000000000000000000000000000003f68e899e4ccafb82674bf5000000000000000000000000000000000000000000000431bb9918fecc9757c6fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeba58", + "blockNumber": "0x161bd0f", + "transactionHash": "0x00138f183df8f35e5cff95ae8911e29f833a0e4e1b2da55eaa2e7b9c0dc7c361", + "transactionIndex": "0x48", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x11f", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000020000001000000000000000000000040000000000000000000000000000000000000000002000000080020000000000000000000000080000000000800000008000000000000000000000000000000000000000010000000000000000000080000002000000000000000002000000010000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000002000000020000000000000000000002000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000", + "status": "0x1", + "to": "0xa69babef1ca67a37ffaf7a485dfff3382056e78c", + "transactionHash": "0x00138f183df8f35e5cff95ae8911e29f833a0e4e1b2da55eaa2e7b9c0dc7c361", + "transactionIndex": "0x48", + "type": "0x2" + }, + { + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "contractAddress": null, + "cumulativeGasUsed": "0x9d6f74", + "effectiveGasPrice": "0x3bb9cbd0", + "from": "0x22b0351d445840db59b97df3808dd642dcb17e96", + "gasUsed": "0x25507", + "logs": [ + { + "address": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x0000000000000000000000001ac1a8feaaea1900c4166deeed0c11cc10669d36", + "0x000000000000000000000000fbd4cdb413e45a52e2c8312f670e9ce67e794c37" + ], + "data": "0x000000000000000000000000000000000000000000000000000000002c5a0de9", + "blockNumber": "0x161bd0f", + "transactionHash": "0x5c26778c19e50598fcd9190fa74dc60d2182940918b53942a6a7ea247243a38b", + "transactionIndex": "0x49", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x120", + "removed": false + }, + { + "address": "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x000000000000000000000000fbd4cdb413e45a52e2c8312f670e9ce67e794c37", + "0x0000000000000000000000001ac1a8feaaea1900c4166deeed0c11cc10669d36" + ], + "data": "0x0000000000000000000000000000000000000000000000000278f7f1db3b9b5e", + "blockNumber": "0x161bd0f", + "transactionHash": "0x5c26778c19e50598fcd9190fa74dc60d2182940918b53942a6a7ea247243a38b", + "transactionIndex": "0x49", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x121", + "removed": false + }, + { + "address": "0x1ac1a8feaaea1900c4166deeed0c11cc10669d36", + "topics": [ + "0x19b47279256b2a23a1665c810c8d55a1758940ee09377d4f8d26497a3577dc83", + "0x000000000000000000000000fbd4cdb413e45a52e2c8312f670e9ce67e794c37", + "0x000000000000000000000000fbd4cdb413e45a52e2c8312f670e9ce67e794c37" + ], + "data": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffd3a5f2170000000000000000000000000000000000000000000000000278f7f1db3b9b5e0000000000000000000000000000000000003c7390d650dc073538d9dde88a3e0000000000000000000000000000000000000000000000000037a1a246968f30000000000000000000000000000000000000000000000000000000000002f1b5000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001b8bfa78220d", + "blockNumber": "0x161bd0f", + "transactionHash": "0x5c26778c19e50598fcd9190fa74dc60d2182940918b53942a6a7ea247243a38b", + "transactionIndex": "0x49", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x122", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000080000000000000000000000000000000000000000000000000000000000000002000002000000080000000000000000000000040000000040000008000008000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000010000000000000000000000000000000000000000000000000010000100000000000000000000000000000200000000000000000800000000000000000008000000000000000001002000000000000000000000800000000000000000000000000000000000000240000000000000000000000000000000000000000000000000040000000", + "status": "0x1", + "to": "0xfbd4cdb413e45a52e2c8312f670e9ce67e794c37", + "transactionHash": "0x5c26778c19e50598fcd9190fa74dc60d2182940918b53942a6a7ea247243a38b", + "transactionIndex": "0x49", + "type": "0x2" + }, + { + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "contractAddress": null, + "cumulativeGasUsed": "0x9e1fdc", + "effectiveGasPrice": "0x77359400", + "from": "0x46340b20830761efd32832a74d7169b29feb9758", + "gasUsed": "0xb068", + "logs": [ + { + "address": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x00000000000000000000000046340b20830761efd32832a74d7169b29feb9758", + "0x00000000000000000000000025637c1059b044c262cb1108c899cad44c8cd908" + ], + "data": "0x000000000000000000000000000000000000000000000000000000001d34ce80", + "blockNumber": "0x161bd0f", + "transactionHash": "0xa2a8edbe294afde748bf14aae5427b8af22a65d9e1ea8de5c410057d577a480e", + "transactionIndex": "0x4a", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x123", + "removed": false + } + ], + "logsBloom": "0x00040000008000000000000000000000000000000000000000000010000000000000000040000000000000000000000000000000000000000000000000000000000000000000000008000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018000000000000000000000000000000000000000000000000010000000000000000800000000000000000200000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "status": "0x1", + "to": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48", + "transactionHash": "0xa2a8edbe294afde748bf14aae5427b8af22a65d9e1ea8de5c410057d577a480e", + "transactionIndex": "0x4a", + "type": "0x0" + }, + { + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "contractAddress": null, + "cumulativeGasUsed": "0x9e71e4", + "effectiveGasPrice": "0xd69f9dd4", + "from": "0x1864d150aa60111fb312a1b8f4cf8e6dabd3094c", + "gasUsed": "0x5208", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "status": "0x1", + "to": "0x0abbc482fbd91dbf413e3d6cc5622e03552ac13a", + "transactionHash": "0x1de9ccef004f5f226c9468fb6abdc40755e1e5c7ddfcf1dd4ea2cbb708cc2165", + "transactionIndex": "0x4b", + "type": "0x2" + }, + { + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "contractAddress": null, + "cumulativeGasUsed": "0xa384be", + "effectiveGasPrice": "0x5f6a09d4", + "from": "0x5962604feb383ca4164107583d147b2aa1d86d54", + "gasUsed": "0x512da", + "logs": [ + { + "address": "0x2401c39d7ba9e283668a53fcc7b8f5fd9e716fdf", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x0000000000000000000000005962604feb383ca4164107583d147b2aa1d86d54", + "0x0000000000000000000000000000000000000000000000000000000000000000" + ], + "data": "0x00000000000000000000000000000000000000000000000000502072edbac1fa", + "blockNumber": "0x161bd0f", + "transactionHash": "0x58e2f7e1ec2dd54b4e40331bea22badf3843fe6f21c6a4a017d86a715904c6b2", + "transactionIndex": "0x4c", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x124", + "removed": false + }, + { + "address": "0x00a0be1bbc0c99898df7e6524bf16e893c1e3bb9", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x0000000000000000000000002401c39d7ba9e283668a53fcc7b8f5fd9e716fdf", + "0x0000000000000000000000008d6fd650500f82c7d978a440348e5a9b886943bf" + ], + "data": "0x000000000000000000000000000000000000000000000000004f723c6b53a4a8", + "blockNumber": "0x161bd0f", + "transactionHash": "0x58e2f7e1ec2dd54b4e40331bea22badf3843fe6f21c6a4a017d86a715904c6b2", + "transactionIndex": "0x4c", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x125", + "removed": false + }, + { + "address": "0x8d6fd650500f82c7d978a440348e5a9b886943bf", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000005962604feb383ca4164107583d147b2aa1d86d54", + "0x00000000000000000000000000013dd60000000000000000004f723c6b53a4a8" + ], + "data": "0x", + "blockNumber": "0x161bd0f", + "transactionHash": "0x58e2f7e1ec2dd54b4e40331bea22badf3843fe6f21c6a4a017d86a715904c6b2", + "transactionIndex": "0x4c", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x126", + "removed": false + }, + { + "address": "0x8d6fd650500f82c7d978a440348e5a9b886943bf", + "topics": [ + "0x0080df45f12186856da484a1494bb51907e2abec5abc9a401e443c116bed71a5", + "0x0000000000000000000000005962604feb383ca4164107583d147b2aa1d86d54" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000013dd600000000000000000000000000013dd60000000000000000004f723c6b53a4a800000000000000000000000000000000000000000000425cb1e1774c9a683cbd000000000000000000000000000000000000000000000000004f723c6b53a4a80000000000000000000000000000000000000000000000000054d440ddba222e", + "blockNumber": "0x161bd0f", + "transactionHash": "0x58e2f7e1ec2dd54b4e40331bea22badf3843fe6f21c6a4a017d86a715904c6b2", + "transactionIndex": "0x4c", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x127", + "removed": false + }, + { + "address": "0x2401c39d7ba9e283668a53fcc7b8f5fd9e716fdf", + "topics": [ + "0x75aa83b91343398bcfa338c4017c29780f24e0178bb796993453746801d80b03", + "0x0000000000000000000000005962604feb383ca4164107583d147b2aa1d86d54" + ], + "data": "0x00000000000000000000000000000000000000000000000000502072edbac1fa000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004f723c6b53a4a8", + "blockNumber": "0x161bd0f", + "transactionHash": "0x58e2f7e1ec2dd54b4e40331bea22badf3843fe6f21c6a4a017d86a715904c6b2", + "transactionIndex": "0x4c", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x128", + "removed": false + } + ], + "logsBloom": "0x0000000000000000000000000000000000000000000000400000000000000000000010000000800000000080000000080000000000000008000001000000000221000200000000000000200800000000000000000000000000000000000000000000000002000000000001008000080000000000000000000000001000000000021000000000000000000000000000000000000000000000000000000000000000000000000000000000020100000000200000000000000200a000000000000000000006000000000000000100000000000000000000000000000000000020002001000000000000000000000000000000040000000000000000000000000000", + "status": "0x1", + "to": "0x2401c39d7ba9e283668a53fcc7b8f5fd9e716fdf", + "transactionHash": "0x58e2f7e1ec2dd54b4e40331bea22badf3843fe6f21c6a4a017d86a715904c6b2", + "transactionIndex": "0x4c", + "type": "0x2" + }, + { + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "contractAddress": null, + "cumulativeGasUsed": "0xa54f01", + "effectiveGasPrice": "0x419ca4d4", + "from": "0x663b7c32c90f6c3fee8e8eecced18c007d69193a", + "gasUsed": "0x1ca43", + "logs": [ + { + "address": "0x10ee9f68ee4e4d311e854ae14c53f5b25a917f85", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x000000000000000000000000663b7c32c90f6c3fee8e8eecced18c007d69193a", + "0x000000000000000000000000332a24318d56f9cca677a242aff668314492bf80" + ], + "data": "0x00000000000000000000000000000000000000000000eeba4b9f0d5bdd105a3e", + "blockNumber": "0x161bd0f", + "transactionHash": "0x7a3600dd2fe2ec2c06cec4604861991b4ba6890c76c3d10f486f4562a6eb7eb7", + "transactionIndex": "0x4d", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x129", + "removed": false + }, + { + "address": "0x10ee9f68ee4e4d311e854ae14c53f5b25a917f85", + "topics": [ + "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925", + "0x000000000000000000000000663b7c32c90f6c3fee8e8eecced18c007d69193a", + "0x0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d" + ], + "data": "0xfffffffffffffffffffffffffffffffffffffffffff834724815ff43060e8e12", + "blockNumber": "0x161bd0f", + "transactionHash": "0x7a3600dd2fe2ec2c06cec4604861991b4ba6890c76c3d10f486f4562a6eb7eb7", + "transactionIndex": "0x4d", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x12a", + "removed": false + }, + { + "address": "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x000000000000000000000000332a24318d56f9cca677a242aff668314492bf80", + "0x0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d" + ], + "data": "0x00000000000000000000000000000000000000000000000029fbecd9a1c2b9f4", + "blockNumber": "0x161bd0f", + "transactionHash": "0x7a3600dd2fe2ec2c06cec4604861991b4ba6890c76c3d10f486f4562a6eb7eb7", + "transactionIndex": "0x4d", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x12b", + "removed": false + }, + { + "address": "0x332a24318d56f9cca677a242aff668314492bf80", + "topics": [ + "0x1c411e9a96e071241c2f21f7726b17ae89e3cab4c78be50e062b03a9fffbbad1" + ], + "data": "0x00000000000000000000000000000000000000000014e7932d666db6140a089200000000000000000000000000000000000000000000000385e1aa5adf62d095", + "blockNumber": "0x161bd0f", + "transactionHash": "0x7a3600dd2fe2ec2c06cec4604861991b4ba6890c76c3d10f486f4562a6eb7eb7", + "transactionIndex": "0x4d", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x12c", + "removed": false + }, + { + "address": "0x332a24318d56f9cca677a242aff668314492bf80", + "topics": [ + "0xd78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d822", + "0x0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d", + "0x0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d" + ], + "data": "0x00000000000000000000000000000000000000000000eeba4b9f0d5bdd105a3e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000029fbecd9a1c2b9f4", + "blockNumber": "0x161bd0f", + "transactionHash": "0x7a3600dd2fe2ec2c06cec4604861991b4ba6890c76c3d10f486f4562a6eb7eb7", + "transactionIndex": "0x4d", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x12d", + "removed": false + }, + { + "address": "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2", + "topics": [ + "0x7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b65", + "0x0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d" + ], + "data": "0x00000000000000000000000000000000000000000000000029fbecd9a1c2b9f4", + "blockNumber": "0x161bd0f", + "transactionHash": "0x7a3600dd2fe2ec2c06cec4604861991b4ba6890c76c3d10f486f4562a6eb7eb7", + "transactionIndex": "0x4d", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x12e", + "removed": false + } + ], + "logsBloom": "0x00200000004000000000000080000000000000000000200000010000000020010000000000000000000000000000000002004000080000100000000000200000000000000000000000000008000000200000000000400000000000000000000000000000000000000000000000000000000000000000040000000010100000000000000008000000004400000000000000000000000000080000004021000000020000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000001000000002000020000010200000000000000000000000000000000000000000000000000000000004", + "status": "0x1", + "to": "0x7a250d5630b4cf539739df2c5dacb4c659f2488d", + "transactionHash": "0x7a3600dd2fe2ec2c06cec4604861991b4ba6890c76c3d10f486f4562a6eb7eb7", + "transactionIndex": "0x4d", + "type": "0x2" + }, + { + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "contractAddress": null, + "cumulativeGasUsed": "0xa5a109", + "effectiveGasPrice": "0xb2d05e00", + "from": "0xb6839dc14ace0934a2c422369aa34b39b8c534b1", + "gasUsed": "0x5208", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "status": "0x1", + "to": "0x2fd2ea3b0545bf12dd03ef6274aede12274da9a6", + "transactionHash": "0x9ffbef1785c43203687d9ecebc2e1dc67bd4b69337d9576d9992039d328ba5c3", + "transactionIndex": "0x4e", + "type": "0x0" + }, + { + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "contractAddress": null, + "cumulativeGasUsed": "0xa5f311", + "effectiveGasPrice": "0xae1aec40", + "from": "0x91604f590d66ace8975eed6bd16cf55647d1c499", + "gasUsed": "0x5208", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "status": "0x1", + "to": "0xfbc09172b41c69aa617629847e5d80e35981932d", + "transactionHash": "0x2cbad0ad9584888bb5ad6d856ea602fa2a3afe764252499f2de6afe2a69ffdae", + "transactionIndex": "0x4f", + "type": "0x0" + }, + { + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "contractAddress": null, + "cumulativeGasUsed": "0xa64519", + "effectiveGasPrice": "0x9b04d3d4", + "from": "0xab97925eb84fe0260779f58b7cb08d77dcb1ee2b", + "gasUsed": "0x5208", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "status": "0x1", + "to": "0xe47d43dcd14e9fcaf96c232dae3f84d81c1ac725", + "transactionHash": "0x88871027255d345a9f5887127c9acb33704c9a1db48142f8185eabceeab719e1", + "transactionIndex": "0x50", + "type": "0x2" + }, + { + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "contractAddress": null, + "cumulativeGasUsed": "0xa69721", + "effectiveGasPrice": "0x9b04d3d4", + "from": "0xa9ac43f5b5e38155a288d1a01d2cbc4478e14573", + "gasUsed": "0x5208", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "status": "0x1", + "to": "0xe337299f1d8f5a249147bf2e795d612b891ab90e", + "transactionHash": "0x5803753b8b9f1a604f6590849d3a9cd2a7c0f6fb6334d02a01ba5d66206c450a", + "transactionIndex": "0x51", + "type": "0x2" + }, + { + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "contractAddress": null, + "cumulativeGasUsed": "0xad1f73", + "effectiveGasPrice": "0x9b04d3d4", + "from": "0xbe19155113cbfa0b0555d6c316b18133b10b312d", + "gasUsed": "0x68852", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "status": "0x1", + "to": "0xd152f549545093347a162dce210e7293f1452150", + "transactionHash": "0x09ebf2e04dbaab1d0ad74c275b776c6398084d5558290d804063d0a6f477c61e", + "transactionIndex": "0x52", + "type": "0x2" + }, + { + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "contractAddress": null, + "cumulativeGasUsed": "0xad717b", + "effectiveGasPrice": "0x23cf3fd4", + "from": "0x4838b106fce9647bdf1e7877bf73ce8b0bad5f97", + "gasUsed": "0x5208", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "status": "0x1", + "to": "0xc6093fd9cc143f9f058938868b2df2daf9a91d28", + "transactionHash": "0xd20af84c937b6bfb1cbd0dbcde686c9bbdd6a3904257523bba99bd50e879f8a1", + "transactionIndex": "0x53", + "type": "0x2" + }, + { + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "contractAddress": null, + "cumulativeGasUsed": "0xae12d8", + "effectiveGasPrice": "0x5f6a09d4", + "from": "0x7d7e377ee0168ddb578ef10661827cf1f71a6712", + "gasUsed": "0xa15d", + "logs": [ + { + "address": "0xdac17f958d2ee523a2206206994597c13d831ec7", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x0000000000000000000000007d7e377ee0168ddb578ef10661827cf1f71a6712", + "0x000000000000000000000000a9d1e08c7793af67e9d92fe308d5697fb81d3e43" + ], + "data": "0x000000000000000000000000000000000000000000000000000000002fb9b660", + "blockNumber": "0x161bd0f", + "transactionHash": "0xef162cf825f7bd785fd8229e52972e62855b7d44dcdd3038990fd95625a9dc56", + "transactionIndex": "0x54", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x12f", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000010000000008000000000000000000000000000001000000000000000008000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000010000000000000000000000000000000000020000000000000000000000000000000100000000000000000000000000080000000000000000000000000000000000000000000000002000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "status": "0x1", + "to": "0xdac17f958d2ee523a2206206994597c13d831ec7", + "transactionHash": "0xef162cf825f7bd785fd8229e52972e62855b7d44dcdd3038990fd95625a9dc56", + "transactionIndex": "0x54", + "type": "0x2" + }, + { + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "contractAddress": null, + "cumulativeGasUsed": "0xaeb429", + "effectiveGasPrice": "0x5f6a09d4", + "from": "0xf8ae00151ae5c2b5d430ab4e9dab01a770c1fca9", + "gasUsed": "0xa151", + "logs": [ + { + "address": "0xdac17f958d2ee523a2206206994597c13d831ec7", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x000000000000000000000000f8ae00151ae5c2b5d430ab4e9dab01a770c1fca9", + "0x000000000000000000000000a9d1e08c7793af67e9d92fe308d5697fb81d3e43" + ], + "data": "0x000000000000000000000000000000000000000000000000000000001dcd6500", + "blockNumber": "0x161bd0f", + "transactionHash": "0x6f4c0ef6cf1c52b0261982d2c8bdfc3f9073dd8af06ffdd253d5b3e49d3152cf", + "transactionIndex": "0x55", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x130", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000010000000000000000000000000000000000000000000100000000010000000008000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000100000000100000000000000000080000000000000000000000000000000000000020000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "status": "0x1", + "to": "0xdac17f958d2ee523a2206206994597c13d831ec7", + "transactionHash": "0x6f4c0ef6cf1c52b0261982d2c8bdfc3f9073dd8af06ffdd253d5b3e49d3152cf", + "transactionIndex": "0x55", + "type": "0x2" + }, + { + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "contractAddress": null, + "cumulativeGasUsed": "0xaf557a", + "effectiveGasPrice": "0x5f6a09d4", + "from": "0x01884eb29311cf4fbbf59465aff0fbd123f84713", + "gasUsed": "0xa151", + "logs": [ + { + "address": "0xdac17f958d2ee523a2206206994597c13d831ec7", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x00000000000000000000000001884eb29311cf4fbbf59465aff0fbd123f84713", + "0x000000000000000000000000a9d1e08c7793af67e9d92fe308d5697fb81d3e43" + ], + "data": "0x000000000000000000000000000000000000000000000000000000000c1f0700", + "blockNumber": "0x161bd0f", + "transactionHash": "0x31109524218b0f4e2f747b5163bd532e63521b998bff69fb07fa44cb68a09298", + "transactionIndex": "0x56", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x131", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000010040000000000000000000000000000000000000000000000000010000000008000000000000000000000000000000000000000000000008010000000000000000000000000000000000000000000000000000000000000000008800000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000080000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "status": "0x1", + "to": "0xdac17f958d2ee523a2206206994597c13d831ec7", + "transactionHash": "0x31109524218b0f4e2f747b5163bd532e63521b998bff69fb07fa44cb68a09298", + "transactionIndex": "0x56", + "type": "0x2" + }, + { + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "contractAddress": null, + "cumulativeGasUsed": "0xaff6d7", + "effectiveGasPrice": "0x4fb1722d", + "from": "0xeb5fb7ce4528ee42bf2c7765ae70ca1deb2ef09c", + "gasUsed": "0xa15d", + "logs": [ + { + "address": "0xdac17f958d2ee523a2206206994597c13d831ec7", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x000000000000000000000000eb5fb7ce4528ee42bf2c7765ae70ca1deb2ef09c", + "0x000000000000000000000000203ff9f3e2af2ceb4dd62914af2bdf8ebfc53264" + ], + "data": "0x00000000000000000000000000000000000000000000000000000000b2eb3a55", + "blockNumber": "0x161bd0f", + "transactionHash": "0x74f20b477ad72c790aa0a5742daf4aeadb1fbbd0edcfd74490f4ea9ec32d9a29", + "transactionIndex": "0x57", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x132", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000010000000000000000000000000000000000008000000000000000000000002000000100000000000000000020000000080000000000000000000000000000000000000000000000002000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "status": "0x1", + "to": "0xdac17f958d2ee523a2206206994597c13d831ec7", + "transactionHash": "0x74f20b477ad72c790aa0a5742daf4aeadb1fbbd0edcfd74490f4ea9ec32d9a29", + "transactionIndex": "0x57", + "type": "0x0" + }, + { + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "contractAddress": null, + "cumulativeGasUsed": "0xb048df", + "effectiveGasPrice": "0x77359400", + "from": "0x0e71589abe9d1215535dc94c85482fe5954fdac9", + "gasUsed": "0x5208", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "status": "0x1", + "to": "0x0b7342a7af6bf6cc0ff8909ba1d70770863c74b5", + "transactionHash": "0x9cc25ee19cb4404d4bbeb96d4f9e9ceefe81ba8245f0f7c01a266900f9b4e745", + "transactionIndex": "0x58", + "type": "0x0" + }, + { + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "contractAddress": null, + "cumulativeGasUsed": "0xb2bbe6", + "effectiveGasPrice": "0x5f6a09d4", + "from": "0x21f2f76af55060df2a0fba013d4dd9d9f8ab2dea", + "gasUsed": "0x27307", + "logs": [ + { + "address": "0xbc2ecbe2195114b82f03680ed4270fa7008f3be0", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x00000000000000000000000021f2f76af55060df2a0fba013d4dd9d9f8ab2dea", + "0x00000000000000000000000071c7cbbf81ed4b571ace4ed3d1480453faf82ee1" + ], + "data": "0x00000000000000000000000000000000000000000000559cc592cfc03332c9f5", + "blockNumber": "0x161bd0f", + "transactionHash": "0x199159c1b79070e2b1aa4201c8f61902df872abd99e569714d55fcfd8db9f929", + "transactionIndex": "0x59", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x133", + "removed": false + }, + { + "address": "0xbc2ecbe2195114b82f03680ed4270fa7008f3be0", + "topics": [ + "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925", + "0x00000000000000000000000021f2f76af55060df2a0fba013d4dd9d9f8ab2dea", + "0x000000000000000000000000000000000022d473030f116ddee9f6b43ac78ba3" + ], + "data": "0xffffffffffffffffffffffffffffffffffffffffffffa511c5b23133bf3a360a", + "blockNumber": "0x161bd0f", + "transactionHash": "0x199159c1b79070e2b1aa4201c8f61902df872abd99e569714d55fcfd8db9f929", + "transactionIndex": "0x59", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x134", + "removed": false + }, + { + "address": "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x00000000000000000000000071c7cbbf81ed4b571ace4ed3d1480453faf82ee1", + "0x00000000000000000000000066a9893cc07d91d95644aedd05d03f95e1dba8af" + ], + "data": "0x00000000000000000000000000000000000000000000000006f4cc3821aa2000", + "blockNumber": "0x161bd0f", + "transactionHash": "0x199159c1b79070e2b1aa4201c8f61902df872abd99e569714d55fcfd8db9f929", + "transactionIndex": "0x59", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x135", + "removed": false + }, + { + "address": "0x71c7cbbf81ed4b571ace4ed3d1480453faf82ee1", + "topics": [ + "0x1c411e9a96e071241c2f21f7726b17ae89e3cab4c78be50e062b03a9fffbbad1" + ], + "data": "0x000000000000000000000000000000000000000000044fc279a9fb0403a48aa200000000000000000000000000000000000000000000000052f9e728c85ce95c", + "blockNumber": "0x161bd0f", + "transactionHash": "0x199159c1b79070e2b1aa4201c8f61902df872abd99e569714d55fcfd8db9f929", + "transactionIndex": "0x59", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x136", + "removed": false + }, + { + "address": "0x71c7cbbf81ed4b571ace4ed3d1480453faf82ee1", + "topics": [ + "0xd78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d822", + "0x00000000000000000000000066a9893cc07d91d95644aedd05d03f95e1dba8af", + "0x00000000000000000000000066a9893cc07d91d95644aedd05d03f95e1dba8af" + ], + "data": "0x00000000000000000000000000000000000000000000559cc592cfc03332c9f50000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006f4cc3821aa2000", + "blockNumber": "0x161bd0f", + "transactionHash": "0x199159c1b79070e2b1aa4201c8f61902df872abd99e569714d55fcfd8db9f929", + "transactionIndex": "0x59", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x137", + "removed": false + }, + { + "address": "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x00000000000000000000000066a9893cc07d91d95644aedd05d03f95e1dba8af", + "0x000000000000000000000000000000fee13a103a10d593b9ae06b3e05f2e7e1c" + ], + "data": "0x000000000000000000000000000000000000000000000000000470de4df82000", + "blockNumber": "0x161bd0f", + "transactionHash": "0x199159c1b79070e2b1aa4201c8f61902df872abd99e569714d55fcfd8db9f929", + "transactionIndex": "0x59", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x138", + "removed": false + }, + { + "address": "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2", + "topics": [ + "0x7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b65", + "0x00000000000000000000000066a9893cc07d91d95644aedd05d03f95e1dba8af" + ], + "data": "0x00000000000000000000000000000000000000000000000006f05b59d3b20000", + "blockNumber": "0x161bd0f", + "transactionHash": "0x199159c1b79070e2b1aa4201c8f61902df872abd99e569714d55fcfd8db9f929", + "transactionIndex": "0x59", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x139", + "removed": false + } + ], + "logsBloom": "0x00200000000000000000000080000000000000000000000000100000000080000000000000080000000000040000000002000000880000000000000000200000000000000000000000004808004000200000000000400800000000000000000000000000000000200000008000000000000000000000040200000010040000000000000000000000000000020020000000000000000000080000004000004000020000000000000000020000000000000000000000000000000000000000000000000002000000000000000000000000000400000000001000000002000000000010200000000000000000004000000020000000000000800000000000000000", + "status": "0x1", + "to": "0x66a9893cc07d91d95644aedd05d03f95e1dba8af", + "transactionHash": "0x199159c1b79070e2b1aa4201c8f61902df872abd99e569714d55fcfd8db9f929", + "transactionIndex": "0x59", + "type": "0x2" + }, + { + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "contractAddress": null, + "cumulativeGasUsed": "0xb887d7", + "effectiveGasPrice": "0x2824a9d9", + "from": "0x930a46935042d35cc4393ff5f9b9bf9f2e3afd09", + "gasUsed": "0x5cbf1", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "status": "0x1", + "to": "0x5b14db1af7101ec1dafa828eaa774e13161efb53", + "transactionHash": "0xb903093efd1a45a2869f91f0169c3113ccc44fc9a70268af055392b6f4a6dece", + "transactionIndex": "0x5a", + "type": "0x2" + }, + { + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "contractAddress": null, + "cumulativeGasUsed": "0xb8d9df", + "effectiveGasPrice": "0x71ebcf1c", + "from": "0x25b944a4dc81077e483bf59f618974e177627593", + "gasUsed": "0x5208", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "status": "0x1", + "to": "0x910ac37b45718838b35ba569dd926904274b682e", + "transactionHash": "0x18663217afb22c7ab2918545d837875df6d98706ac7227a8a08b4b0cc850c9d8", + "transactionIndex": "0x5b", + "type": "0x2" + }, + { + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "contractAddress": null, + "cumulativeGasUsed": "0xb98df0", + "effectiveGasPrice": "0x47094b30", + "from": "0x896cdba2559cfdeec8a2356bb36c92fab614a4cd", + "gasUsed": "0xb411", + "logs": [ + { + "address": "0xdac17f958d2ee523a2206206994597c13d831ec7", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x000000000000000000000000896cdba2559cfdeec8a2356bb36c92fab614a4cd", + "0x0000000000000000000000009ba8071de40b13c3b4807c57c2b554fb3b9e0b2b" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000004c4b400", + "blockNumber": "0x161bd0f", + "transactionHash": "0x889b19404fe581f2b094bc9d159d0d1599870ad9cf39cb330e68a2777fb91d5e", + "transactionIndex": "0x5c", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x13a", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000002000000000000000000000040000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000080000000000008000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000400", + "status": "0x1", + "to": "0xdac17f958d2ee523a2206206994597c13d831ec7", + "transactionHash": "0x889b19404fe581f2b094bc9d159d0d1599870ad9cf39cb330e68a2777fb91d5e", + "transactionIndex": "0x5c", + "type": "0x2" + }, + { + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "contractAddress": null, + "cumulativeGasUsed": "0xba4201", + "effectiveGasPrice": "0x47094b30", + "from": "0x9b03a65530b8f9584beabe8c6d64d3d4bcadd3af", + "gasUsed": "0xb411", + "logs": [ + { + "address": "0xdac17f958d2ee523a2206206994597c13d831ec7", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x0000000000000000000000009b03a65530b8f9584beabe8c6d64d3d4bcadd3af", + "0x00000000000000000000000054519c53bc21bc7739464850268f1b7d2b3317a0" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000048c10", + "blockNumber": "0x161bd0f", + "transactionHash": "0x0f6c5aec4835ffbfab3db13c5a4fdd44e96b7185df23626e8ea1cba5739c6649", + "transactionIndex": "0x5d", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x13b", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000100002000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000800000100000000000000000000000000080000000000000000000000000000080000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000", + "status": "0x1", + "to": "0xdac17f958d2ee523a2206206994597c13d831ec7", + "transactionHash": "0x0f6c5aec4835ffbfab3db13c5a4fdd44e96b7185df23626e8ea1cba5739c6649", + "transactionIndex": "0x5d", + "type": "0x2" + }, + { + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "contractAddress": null, + "cumulativeGasUsed": "0xbe80c7", + "effectiveGasPrice": "0x9b04d3d4", + "from": "0x7a88038cbfd8e54ef2ccd8dd4a7191bd5f1df68e", + "gasUsed": "0x43ec6", + "logs": [ + { + "address": "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2", + "topics": [ + "0xe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c", + "0x000000000000000000000000ad6cea45f98444a922a2b4fe96b8c90f0862d2f4" + ], + "data": "0x0000000000000000000000000000000000000000000000000000e35fa931a000", + "blockNumber": "0x161bd0f", + "transactionHash": "0x076ced5833f4b4de4e1d770f44f985c2f304eb89e781d28537c235199e2fc95a", + "transactionIndex": "0x5e", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x13c", + "removed": false + }, + { + "address": "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2", + "topics": [ + "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925", + "0x000000000000000000000000ad6cea45f98444a922a2b4fe96b8c90f0862d2f4", + "0x00000000000000000000000068b3465833fb72a70ecdf485e0e4c7bd8665fc45" + ], + "data": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", + "blockNumber": "0x161bd0f", + "transactionHash": "0x076ced5833f4b4de4e1d770f44f985c2f304eb89e781d28537c235199e2fc95a", + "transactionIndex": "0x5e", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x13d", + "removed": false + }, + { + "address": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x00000000000000000000000088e6a0c2ddd26feeb64f039a2c41296fcb3f5640", + "0x000000000000000000000000ce16f69375520ab01377ce7b88f5ba8c48f8d666" + ], + "data": "0x00000000000000000000000000000000000000000000000000000000000fe8a6", + "blockNumber": "0x161bd0f", + "transactionHash": "0x076ced5833f4b4de4e1d770f44f985c2f304eb89e781d28537c235199e2fc95a", + "transactionIndex": "0x5e", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x13e", + "removed": false + }, + { + "address": "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x000000000000000000000000ad6cea45f98444a922a2b4fe96b8c90f0862d2f4", + "0x00000000000000000000000088e6a0c2ddd26feeb64f039a2c41296fcb3f5640" + ], + "data": "0x0000000000000000000000000000000000000000000000000000e35fa931a000", + "blockNumber": "0x161bd0f", + "transactionHash": "0x076ced5833f4b4de4e1d770f44f985c2f304eb89e781d28537c235199e2fc95a", + "transactionIndex": "0x5e", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x13f", + "removed": false + }, + { + "address": "0x88e6a0c2ddd26feeb64f039a2c41296fcb3f5640", + "topics": [ + "0xc42079f94a6350d7e6235f29174924f928cc2ac818eb64fed8004e115fbcca67", + "0x00000000000000000000000068b3465833fb72a70ecdf485e0e4c7bd8665fc45", + "0x000000000000000000000000ce16f69375520ab01377ce7b88f5ba8c48f8d666" + ], + "data": "0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0175a0000000000000000000000000000000000000000000000000000e35fa931a0000000000000000000000000000000000000003c792226649b937aad676540d94000000000000000000000000000000000000000000000000051b0f41e60a05433000000000000000000000000000000000000000000000000000000000002f1bd", + "blockNumber": "0x161bd0f", + "transactionHash": "0x076ced5833f4b4de4e1d770f44f985c2f304eb89e781d28537c235199e2fc95a", + "transactionIndex": "0x5e", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x140", + "removed": false + }, + { + "address": "0x2d5d7d31f671f86c782533cc367f14109a082712", + "topics": [ + "0x8c092067e86e85e8cfbaf187202ef580cdfd7ec37fbec89191607de73ca80005", + "0x000000000000000000000000ce16f69375520ab01377ce7b88f5ba8c48f8d666", + "0xaacfff03944e6d066f4cb7307f4999b5d174d6a13a2ad4b768adb2d08a0effd6" + ], + "data": "0x00000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000016000000000000000000000000000000000000000000000000000000000000fe8a600000000000000000000000000000000000000000000000000001526874aecb70000000000000000000000007a88038cbfd8e54ef2ccd8dd4a7191bd5f1df68e0000000000000000000000000000000000000000000000000000000000000009696d6d757461626c650000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002a3078636531364636393337353532306162303133373763653742383866354241384334384638443636360000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000045553444300000000000000000000000000000000000000000000000000000000", + "blockNumber": "0x161bd0f", + "transactionHash": "0x076ced5833f4b4de4e1d770f44f985c2f304eb89e781d28537c235199e2fc95a", + "transactionIndex": "0x5e", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x141", + "removed": false + }, + { + "address": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x000000000000000000000000ce16f69375520ab01377ce7b88f5ba8c48f8d666", + "0x0000000000000000000000004f4495243837681061c4743b74b3eedf548d56a5" + ], + "data": "0x00000000000000000000000000000000000000000000000000000000000fe8a6", + "blockNumber": "0x161bd0f", + "transactionHash": "0x076ced5833f4b4de4e1d770f44f985c2f304eb89e781d28537c235199e2fc95a", + "transactionIndex": "0x5e", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x142", + "removed": false + }, + { + "address": "0x4f4495243837681061c4743b74b3eedf548d56a5", + "topics": [ + "0x7e50569d26be643bda7757722291ec66b1be66d8283474ae3fab5a98f878a7a2", + "0x000000000000000000000000ce16f69375520ab01377ce7b88f5ba8c48f8d666", + "0xaacfff03944e6d066f4cb7307f4999b5d174d6a13a2ad4b768adb2d08a0effd6" + ], + "data": "0x00000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e000000000000000000000000000000000000000000000000000000000000001400000000000000000000000000000000000000000000000000000000000000dc000000000000000000000000000000000000000000000000000000000000fe8a60000000000000000000000000000000000000000000000000000000000000009696d6d757461626c650000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002a307863653136463639333735353230616230313337376365374238386635424138433438463844363636000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c5000000000000000000000000000000000000000000000000000000000000000400000000000000000000000007a88038cbfd8e54ef2ccd8dd4a7191bd5f1df68e000000000000000000000000000000000000000000000000000000000000000700000000000000000000000000000000000000000000000000000000000000e000000000000000000000000000000000000000000000000000000000000001e0000000000000000000000000000000000000000000000000000000000000036000000000000000000000000000000000000000000000000000000000000005a0000000000000000000000000000000000000000000000000000000000000072000000000000000000000000000000000000000000000000000000000000009600000000000000000000000000000000000000000000000000000000000000ac000000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000eb466342c4d449bc9f53a865d5cb90586f4052150000000000000000000000000000000000000000000000000000000000000000000000000000000000000000eb466342c4d449bc9f53a865d5cb90586f405215000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000001200000000000000000000000000000000000000000000000000000000000000044095ea7b30000000000000000000000006c28aef8977c9b773996d0e8376d2ee379446f2fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000eb466342c4d449bc9f53a865d5cb90586f405215000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000010000000000000000000000006c28aef8977c9b773996d0e8376d2ee379446f2f000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000001e00000000000000000000000000000000000000000000000000000000000000104414bf389000000000000000000000000eb466342c4d449bc9f53a865d5cb90586f4052150000000000000000000000006de8acc0d406837030ce4dd28e7c08c5a96a30d20000000000000000000000000000000000000000000000000000000000000064000000000000000000000000ad6cea45f98444a922a2b4fe96b8c90f0862d2f400000000000000000000000000000000000000000000000000000198c7cbc2de00000000000000000000000000000000000000000000000000000000000fe77800000000000000000000000000000000000000000000000000000000000fc60c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000eb466342c4d449bc9f53a865d5cb90586f405215000000000000000000000000000000000000000000000000000000000000000500000000000000000000000000000000000000000000000000000000000000000000000000000000000000006de8acc0d406837030ce4dd28e7c08c5a96a30d2000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000001200000000000000000000000000000000000000000000000000000000000000044095ea7b30000000000000000000000006c28aef8977c9b773996d0e8376d2ee379446f2fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000006de8acc0d406837030ce4dd28e7c08c5a96a30d2000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000010000000000000000000000006c28aef8977c9b773996d0e8376d2ee379446f2f000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000001e00000000000000000000000000000000000000000000000000000000000000104414bf3890000000000000000000000006de8acc0d406837030ce4dd28e7c08c5a96a30d20000000000000000000000003a0c2ba54d6cbd3121f01b96dfd20e99d1696c9d0000000000000000000000000000000000000000000000000000000000000bb8000000000000000000000000ad6cea45f98444a922a2b4fe96b8c90f0862d2f400000000000000000000000000000000000000000000000000000198c7cbc2e000000000000000000000000000000000000000000000000000000000000fe7d80000000000000000000000000000000000000000000000001a80ae654dafe92d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000006de8acc0d406837030ce4dd28e7c08c5a96a30d2000000000000000000000000000000000000000000000000000000000000000500000000000000000000000000000000000000000000000000000000000000010000000000000000000000003a0c2ba54d6cbd3121f01b96dfd20e99d1696c9d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000242e1a7d4d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000003a0c2ba54d6cbd3121f01b96dfd20e99d1696c9d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000007a88038cbfd8e54ef2ccd8dd4a7191bd5f1df68e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee0000000000000000000000000000000000000000000000000000000000000000c509b86228a6c23bbba872ac4345d5a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000045553444300000000000000000000000000000000000000000000000000000000", + "blockNumber": "0x161bd0f", + "transactionHash": "0x076ced5833f4b4de4e1d770f44f985c2f304eb89e781d28537c235199e2fc95a", + "transactionIndex": "0x5e", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x143", + "removed": false + } + ], + "logsBloom": "0x20000000010000000001000800002000000000000000000000000000040000008000000000000000000008000000000002000001080020000000000000200000000000000000008808000008000000000000000000000000000000208000000000000000000000000080000100000000800000000000000000000010000800000000000000000000000820000000000000000001018000000000000000010000020000000000200000000000002000000000000000000000002001100008000000000002000000000200000200000000000000000000000004000100000000000010200000000000000010000200480000100000000000400000000000000000", + "status": "0x1", + "to": "0xce16f69375520ab01377ce7b88f5ba8c48f8d666", + "transactionHash": "0x076ced5833f4b4de4e1d770f44f985c2f304eb89e781d28537c235199e2fc95a", + "transactionIndex": "0x5e", + "type": "0x2" + }, + { + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "contractAddress": null, + "cumulativeGasUsed": "0xbed2cf", + "effectiveGasPrice": "0x23cf3fd4", + "from": "0x4838b106fce9647bdf1e7877bf73ce8b0bad5f97", + "gasUsed": "0x5208", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "status": "0x1", + "to": "0xc6093fd9cc143f9f058938868b2df2daf9a91d28", + "transactionHash": "0x09bee4a68da1a0248abcb8b48ef7bd15bdf4c81e2183503d5d4de68b5f558a08", + "transactionIndex": "0x5f", + "type": "0x2" + }, + { + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "contractAddress": null, + "cumulativeGasUsed": "0xc47fc1", + "effectiveGasPrice": "0x2816807a", + "from": "0xc7899ff6a3ac2ff59261bd960a8c880df06e1041", + "gasUsed": "0x5acf2", + "logs": [ + { + "address": "0x9008d19f58aabd9ed0d60971565aa8510560ab41", + "topics": [ + "0xa07a543ab8a018198e99ca0184c93fe9050a79400a0a723441f84de1d972cc17", + "0x000000000000000000000000511cc062c4257664427654b232dc636a424e4382" + ], + "data": "0x000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec70000000000000000000000006b175474e89094c44da98b954eedeac495271d0f000000000000000000000000000000000000000000000000000000003ca941af000000000000000000000000000000000000000000000037483622c9d325650b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000003881e77fb200aff93fadf0e7d0ddd256e609485aef90e429d48208cc1919083cc7511cc062c4257664427654b232dc636a424e438268a5e7ab0000000000000000", + "blockNumber": "0x161bd0f", + "transactionHash": "0xa952fb1cfa78c3a43e83a2f907b4139e485cf656abfc9cb4963eed391adba259", + "transactionIndex": "0x60", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x144", + "removed": false + }, + { + "address": "0x9008d19f58aabd9ed0d60971565aa8510560ab41", + "topics": [ + "0xa07a543ab8a018198e99ca0184c93fe9050a79400a0a723441f84de1d972cc17", + "0x000000000000000000000000ec9b9e8e450dbde63e00f6469ed43b3be463b758" + ], + "data": "0x0000000000000000000000006982508145454ce325ddbe47a25d4ec3d2311933000000000000000000000000e28b3b32b6c345a34ff64674606124dd5aceca30000000000000000000000000000000000000000000adb53acfa41aee12000000000000000000000000000000000000000000000000000008b50bca4aa290943d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000381b2cf1821e81b1a7ad30ec63cdc0107313fd569fa8eb3c68f223785113c9aeecec9b9e8e450dbde63e00f6469ed43b3be463b75868a5d5420000000000000000", + "blockNumber": "0x161bd0f", + "transactionHash": "0xa952fb1cfa78c3a43e83a2f907b4139e485cf656abfc9cb4963eed391adba259", + "transactionIndex": "0x60", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x145", + "removed": false + }, + { + "address": "0xdac17f958d2ee523a2206206994597c13d831ec7", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x000000000000000000000000511cc062c4257664427654b232dc636a424e4382", + "0x0000000000000000000000009008d19f58aabd9ed0d60971565aa8510560ab41" + ], + "data": "0x000000000000000000000000000000000000000000000000000000003ca941af", + "blockNumber": "0x161bd0f", + "transactionHash": "0xa952fb1cfa78c3a43e83a2f907b4139e485cf656abfc9cb4963eed391adba259", + "transactionIndex": "0x60", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x146", + "removed": false + }, + { + "address": "0x6982508145454ce325ddbe47a25d4ec3d2311933", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x000000000000000000000000ec9b9e8e450dbde63e00f6469ed43b3be463b758", + "0x0000000000000000000000009008d19f58aabd9ed0d60971565aa8510560ab41" + ], + "data": "0x000000000000000000000000000000000000000000adb53acfa41aee12000000", + "blockNumber": "0x161bd0f", + "transactionHash": "0xa952fb1cfa78c3a43e83a2f907b4139e485cf656abfc9cb4963eed391adba259", + "transactionIndex": "0x60", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x147", + "removed": false + }, + { + "address": "0x6982508145454ce325ddbe47a25d4ec3d2311933", + "topics": [ + "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925", + "0x000000000000000000000000ec9b9e8e450dbde63e00f6469ed43b3be463b758", + "0x000000000000000000000000c92e8bdf79f0507f65a392b0ab4667716bfe0110" + ], + "data": "0xfffffffffffffffffffffffffffffffffffffffff8cf68ca7a4acef3cb4b947e", + "blockNumber": "0x161bd0f", + "transactionHash": "0xa952fb1cfa78c3a43e83a2f907b4139e485cf656abfc9cb4963eed391adba259", + "transactionIndex": "0x60", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x148", + "removed": false + }, + { + "address": "0x6982508145454ce325ddbe47a25d4ec3d2311933", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x0000000000000000000000009008d19f58aabd9ed0d60971565aa8510560ab41", + "0x000000000000000000000000a43fe16908251ee70ef74718545e4fe6c5ccec9f" + ], + "data": "0x000000000000000000000000000000000000000000ada5ce2d2204f16ed6fa30", + "blockNumber": "0x161bd0f", + "transactionHash": "0xa952fb1cfa78c3a43e83a2f907b4139e485cf656abfc9cb4963eed391adba259", + "transactionIndex": "0x60", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x149", + "removed": false + }, + { + "address": "0x9008d19f58aabd9ed0d60971565aa8510560ab41", + "topics": [ + "0xed99827efb37016f2275f98c4bcf71c7551c75d59e9b450f79fa32e60be672c2", + "0x0000000000000000000000006982508145454ce325ddbe47a25d4ec3d2311933" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000000a9059cbb00000000000000000000000000000000000000000000000000000000", + "blockNumber": "0x161bd0f", + "transactionHash": "0xa952fb1cfa78c3a43e83a2f907b4139e485cf656abfc9cb4963eed391adba259", + "transactionIndex": "0x60", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x14a", + "removed": false + }, + { + "address": "0xe28b3b32b6c345a34ff64674606124dd5aceca30", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x0000000000000000000000006c063a6e8cd45869b5eb75291e65a3de298f3aa8", + "0x0000000000000000000000009008d19f58aabd9ed0d60971565aa8510560ab41" + ], + "data": "0x000000000000000000000000000000000000000000000008b50bca4aa29034cb", + "blockNumber": "0x161bd0f", + "transactionHash": "0xa952fb1cfa78c3a43e83a2f907b4139e485cf656abfc9cb4963eed391adba259", + "transactionIndex": "0x60", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x14b", + "removed": false + }, + { + "address": "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x000000000000000000000000a43fe16908251ee70ef74718545e4fe6c5ccec9f", + "0x0000000000000000000000006c063a6e8cd45869b5eb75291e65a3de298f3aa8" + ], + "data": "0x0000000000000000000000000000000000000000000000000724b20e5c768e2f", + "blockNumber": "0x161bd0f", + "transactionHash": "0xa952fb1cfa78c3a43e83a2f907b4139e485cf656abfc9cb4963eed391adba259", + "transactionIndex": "0x60", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x14c", + "removed": false + }, + { + "address": "0xa43fe16908251ee70ef74718545e4fe6c5ccec9f", + "topics": [ + "0x1c411e9a96e071241c2f21f7726b17ae89e3cab4c78be50e062b03a9fffbbad1" + ], + "data": "0x0000000000000000000000000000000000000023920207f1f45bc6639b70e2cc000000000000000000000000000000000000000000000177b1611de185bbb111", + "blockNumber": "0x161bd0f", + "transactionHash": "0xa952fb1cfa78c3a43e83a2f907b4139e485cf656abfc9cb4963eed391adba259", + "transactionIndex": "0x60", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x14d", + "removed": false + }, + { + "address": "0xa43fe16908251ee70ef74718545e4fe6c5ccec9f", + "topics": [ + "0xd78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d822", + "0x000000000000000000000000f3fe03cd60d1f138ebc106ce9575475100ebfc9a", + "0x0000000000000000000000006c063a6e8cd45869b5eb75291e65a3de298f3aa8" + ], + "data": "0x000000000000000000000000000000000000000000ada5ce2d2204f16ed6fa30000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000724b20e5c768e2f", + "blockNumber": "0x161bd0f", + "transactionHash": "0xa952fb1cfa78c3a43e83a2f907b4139e485cf656abfc9cb4963eed391adba259", + "transactionIndex": "0x60", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x14e", + "removed": false + }, + { + "address": "0x6c063a6e8cd45869b5eb75291e65a3de298f3aa8", + "topics": [ + "0xc42079f94a6350d7e6235f29174924f928cc2ac818eb64fed8004e115fbcca67", + "0x000000000000000000000000f3fe03cd60d1f138ebc106ce9575475100ebfc9a", + "0x0000000000000000000000009008d19f58aabd9ed0d60971565aa8510560ab41" + ], + "data": "0x0000000000000000000000000000000000000000000000000724b20e5c768e2ffffffffffffffffffffffffffffffffffffffffffffffff74af435b55d6fcb350000000000000000000000000000000000000011adffe438c588bbe56c140b16000000000000000000000000000000000000000000000174ccea0b5ceceed3d2000000000000000000000000000000000000000000000000000000000000e06b", + "blockNumber": "0x161bd0f", + "transactionHash": "0xa952fb1cfa78c3a43e83a2f907b4139e485cf656abfc9cb4963eed391adba259", + "transactionIndex": "0x60", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x14f", + "removed": false + }, + { + "address": "0x9008d19f58aabd9ed0d60971565aa8510560ab41", + "topics": [ + "0xed99827efb37016f2275f98c4bcf71c7551c75d59e9b450f79fa32e60be672c2", + "0x000000000000000000000000f3fe03cd60d1f138ebc106ce9575475100ebfc9a" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000000d41aacaf00000000000000000000000000000000000000000000000000000000", + "blockNumber": "0x161bd0f", + "transactionHash": "0xa952fb1cfa78c3a43e83a2f907b4139e485cf656abfc9cb4963eed391adba259", + "transactionIndex": "0x60", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x150", + "removed": false + }, + { + "address": "0x6b175474e89094c44da98b954eedeac495271d0f", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x0000000000000000000000009008d19f58aabd9ed0d60971565aa8510560ab41", + "0x000000000000000000000000511cc062c4257664427654b232dc636a424e4382" + ], + "data": "0x000000000000000000000000000000000000000000000037483622c9d325650b", + "blockNumber": "0x161bd0f", + "transactionHash": "0xa952fb1cfa78c3a43e83a2f907b4139e485cf656abfc9cb4963eed391adba259", + "transactionIndex": "0x60", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x151", + "removed": false + }, + { + "address": "0xe28b3b32b6c345a34ff64674606124dd5aceca30", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x0000000000000000000000009008d19f58aabd9ed0d60971565aa8510560ab41", + "0x000000000000000000000000ec9b9e8e450dbde63e00f6469ed43b3be463b758" + ], + "data": "0x000000000000000000000000000000000000000000000008b50bca4aa290943d", + "blockNumber": "0x161bd0f", + "transactionHash": "0xa952fb1cfa78c3a43e83a2f907b4139e485cf656abfc9cb4963eed391adba259", + "transactionIndex": "0x60", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x152", + "removed": false + }, + { + "address": "0x9008d19f58aabd9ed0d60971565aa8510560ab41", + "topics": [ + "0x40338ce1a7c49204f0099533b1e9a7ee0a3d261f84974ab7af36105b8c4e9db4", + "0x000000000000000000000000c7899ff6a3ac2ff59261bd960a8c880df06e1041" + ], + "data": "0x", + "blockNumber": "0x161bd0f", + "transactionHash": "0xa952fb1cfa78c3a43e83a2f907b4139e485cf656abfc9cb4963eed391adba259", + "transactionIndex": "0x60", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x153", + "removed": false + } + ], + "logsBloom": "0x00201000000000000000000080001800004000400000000000000000000000000000002000400000000000000000010102000040080020000000000000200000010400080000000800000008000001200000000104000000000000000000000010000000000000000000c000020000800000004020000000100040100008000000000000000080000080000400000400000000004000000800000042001000000200046000000000000000800080000200000000000000000100000000000000010000120008000c0000000000000000000022000000001000000000000000001010200001000000020002000400000000004000000000000000000000900000", + "status": "0x1", + "to": "0x9008d19f58aabd9ed0d60971565aa8510560ab41", + "transactionHash": "0xa952fb1cfa78c3a43e83a2f907b4139e485cf656abfc9cb4963eed391adba259", + "transactionIndex": "0x60", + "type": "0x2" + }, + { + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "contractAddress": null, + "cumulativeGasUsed": "0xc5211e", + "effectiveGasPrice": "0x479285d4", + "from": "0x2f091462316f650ca24dea5b8e90f9657af6915d", + "gasUsed": "0xa15d", + "logs": [ + { + "address": "0xdac17f958d2ee523a2206206994597c13d831ec7", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x0000000000000000000000002f091462316f650ca24dea5b8e90f9657af6915d", + "0x000000000000000000000000559432e18b281731c054cd703d4b49872be4ed53" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000021ca5c30", + "blockNumber": "0x161bd0f", + "transactionHash": "0xbfbbdc3e43e8e7a9629b2d3e2a7c5c998451d31542b92bab59a2de5aeefefea9", + "transactionIndex": "0x61", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x154", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000008000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000010000080000000000000000000000000200000000000000000000000000000000000100000000000000000000000000080000000000000000000000000000000000000000000000002000000000000000000000000000001000000000000000000000000000000000002000000000000008000000000000000000000000000000000000000", + "status": "0x1", + "to": "0xdac17f958d2ee523a2206206994597c13d831ec7", + "transactionHash": "0xbfbbdc3e43e8e7a9629b2d3e2a7c5c998451d31542b92bab59a2de5aeefefea9", + "transactionIndex": "0x61", + "type": "0x2" + }, + { + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "contractAddress": null, + "cumulativeGasUsed": "0xc8db11", + "effectiveGasPrice": "0x9b04d3d4", + "from": "0x317d2da746d1360f4c113e7962a33394db2a1a4e", + "gasUsed": "0x3b9f3", + "logs": [ + { + "address": "0x1958853a8be062dc4f401750eb233f5850f0d0d2", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x000000000000000000000000317d2da746d1360f4c113e7962a33394db2a1a4e", + "0x0000000000000000000000000000000000000000000000000000000000000000" + ], + "data": "0x0000000000000000000000000000000000000000000000004563918244f40000", + "blockNumber": "0x161bd0f", + "transactionHash": "0x929d916e4e493d4b8785a4636eb4615c2cf28d95f3a47a9559ba1bee8285f12a", + "transactionIndex": "0x62", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x155", + "removed": false + }, + { + "address": "0xbb2ea70c9e858123480642cf96acbcce1372dce1", + "topics": [ + "0x61ed099e74a97a1d7f8bb0952a88ca8b7b8ebd00c126ea04671f92a81213318a" + ], + "data": "0x000000000000000000000000173272739bd7aa6e4e214714048a9fe69945305900000000000000000000000000000000000000000000000000000fa021204bb5", + "blockNumber": "0x161bd0f", + "transactionHash": "0x929d916e4e493d4b8785a4636eb4615c2cf28d95f3a47a9559ba1bee8285f12a", + "transactionIndex": "0x62", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x156", + "removed": false + }, + { + "address": "0xbb2ea70c9e858123480642cf96acbcce1372dce1", + "topics": [ + "0x07ea52d82345d6e838192107d8fd7123d9c2ec8e916cd0aad13fd2b60db24644" + ], + "data": "0x000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000001000000000000000000000000589dedbd617e0cbcb916a9223f4d1300c294236b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000001cc3b0e39e4", + "blockNumber": "0x161bd0f", + "transactionHash": "0x929d916e4e493d4b8785a4636eb4615c2cf28d95f3a47a9559ba1bee8285f12a", + "transactionIndex": "0x62", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x157", + "removed": false + }, + { + "address": "0x1a44076050125825900e736c501f859c50fe728c", + "topics": [ + "0x1ab700d4ced0c005b164c0f789fd09fcbb0156d4c2041b8a3bfbcd961cd1567f" + ], + "data": "0x00000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000120000000000000000000000000bb2ea70c9e858123480642cf96acbcce1372dce10000000000000000000000000000000000000000000000000000000000000099010000000000000001000075950000000000000000000000001958853a8be062dc4f401750eb233f5850f0d0d200007596000000000000000000000000b4818bb69478730ef4e33cc068dd94278e2766cbab4f14bf5341bfe02be7a2603f8daf3e28b48cfb62732673ce438829f67016e7000000000000000000000000317d2da746d1360f4c113e7962a33394db2a1a4e00000000004c4b4000000000000000000000000000000000000000000000000000000000000000000000000000001600030100110100000000000000000000000000030d4000000000000000000000", + "blockNumber": "0x161bd0f", + "transactionHash": "0x929d916e4e493d4b8785a4636eb4615c2cf28d95f3a47a9559ba1bee8285f12a", + "transactionIndex": "0x62", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x158", + "removed": false + }, + { + "address": "0x1958853a8be062dc4f401750eb233f5850f0d0d2", + "topics": [ + "0x85496b760a4b7f8d66384b9df21b381f5d1b1e79f229a47aaf4c232edc2fe59a", + "0xab4f14bf5341bfe02be7a2603f8daf3e28b48cfb62732673ce438829f67016e7", + "0x000000000000000000000000317d2da746d1360f4c113e7962a33394db2a1a4e" + ], + "data": "0x00000000000000000000000000000000000000000000000000000000000075960000000000000000000000000000000000000000000000004563918244f400000000000000000000000000000000000000000000000000004563918244f40000", + "blockNumber": "0x161bd0f", + "transactionHash": "0x929d916e4e493d4b8785a4636eb4615c2cf28d95f3a47a9559ba1bee8285f12a", + "transactionIndex": "0x62", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x159", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000200000000000000000000000000000000000001000000400000000000000000000000000000000000000000000000000500000010000000042000000000000000008000000000000200000000000000000000000000000000000020000008000000000000800000000000010000000000010000000000000000000000000001000080000000000000000000000000000004000000000000000008000000000100000000000000000000000400000000440000000000800000002000000000000000080000000000000000400000000000000000020000000040000000000000000000100002000000000018000000000000000000000", + "status": "0x1", + "to": "0x1958853a8be062dc4f401750eb233f5850f0d0d2", + "transactionHash": "0x929d916e4e493d4b8785a4636eb4615c2cf28d95f3a47a9559ba1bee8285f12a", + "transactionIndex": "0x62", + "type": "0x2" + }, + { + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "contractAddress": null, + "cumulativeGasUsed": "0xc92d19", + "effectiveGasPrice": "0x23cf3fd4", + "from": "0x4838b106fce9647bdf1e7877bf73ce8b0bad5f97", + "gasUsed": "0x5208", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "status": "0x1", + "to": "0xc6093fd9cc143f9f058938868b2df2daf9a91d28", + "transactionHash": "0x854a247acfde5a5346f137d645aafce7266476f1ca57bbc56ff4d451686990d1", + "transactionIndex": "0x63", + "type": "0x2" + }, + { + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "contractAddress": null, + "cumulativeGasUsed": "0xc9bd28", + "effectiveGasPrice": "0x47094b30", + "from": "0x3908f89b206af269cd10520a39683d3e9b709a0c", + "gasUsed": "0x900f", + "logs": [ + { + "address": "0x699ccf919c1dfdfa4c374292f42cadc9899bf753", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x0000000000000000000000003908f89b206af269cd10520a39683d3e9b709a0c", + "0x0000000000000000000000008fa4103428737fc17ba6566285492b19f4a42c33" + ], + "data": "0x00000000000000000000000000000000000000000000069420a776ba5cab0000", + "blockNumber": "0x161bd0f", + "transactionHash": "0x34c4b2585880bbbfd2bd41d407ab91c487ab3ea1d740bb10051a2d94eae979b7", + "transactionIndex": "0x64", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x15a", + "removed": false + } + ], + "logsBloom": "0x04000000000000000002000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000408000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000008", + "status": "0x1", + "to": "0x699ccf919c1dfdfa4c374292f42cadc9899bf753", + "transactionHash": "0x34c4b2585880bbbfd2bd41d407ab91c487ab3ea1d740bb10051a2d94eae979b7", + "transactionIndex": "0x64", + "type": "0x2" + }, + { + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "contractAddress": null, + "cumulativeGasUsed": "0xca0f30", + "effectiveGasPrice": "0x5f6b1b44", + "from": "0x0d0707963952f2fba59dd06f2b425ace40b492fe", + "gasUsed": "0x5208", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "status": "0x1", + "to": "0x5c872bc1cdb41bc1467960e2c3b59a09cc93da05", + "transactionHash": "0x881dde515af25e26e76a9f4fd56f92172e576868db77f8d0edb19546d055a6ff", + "transactionIndex": "0x65", + "type": "0x2" + }, + { + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "contractAddress": null, + "cumulativeGasUsed": "0xcac34d", + "effectiveGasPrice": "0x3b9aca00", + "from": "0xfb19ffd1ff9316b7f5bba076ef4b78e4bbedf4e1", + "gasUsed": "0xb41d", + "logs": [ + { + "address": "0xdac17f958d2ee523a2206206994597c13d831ec7", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x000000000000000000000000fb19ffd1ff9316b7f5bba076ef4b78e4bbedf4e1", + "0x000000000000000000000000e76392fd5215a3e6bd794d7a31a3c8294c1eb18c" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000006359235", + "blockNumber": "0x161bd0f", + "transactionHash": "0x7603ff263930ac4706dfc190bfa96bba194ec04561f686515626428442cfc3bc", + "transactionIndex": "0x66", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x15b", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000004000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000010000000000000000000000000108000000000000000000000000080000000080000000000000000000000000000000000000002000000020000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000", + "status": "0x1", + "to": "0xdac17f958d2ee523a2206206994597c13d831ec7", + "transactionHash": "0x7603ff263930ac4706dfc190bfa96bba194ec04561f686515626428442cfc3bc", + "transactionIndex": "0x66", + "type": "0x0" + }, + { + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "contractAddress": null, + "cumulativeGasUsed": "0xcbba2a", + "effectiveGasPrice": "0x9aa98162", + "from": "0x3814e8720156e8259aeef2803eb3fbb3cdddc549", + "gasUsed": "0xf6dd", + "logs": [ + { + "address": "0xdac17f958d2ee523a2206206994597c13d831ec7", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x0000000000000000000000003814e8720156e8259aeef2803eb3fbb3cdddc549", + "0x0000000000000000000000008ab12dde8535538cc1759f011ebb45856f0a8acb" + ], + "data": "0x000000000000000000000000000000000000000000000000000000000aba9500", + "blockNumber": "0x161bd0f", + "transactionHash": "0x7e99dbbc2acdc35b5ba4d4d460849fb57bb4fe43e62d47b34c18a922e5b9afac", + "transactionIndex": "0x67", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x15c", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000020200000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000080000000000000000000000000000000400000000000000002008000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000001000000000000000000", + "status": "0x1", + "to": "0xdac17f958d2ee523a2206206994597c13d831ec7", + "transactionHash": "0x7e99dbbc2acdc35b5ba4d4d460849fb57bb4fe43e62d47b34c18a922e5b9afac", + "transactionIndex": "0x67", + "type": "0x2" + }, + { + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "contractAddress": null, + "cumulativeGasUsed": "0xcd68cf", + "effectiveGasPrice": "0x2c523e86", + "from": "0x2a008273cf9c4276e3f85311ebab58b7b74fa1bb", + "gasUsed": "0x1aea5", + "logs": [ + { + "address": "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2", + "topics": [ + "0xe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c", + "0x0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d" + ], + "data": "0x00000000000000000000000000000000000000000000000000740c1005bbd2a5", + "blockNumber": "0x161bd0f", + "transactionHash": "0xe84c6eb07c05b5741670c5f30aabd59a9d4da7b81069378f8db67644d00f99e6", + "transactionIndex": "0x68", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x15d", + "removed": false + }, + { + "address": "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d", + "0x0000000000000000000000006f9f435fa79e30e34f7679211904fcabc87ad924" + ], + "data": "0x00000000000000000000000000000000000000000000000000740c1005bbd2a5", + "blockNumber": "0x161bd0f", + "transactionHash": "0xe84c6eb07c05b5741670c5f30aabd59a9d4da7b81069378f8db67644d00f99e6", + "transactionIndex": "0x68", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x15e", + "removed": false + }, + { + "address": "0xe0265346277ad201609308b506e901b520150a08", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x0000000000000000000000006f9f435fa79e30e34f7679211904fcabc87ad924", + "0x0000000000000000000000002a008273cf9c4276e3f85311ebab58b7b74fa1bb" + ], + "data": "0x000000000000000000000000000000000000000000011f871af89a7da64b75da", + "blockNumber": "0x161bd0f", + "transactionHash": "0xe84c6eb07c05b5741670c5f30aabd59a9d4da7b81069378f8db67644d00f99e6", + "transactionIndex": "0x68", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x15f", + "removed": false + }, + { + "address": "0x6f9f435fa79e30e34f7679211904fcabc87ad924", + "topics": [ + "0x1c411e9a96e071241c2f21f7726b17ae89e3cab4c78be50e062b03a9fffbbad1" + ], + "data": "0x00000000000000000000000000000000000000000000000015bef6901d4bd0c500000000000000000000000000000000000000000034ea453b357851b039241d", + "blockNumber": "0x161bd0f", + "transactionHash": "0xe84c6eb07c05b5741670c5f30aabd59a9d4da7b81069378f8db67644d00f99e6", + "transactionIndex": "0x68", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x160", + "removed": false + }, + { + "address": "0x6f9f435fa79e30e34f7679211904fcabc87ad924", + "topics": [ + "0xd78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d822", + "0x0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d", + "0x0000000000000000000000002a008273cf9c4276e3f85311ebab58b7b74fa1bb" + ], + "data": "0x00000000000000000000000000000000000000000000000000740c1005bbd2a500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011f871af89a7da64b75da", + "blockNumber": "0x161bd0f", + "transactionHash": "0xe84c6eb07c05b5741670c5f30aabd59a9d4da7b81069378f8db67644d00f99e6", + "transactionIndex": "0x68", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x161", + "removed": false + } + ], + "logsBloom": "0x00200000000000000000000080000000000000000000000000011000000000000000000000000000000000000000000002000000080000000000000000000000000000000000000000000008000000a00000000000000000000000008001000010000000000000000000000008000000000000000000000000000010000000000000000000000000004000000000000000000001000000080000004000000000000000000000000004000000000000000000000000000000000000000000000000000002000000000004004000080000000000000000001000000000100020200000200000000000000000000000000000000000000000400000000001000000", + "status": "0x1", + "to": "0x7a250d5630b4cf539739df2c5dacb4c659f2488d", + "transactionHash": "0xe84c6eb07c05b5741670c5f30aabd59a9d4da7b81069378f8db67644d00f99e6", + "transactionIndex": "0x68", + "type": "0x0" + }, + { + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "contractAddress": null, + "cumulativeGasUsed": "0xcdbad7", + "effectiveGasPrice": "0x4c762185", + "from": "0xd04691fada4d78e62f74d51b77c3fab05dd5e656", + "gasUsed": "0x5208", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "status": "0x1", + "to": "0xc00313c93a1dc6befa0d4b50697ec1ef11b5967e", + "transactionHash": "0x9cc229f51b3398a71370ab7ee4d775f9fc617c40c9379b786e03070e52fcd357", + "transactionIndex": "0x69", + "type": "0x2" + }, + { + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "contractAddress": null, + "cumulativeGasUsed": "0xd07cbf", + "effectiveGasPrice": "0x2884b194", + "from": "0x051ad444b2c9a1678c7f4632885851c0c08285fd", + "gasUsed": "0x2c1e8", + "logs": [ + { + "address": "0x2e1dee213ba8d7af0934c49a23187babeaca8764", + "topics": [ + "0x7724394874fdd8ad13292ec739b441f85c6559f10dc4141b8d4c0fa4cbf55bdb" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000019afd", + "blockNumber": "0x161bd0f", + "transactionHash": "0xb9254e48c65024653a86032ce4a41636e86c7bf83014e48b869f4b4955841702", + "transactionIndex": "0x6a", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x162", + "removed": false + }, + { + "address": "0xdac17f958d2ee523a2206206994597c13d831ec7", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x000000000000000000000000051ad444b2c9a1678c7f4632885851c0c08285fd", + "0x0000000000000000000000002cffed5d56eb6a17662756ca0fdf350e732c9818" + ], + "data": "0x000000000000000000000000000000000000000000000000000000000000a601", + "blockNumber": "0x161bd0f", + "transactionHash": "0xb9254e48c65024653a86032ce4a41636e86c7bf83014e48b869f4b4955841702", + "transactionIndex": "0x6a", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x163", + "removed": false + }, + { + "address": "0x2e1dee213ba8d7af0934c49a23187babeaca8764", + "topics": [ + "0x0d3b1268ca3dbb6d3d8a0ea35f44f8f9d58cf578d732680b71b6904fb2733e0d" + ], + "data": "0x000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec7000000000000000000000000000000000000000000000000000000000000a6010000000000000000000000002cffed5d56eb6a17662756ca0fdf350e732c9818", + "blockNumber": "0x161bd0f", + "transactionHash": "0xb9254e48c65024653a86032ce4a41636e86c7bf83014e48b869f4b4955841702", + "transactionIndex": "0x6a", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x164", + "removed": false + }, + { + "address": "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x000000000000000000000000c7bbec68d12a0d1830360f8ec58fa599ba1b0e9b", + "0x0000000000000000000000002e1dee213ba8d7af0934c49a23187babeaca8764" + ], + "data": "0x000000000000000000000000000000000000000000000000000439148a7bd691", + "blockNumber": "0x161bd0f", + "transactionHash": "0xb9254e48c65024653a86032ce4a41636e86c7bf83014e48b869f4b4955841702", + "transactionIndex": "0x6a", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x165", + "removed": false + }, + { + "address": "0xdac17f958d2ee523a2206206994597c13d831ec7", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x000000000000000000000000051ad444b2c9a1678c7f4632885851c0c08285fd", + "0x000000000000000000000000c7bbec68d12a0d1830360f8ec58fa599ba1b0e9b" + ], + "data": "0x00000000000000000000000000000000000000000000000000000000004ba428", + "blockNumber": "0x161bd0f", + "transactionHash": "0xb9254e48c65024653a86032ce4a41636e86c7bf83014e48b869f4b4955841702", + "transactionIndex": "0x6a", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x166", + "removed": false + }, + { + "address": "0xc7bbec68d12a0d1830360f8ec58fa599ba1b0e9b", + "topics": [ + "0xc42079f94a6350d7e6235f29174924f928cc2ac818eb64fed8004e115fbcca67", + "0x0000000000000000000000002e1dee213ba8d7af0934c49a23187babeaca8764", + "0x0000000000000000000000002e1dee213ba8d7af0934c49a23187babeaca8764" + ], + "data": "0xfffffffffffffffffffffffffffffffffffffffffffffffffffbc6eb7584296f00000000000000000000000000000000000000000000000000000000004ba428000000000000000000000000000000000000000000043b663cda5f92b0d8ecb80000000000000000000000000000000000000000000000000f7eaa8ee01d5748fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd0e3c", + "blockNumber": "0x161bd0f", + "transactionHash": "0xb9254e48c65024653a86032ce4a41636e86c7bf83014e48b869f4b4955841702", + "transactionIndex": "0x6a", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x167", + "removed": false + }, + { + "address": "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x0000000000000000000000002e1dee213ba8d7af0934c49a23187babeaca8764", + "0x0000000000000000000000005703b683c7f928b721ca95da988d73a3299d4757" + ], + "data": "0x000000000000000000000000000000000000000000000000000439148a7bd691", + "blockNumber": "0x161bd0f", + "transactionHash": "0xb9254e48c65024653a86032ce4a41636e86c7bf83014e48b869f4b4955841702", + "transactionIndex": "0x6a", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x168", + "removed": false + }, + { + "address": "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2", + "topics": [ + "0x7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b65", + "0x0000000000000000000000005703b683c7f928b721ca95da988d73a3299d4757" + ], + "data": "0x000000000000000000000000000000000000000000000000000439148a7bd691", + "blockNumber": "0x161bd0f", + "transactionHash": "0xb9254e48c65024653a86032ce4a41636e86c7bf83014e48b869f4b4955841702", + "transactionIndex": "0x6a", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x169", + "removed": false + }, + { + "address": "0x2e1dee213ba8d7af0934c49a23187babeaca8764", + "topics": [ + "0x1bb43f2da90e35f7b0cf38521ca95a49e68eb42fac49924930a5bd73cdf7576c" + ], + "data": "0x000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec7000000000000000000000000eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee000000000000000000000000051ad444b2c9a1678c7f4632885851c0c08285fd00000000000000000000000000000000000000000000000000000000004ba428000000000000000000000000000000000000000000000000000439148a7bd691", + "blockNumber": "0x161bd0f", + "transactionHash": "0xb9254e48c65024653a86032ce4a41636e86c7bf83014e48b869f4b4955841702", + "transactionIndex": "0x6a", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x16a", + "removed": false + } + ], + "logsBloom": "0x000000000000000000010000000000001000000000000000000000000000000000000100000000000200000000000100020080800800200000800040000800008000000000000008200000088000000000000010004000000800040000000000000020000020000000000000000000000000000000000400000000100008000000002000000000000000000000002000000000000000000000000000001000000000000000000000000000800000001800000000000040000000000000000000000000022000080000000000000008000000000200000000000000020000000a0000200000000000000000000000000000000000000000000000000010000000", + "status": "0x1", + "to": "0x2e1dee213ba8d7af0934c49a23187babeaca8764", + "transactionHash": "0xb9254e48c65024653a86032ce4a41636e86c7bf83014e48b869f4b4955841702", + "transactionIndex": "0x6a", + "type": "0x2" + }, + { + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "contractAddress": null, + "cumulativeGasUsed": "0xd4b07b", + "effectiveGasPrice": "0x5f6a09d4", + "from": "0x1e8b52ea011a678a888cf7b4e7aa667170f192ca", + "gasUsed": "0x433bc", + "logs": [ + { + "address": "0x129e5915326ed86f831b0e035acda34b209633d5", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x0000000000000000000000001e8b52ea011a678a888cf7b4e7aa667170f192ca", + "0x000000000000000000000000129e5915326ed86f831b0e035acda34b209633d5" + ], + "data": "0x00000000000000000000000000000000000000000000000000000246139ca800", + "blockNumber": "0x161bd0f", + "transactionHash": "0xce3cd430b98efb93ee79ba0e04cec13aea6100a3e8d28c53a6f8d9db987e31b9", + "transactionIndex": "0x6b", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x16b", + "removed": false + }, + { + "address": "0x129e5915326ed86f831b0e035acda34b209633d5", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x0000000000000000000000001e8b52ea011a678a888cf7b4e7aa667170f192ca", + "0x0000000000000000000000009c76dd6b5b200690fc9fb061a99b0a48e9a94325" + ], + "data": "0x00000000000000000000000000000000000000000000000000002b3374a07800", + "blockNumber": "0x161bd0f", + "transactionHash": "0xce3cd430b98efb93ee79ba0e04cec13aea6100a3e8d28c53a6f8d9db987e31b9", + "transactionIndex": "0x6b", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x16c", + "removed": false + }, + { + "address": "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x0000000000000000000000009c76dd6b5b200690fc9fb061a99b0a48e9a94325", + "0x000000000000000000000000df31a70a21a1931e02033dbba7deace6c45cfd0f" + ], + "data": "0x0000000000000000000000000000000000000000000000000182bb0b0a0f607a", + "blockNumber": "0x161bd0f", + "transactionHash": "0xce3cd430b98efb93ee79ba0e04cec13aea6100a3e8d28c53a6f8d9db987e31b9", + "transactionIndex": "0x6b", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x16d", + "removed": false + }, + { + "address": "0x9c76dd6b5b200690fc9fb061a99b0a48e9a94325", + "topics": [ + "0x1c411e9a96e071241c2f21f7726b17ae89e3cab4c78be50e062b03a9fffbbad1" + ], + "data": "0x000000000000000000000000000000000000000000000000008502946d70b5db000000000000000000000000000000000000000000000004a8c264fb9fab40bd", + "blockNumber": "0x161bd0f", + "transactionHash": "0xce3cd430b98efb93ee79ba0e04cec13aea6100a3e8d28c53a6f8d9db987e31b9", + "transactionIndex": "0x6b", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x16e", + "removed": false + }, + { + "address": "0x9c76dd6b5b200690fc9fb061a99b0a48e9a94325", + "topics": [ + "0xd78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d822", + "0x000000000000000000000000df31a70a21a1931e02033dbba7deace6c45cfd0f", + "0x000000000000000000000000df31a70a21a1931e02033dbba7deace6c45cfd0f" + ], + "data": "0x00000000000000000000000000000000000000000000000000002b3374a07800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000182bb0b0a0f607a", + "blockNumber": "0x161bd0f", + "transactionHash": "0xce3cd430b98efb93ee79ba0e04cec13aea6100a3e8d28c53a6f8d9db987e31b9", + "transactionIndex": "0x6b", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x16f", + "removed": false + }, + { + "address": "0xdac17f958d2ee523a2206206994597c13d831ec7", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x000000000000000000000000c7bbec68d12a0d1830360f8ec58fa599ba1b0e9b", + "0x000000000000000000000000df31a70a21a1931e02033dbba7deace6c45cfd0f" + ], + "data": "0x000000000000000000000000000000000000000000000000000000001b0da2b6", + "blockNumber": "0x161bd0f", + "transactionHash": "0xce3cd430b98efb93ee79ba0e04cec13aea6100a3e8d28c53a6f8d9db987e31b9", + "transactionIndex": "0x6b", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x170", + "removed": false + }, + { + "address": "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x000000000000000000000000df31a70a21a1931e02033dbba7deace6c45cfd0f", + "0x000000000000000000000000c7bbec68d12a0d1830360f8ec58fa599ba1b0e9b" + ], + "data": "0x0000000000000000000000000000000000000000000000000182bb0b0a0f607a", + "blockNumber": "0x161bd0f", + "transactionHash": "0xce3cd430b98efb93ee79ba0e04cec13aea6100a3e8d28c53a6f8d9db987e31b9", + "transactionIndex": "0x6b", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x171", + "removed": false + }, + { + "address": "0xc7bbec68d12a0d1830360f8ec58fa599ba1b0e9b", + "topics": [ + "0xc42079f94a6350d7e6235f29174924f928cc2ac818eb64fed8004e115fbcca67", + "0x000000000000000000000000df31a70a21a1931e02033dbba7deace6c45cfd0f", + "0x000000000000000000000000df31a70a21a1931e02033dbba7deace6c45cfd0f" + ], + "data": "0x0000000000000000000000000000000000000000000000000182bb0b0a0f607affffffffffffffffffffffffffffffffffffffffffffffffffffffffe4f25d4a000000000000000000000000000000000000000000043b647de338a817656f730000000000000000000000000000000000000000000000000f7eaa8ee01d5748fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd0e3c", + "blockNumber": "0x161bd0f", + "transactionHash": "0xce3cd430b98efb93ee79ba0e04cec13aea6100a3e8d28c53a6f8d9db987e31b9", + "transactionIndex": "0x6b", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x172", + "removed": false + }, + { + "address": "0xdac17f958d2ee523a2206206994597c13d831ec7", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x000000000000000000000000df31a70a21a1931e02033dbba7deace6c45cfd0f", + "0x000000000000000000000000ad01c20d5886137e056775af56915de824c8fce5" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000307abd", + "blockNumber": "0x161bd0f", + "transactionHash": "0xce3cd430b98efb93ee79ba0e04cec13aea6100a3e8d28c53a6f8d9db987e31b9", + "transactionIndex": "0x6b", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x173", + "removed": false + }, + { + "address": "0xdac17f958d2ee523a2206206994597c13d831ec7", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x000000000000000000000000df31a70a21a1931e02033dbba7deace6c45cfd0f", + "0x0000000000000000000000001e8b52ea011a678a888cf7b4e7aa667170f192ca" + ], + "data": "0x000000000000000000000000000000000000000000000000000000001add27f9", + "blockNumber": "0x161bd0f", + "transactionHash": "0xce3cd430b98efb93ee79ba0e04cec13aea6100a3e8d28c53a6f8d9db987e31b9", + "transactionIndex": "0x6b", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x174", + "removed": false + } + ], + "logsBloom": "0x8020000000000000000000008000000000000000000000000000000000000000000000000000000000000000000001000300000008006000008000000000002000000000000000080000000800000020000000100000000000004000000000000001000000200000000000002000000000000000000000000008001000080000000000000000000000000101000000000000000000000008000000400090400000001000000000000000008002000002080000000002000000000000000000000000000200000800000000000000080c080000000000001000000800000000020000200000000000000000000000000000000000000000000000000000000000", + "status": "0x1", + "to": "0x0000000000001ff3684f28c67538d4d072c22734", + "transactionHash": "0xce3cd430b98efb93ee79ba0e04cec13aea6100a3e8d28c53a6f8d9db987e31b9", + "transactionIndex": "0x6b", + "type": "0x2" + }, + { + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "contractAddress": null, + "cumulativeGasUsed": "0xd6e3d6", + "effectiveGasPrice": "0x9b04d3d4", + "from": "0x97fe8b7ba616945b5031e146229b9e727830f131", + "gasUsed": "0x2335b", + "logs": [ + { + "address": "0xbe5f6232d8ed5a4057f33a28915bc1a8ab01335b", + "topics": [ + "0x44ecfc706d63e347851cfd40acfa6cf2e3a41faa3e8b460210c03938e84a91ad" + ], + "data": "0x00000000000000000000000000000000000000000000000000000000000000260000000000000000000000000000000000000000000000000000000000000001", + "blockNumber": "0x161bd0f", + "transactionHash": "0x51fdae21c680f10c68da05bb364e8a8e5e29ba09da79df1c5af9d02780e2e8e7", + "transactionIndex": "0x6c", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x175", + "removed": false + }, + { + "address": "0xbe5f6232d8ed5a4057f33a28915bc1a8ab01335b", + "topics": [ + "0x6bd5c950a8d8df17f772f5af37cb3655737899cbf903264b9795592da439661c" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", + "blockNumber": "0x161bd0f", + "transactionHash": "0x51fdae21c680f10c68da05bb364e8a8e5e29ba09da79df1c5af9d02780e2e8e7", + "transactionIndex": "0x6c", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x176", + "removed": false + }, + { + "address": "0xbe5f6232d8ed5a4057f33a28915bc1a8ab01335b", + "topics": [ + "0x4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb", + "0x000000000000000000000000864baa13e01d8f9e26549dc91b458cd15e34eb7c", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x00000000000000000000000097fe8b7ba616945b5031e146229b9e727830f131" + ], + "data": "0x000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000002600000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001", + "blockNumber": "0x161bd0f", + "transactionHash": "0x51fdae21c680f10c68da05bb364e8a8e5e29ba09da79df1c5af9d02780e2e8e7", + "transactionIndex": "0x6c", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x177", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000080000000000000010000000000000000000004000000000000000000000000000000000000040000000000080000000020000000000000000000800000000000800000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000008000000000000000000000000000000040000000000000000004000000000000000000000000000400000000001000000000000020000000000000000000000000000000000000100000000000002000000002004000", + "status": "0x1", + "to": "0x864baa13e01d8f9e26549dc91b458cd15e34eb7c", + "transactionHash": "0x51fdae21c680f10c68da05bb364e8a8e5e29ba09da79df1c5af9d02780e2e8e7", + "transactionIndex": "0x6c", + "type": "0x2" + }, + { + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "contractAddress": null, + "cumulativeGasUsed": "0xd735de", + "effectiveGasPrice": "0x23cf3fd4", + "from": "0x4838b106fce9647bdf1e7877bf73ce8b0bad5f97", + "gasUsed": "0x5208", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "status": "0x1", + "to": "0xc6093fd9cc143f9f058938868b2df2daf9a91d28", + "transactionHash": "0xd36572df8b853ee2b6cab95a988ca7065b03d00fc8b2c1411301cadf49343092", + "transactionIndex": "0x6d", + "type": "0x2" + }, + { + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "contractAddress": null, + "cumulativeGasUsed": "0xd861b8", + "effectiveGasPrice": "0x2dde0f0d", + "from": "0xe93685f3bba03016f02bd1828badd6195988d950", + "gasUsed": "0x12bda", + "logs": [ + { + "address": "0x1a44076050125825900e736c501f859c50fe728c", + "topics": [ + "0x0d87345f3d1c929caba93e1c3821b54ff3512e12b66aa3cfe54b6bcbc17e59b4" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000007683000000000000000000000000cab283e4bb527aa9b157bae7180fef19e2aaa71a0000000000000000000000000000000000000000000000000000000000001110000000000000000000000000f2b2bbdc9975cf680324de62a30a31bc3ab8a4d536e7b0f7494af14e92055752ad7efac6d5d62065da6b772b7bb98d7127e4495d", + "blockNumber": "0x161bd0f", + "transactionHash": "0x5cbc170410348d6fdc873705eff0fe6e22f82115fa66a032cacaf14b00d3fd73", + "transactionIndex": "0x6e", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x178", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000", + "status": "0x1", + "to": "0xc02ab410f0734efa3f14628780e6e695156024c2", + "transactionHash": "0x5cbc170410348d6fdc873705eff0fe6e22f82115fa66a032cacaf14b00d3fd73", + "transactionIndex": "0x6e", + "type": "0x2" + }, + { + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "contractAddress": null, + "cumulativeGasUsed": "0xd95895", + "effectiveGasPrice": "0x6b55cbd4", + "from": "0xe6767c337d50e51241257059d58508fd8fba91a1", + "gasUsed": "0xf6dd", + "logs": [ + { + "address": "0xdac17f958d2ee523a2206206994597c13d831ec7", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x000000000000000000000000e6767c337d50e51241257059d58508fd8fba91a1", + "0x0000000000000000000000003732c23fe8422fa1dc7759e2f34515de41bf268b" + ], + "data": "0x000000000000000000000000000000000000000000000000000000001c9c3800", + "blockNumber": "0x161bd0f", + "transactionHash": "0x885b570f51838e21d3ee6f7635b9019859c9dc284b61a10e597428521779a514", + "transactionIndex": "0x6f", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x179", + "removed": false + } + ], + "logsBloom": "0x10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800010000000000000000000000000000100000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000010800000000000000000000000000000000000000000000000000000000000000000100000400000000000000000000080000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "status": "0x1", + "to": "0xdac17f958d2ee523a2206206994597c13d831ec7", + "transactionHash": "0x885b570f51838e21d3ee6f7635b9019859c9dc284b61a10e597428521779a514", + "transactionIndex": "0x6f", + "type": "0x2" + }, + { + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "contractAddress": null, + "cumulativeGasUsed": "0xd9aa9d", + "effectiveGasPrice": "0x47094b30", + "from": "0x4cf7d1f09d73d05538b701c2ccd071298569b18b", + "gasUsed": "0x5208", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "status": "0x1", + "to": "0x4cf7d1f09d73d05538b701c2ccd071298569b18b", + "transactionHash": "0x6dc512f88c8907da511443523a0ce1f9d83b9590fb25470b40a5c7dabecb9cb0", + "transactionIndex": "0x70", + "type": "0x2" + }, + { + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "contractAddress": null, + "cumulativeGasUsed": "0xd9fca5", + "effectiveGasPrice": "0x47094b30", + "from": "0x1a6bf7734a87c9fb327162eed8cff7b1982e7e5e", + "gasUsed": "0x5208", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "status": "0x1", + "to": "0xdc3a5dcd4d2299bdd8a9345169029088f4b0e0c2", + "transactionHash": "0x293dfc29e6d24ec039d5da89eca31f7874ab0f73485242b24472991bbc4a81ac", + "transactionIndex": "0x71", + "type": "0x2" + }, + { + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "contractAddress": null, + "cumulativeGasUsed": "0xda4ead", + "effectiveGasPrice": "0x47094b30", + "from": "0xa2d9d10acece8512a99a3048c88fa274ba59e2cf", + "gasUsed": "0x5208", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "status": "0x1", + "to": "0xf051193691fc11600e1228ca27ede7663c4de189", + "transactionHash": "0x3199c465ca839a4561420e9ae7a22247c0faf5f3b8b22675e9d280871b018d5e", + "transactionIndex": "0x72", + "type": "0x2" + }, + { + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "contractAddress": null, + "cumulativeGasUsed": "0xdaa0b5", + "effectiveGasPrice": "0x47094b30", + "from": "0xb0bfdffa1c53912c9d6a1f7250d2bac0f6fb0373", + "gasUsed": "0x5208", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "status": "0x1", + "to": "0x02ca45d242a1e2cd80f860a265e42a048c67b712", + "transactionHash": "0x6cb4300ccb17a849f57e47bf2e950fc2ff88e1536d19e413b23ff3c321c11e8c", + "transactionIndex": "0x73", + "type": "0x2" + }, + { + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "contractAddress": null, + "cumulativeGasUsed": "0xdaf2bd", + "effectiveGasPrice": "0x47094b30", + "from": "0x9502954fba7ca26abdefc7ef4c9dd59b8b54f03f", + "gasUsed": "0x5208", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "status": "0x1", + "to": "0x9502954fba7ca26abdefc7ef4c9dd59b8b54f03f", + "transactionHash": "0x5dd9f8f7e9b3c71c4e4c00191f358b82e5438d0ee6bbbe841d945089e2df8cba", + "transactionIndex": "0x74", + "type": "0x2" + }, + { + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "contractAddress": null, + "cumulativeGasUsed": "0xde6533", + "effectiveGasPrice": "0x26ca3054", + "from": "0x173449e23b2768042a7acbbf00a2b32d262b3a4b", + "gasUsed": "0x37276", + "logs": [ + { + "address": "0x0000000071727de22e5e9d8baf0edac6f37da032", + "topics": [ + "0xbb47ee3e183a558b1a2ff0874b079f3fc5478b7454eacf2bfc5af2ff5878f972" + ], + "data": "0x", + "blockNumber": "0x161bd0f", + "transactionHash": "0x319241083fbbdfd49447eca57464f0d22354bf4e0b14185af1db71dad3699358", + "transactionIndex": "0x75", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x17a", + "removed": false + }, + { + "address": "0xdac17f958d2ee523a2206206994597c13d831ec7", + "topics": [ + "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925", + "0x000000000000000000000000f49178c8e3cd7cfc025f68fc80c9775d979ac3a7", + "0x0000000000000000000000007d3201fa7a85c0a5f9fa1c0c6b9d0b784368d2ac" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000180d14", + "blockNumber": "0x161bd0f", + "transactionHash": "0x319241083fbbdfd49447eca57464f0d22354bf4e0b14185af1db71dad3699358", + "transactionIndex": "0x75", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x17b", + "removed": false + }, + { + "address": "0xdac17f958d2ee523a2206206994597c13d831ec7", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x000000000000000000000000f49178c8e3cd7cfc025f68fc80c9775d979ac3a7", + "0x0000000000000000000000000e8495d95270c688473e88f02bb3101a3f7cec73" + ], + "data": "0x000000000000000000000000000000000000000000000000000000000f60c480", + "blockNumber": "0x161bd0f", + "transactionHash": "0x319241083fbbdfd49447eca57464f0d22354bf4e0b14185af1db71dad3699358", + "transactionIndex": "0x75", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x17c", + "removed": false + }, + { + "address": "0xdac17f958d2ee523a2206206994597c13d831ec7", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x000000000000000000000000f49178c8e3cd7cfc025f68fc80c9775d979ac3a7", + "0x000000000000000000000000480a825bed6cdba9da81cc01faacd12166761dec" + ], + "data": "0x00000000000000000000000000000000000000000000000000000000000e98ea", + "blockNumber": "0x161bd0f", + "transactionHash": "0x319241083fbbdfd49447eca57464f0d22354bf4e0b14185af1db71dad3699358", + "transactionIndex": "0x75", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x17d", + "removed": false + }, + { + "address": "0x7d3201fa7a85c0a5f9fa1c0c6b9d0b784368d2ac", + "topics": [ + "0xcb8558ee10b3b50e33dd316be9756fc9f947c4637d5d9c4f66f02ddc3ba4e38f" + ], + "data": "0x8bf3446f7338755e02cef70ec4a972cd5780c19ab71c20ea59bef3fb7a1c7633000000000000000000000000f49178c8e3cd7cfc025f68fc80c9775d979ac3a7000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec700000000000000000000000000000000000000000000000000000000000e98ea", + "blockNumber": "0x161bd0f", + "transactionHash": "0x319241083fbbdfd49447eca57464f0d22354bf4e0b14185af1db71dad3699358", + "transactionIndex": "0x75", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x17e", + "removed": false + }, + { + "address": "0x0000000071727de22e5e9d8baf0edac6f37da032", + "topics": [ + "0x49628fd1471006c1482da88028e9ce4dbb080b815c9b0344d39e5a8e6ec1419f", + "0x8bf3446f7338755e02cef70ec4a972cd5780c19ab71c20ea59bef3fb7a1c7633", + "0x000000000000000000000000f49178c8e3cd7cfc025f68fc80c9775d979ac3a7", + "0x0000000000000000000000007d3201fa7a85c0a5f9fa1c0c6b9d0b784368d2ac" + ], + "data": "0x000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000967696a805dc000000000000000000000000000000000000000000000000000000000003d1fb", + "blockNumber": "0x161bd0f", + "transactionHash": "0x319241083fbbdfd49447eca57464f0d22354bf4e0b14185af1db71dad3699358", + "transactionIndex": "0x75", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x17f", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000010000000000000000000000000008000000000004000000010000018000200000000000000000020000200000000000000000000000000008000000020040000000000000000000000000000000000000000800000000010000000000000000000000000000000010000000000040000000010000000000000000000000000000000000000000800000100000020000020020001000400480000000000200000000000000000002000000000000010002000000400011000000000000000000000000004000000000000400000010000000000000000000000000000000000000000800000000000000001080", + "status": "0x1", + "to": "0x0000000071727de22e5e9d8baf0edac6f37da032", + "transactionHash": "0x319241083fbbdfd49447eca57464f0d22354bf4e0b14185af1db71dad3699358", + "transactionIndex": "0x75", + "type": "0x4" + }, + { + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "contractAddress": null, + "cumulativeGasUsed": "0xdf5867", + "effectiveGasPrice": "0x5f6a09d4", + "from": "0xfcc46ea12aec1f62c3d58803fe94aa8f768f2636", + "gasUsed": "0xf334", + "logs": [ + { + "address": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x000000000000000000000000fcc46ea12aec1f62c3d58803fe94aa8f768f2636", + "0x000000000000000000000000552549d39c22c1e55e4f91318d41f5422d204c4e" + ], + "data": "0x00000000000000000000000000000000000000000000000000000000017d7840", + "blockNumber": "0x161bd0f", + "transactionHash": "0x971833c61c63e80e90a69edadce6cf052ed708c0b89a52714e3de65174e501d2", + "transactionIndex": "0x76", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x180", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000008000008000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000010800000080000000000000000000000000200000000000000000000000000000000000000000000000000000000002000000001000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000", + "status": "0x1", + "to": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48", + "transactionHash": "0x971833c61c63e80e90a69edadce6cf052ed708c0b89a52714e3de65174e501d2", + "transactionIndex": "0x76", + "type": "0x2" + }, + { + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "contractAddress": null, + "cumulativeGasUsed": "0xe03c90", + "effectiveGasPrice": "0x6458e75e", + "from": "0x52f1e1001c28f6807530470b67a83a348040e31b", + "gasUsed": "0xe429", + "logs": [ + { + "address": "0xdac17f958d2ee523a2206206994597c13d831ec7", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x00000000000000000000000052f1e1001c28f6807530470b67a83a348040e31b", + "0x00000000000000000000000043e19182b2f68d8a83d56a7304665ce0ea3fb3e3" + ], + "data": "0x000000000000000000000000000000000000000000000000000000002e4686e2", + "blockNumber": "0x161bd0f", + "transactionHash": "0x9ea42c0b70a8feb646683ef29551a4f1e35aa5c52ff4e92d41885fddc062eee3", + "transactionIndex": "0x77", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x181", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000800000000000000008000000000000000000000000000000000000000000000000000000400000040000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000080000000000000000000000002000010000000000000000002000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000", + "status": "0x1", + "to": "0xdac17f958d2ee523a2206206994597c13d831ec7", + "transactionHash": "0x9ea42c0b70a8feb646683ef29551a4f1e35aa5c52ff4e92d41885fddc062eee3", + "transactionIndex": "0x77", + "type": "0x2" + }, + { + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "contractAddress": null, + "cumulativeGasUsed": "0xe08e98", + "effectiveGasPrice": "0x419ca4d4", + "from": "0x242ad3fac0e6820f50ce520117fe8774f21b5f9f", + "gasUsed": "0x5208", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "status": "0x1", + "to": "0x094d77550b654f1fceb33f405ae0415c4cbcb0f1", + "transactionHash": "0xa7e4c653d8b4852c0fc96106be40980b66a3bb81a9730f4c5bdd8010851faabd", + "transactionIndex": "0x78", + "type": "0x2" + }, + { + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "contractAddress": null, + "cumulativeGasUsed": "0xe317d0", + "effectiveGasPrice": "0x5f6a09d4", + "from": "0x9f256a5703a493cac86a09fa84473517ace6ca81", + "gasUsed": "0x28938", + "logs": [ + { + "address": "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2", + "topics": [ + "0xe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c", + "0x0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d" + ], + "data": "0x000000000000000000000000000000000000000000000000006983fe1dd44000", + "blockNumber": "0x161bd0f", + "transactionHash": "0xc68ff18171aa3f4a21462af5e370a7e4a4daf55fdd111ec4ffb45b4b64bc1185", + "transactionIndex": "0x79", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x182", + "removed": false + }, + { + "address": "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d", + "0x000000000000000000000000b6cec3a5828923385bcdedf12044f1c98bd729ac" + ], + "data": "0x000000000000000000000000000000000000000000000000006983fe1dd44000", + "blockNumber": "0x161bd0f", + "transactionHash": "0xc68ff18171aa3f4a21462af5e370a7e4a4daf55fdd111ec4ffb45b4b64bc1185", + "transactionIndex": "0x79", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x183", + "removed": false + }, + { + "address": "0xfa417cd491632620a582851b07abf7e3447bba71", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x000000000000000000000000b6cec3a5828923385bcdedf12044f1c98bd729ac", + "0x0000000000000000000000009f256a5703a493cac86a09fa84473517ace6ca81" + ], + "data": "0x0000000000000000000000000000000000000000000000000006badea95a749b", + "blockNumber": "0x161bd0f", + "transactionHash": "0xc68ff18171aa3f4a21462af5e370a7e4a4daf55fdd111ec4ffb45b4b64bc1185", + "transactionIndex": "0x79", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x184", + "removed": false + }, + { + "address": "0xb6cec3a5828923385bcdedf12044f1c98bd729ac", + "topics": [ + "0x1c411e9a96e071241c2f21f7726b17ae89e3cab4c78be50e062b03a9fffbbad1" + ], + "data": "0x0000000000000000000000000000000000000000000000002acfedc0715b20fe00000000000000000000000000000000000000000000000002b6654bfd1fad09", + "blockNumber": "0x161bd0f", + "transactionHash": "0xc68ff18171aa3f4a21462af5e370a7e4a4daf55fdd111ec4ffb45b4b64bc1185", + "transactionIndex": "0x79", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x185", + "removed": false + }, + { + "address": "0xb6cec3a5828923385bcdedf12044f1c98bd729ac", + "topics": [ + "0xd78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d822", + "0x0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d", + "0x0000000000000000000000009f256a5703a493cac86a09fa84473517ace6ca81" + ], + "data": "0x000000000000000000000000000000000000000000000000006983fe1dd44000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006badea95a749b", + "blockNumber": "0x161bd0f", + "transactionHash": "0xc68ff18171aa3f4a21462af5e370a7e4a4daf55fdd111ec4ffb45b4b64bc1185", + "transactionIndex": "0x79", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x186", + "removed": false + } + ], + "logsBloom": "0x00200000000000000000000080000000000002000000000000010000000000000000000000000000000010000000000442000000080000000000000000000000000000000000000000000008000000200000000000000000000000008000000000000000000000000000000000000000000828000000000800000010000000000000000000000000004000000000000000000001000000080000004000200010000000000000000000000000000000000000000040000000000000000000000000000002000000000000000000000000000000000000001000000000000020000000200000000000002000000000000000000000000000400000000000000000", + "status": "0x1", + "to": "0x055c48651015cf5b21599a4ded8c402fdc718058", + "transactionHash": "0xc68ff18171aa3f4a21462af5e370a7e4a4daf55fdd111ec4ffb45b4b64bc1185", + "transactionIndex": "0x79", + "type": "0x2" + }, + { + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "blockNumber": "0x161bd0f", + "contractAddress": null, + "cumulativeGasUsed": "0xe36e2f", + "effectiveGasPrice": "0x23cf3fd4", + "from": "0x4838b106fce9647bdf1e7877bf73ce8b0bad5f97", + "gasUsed": "0x565f", + "logs": [ + { + "address": "0x388c818ca8b9251b393131c08a736a67ccb19297", + "topics": [ + "0x27f12abfe35860a9a927b465bb3d4a9c23c8428174b83f278fe45ed7b4da2662" + ], + "data": "0x000000000000000000000000000000000000000000000000012bf92aae0c2e70", + "blockNumber": "0x161bd0f", + "transactionHash": "0x2c522d01183e9ed70caaf75c940ba9908d573cfc9996b3e7adc90313798279c8", + "transactionIndex": "0x7a", + "blockHash": "0xfb8c980d1da1a75e68c2ea4d55cb88d62dedbbb5eaf69df8fe337e9f6922b73a", + "logIndex": "0x187", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000100004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000", + "status": "0x1", + "to": "0x388c818ca8b9251b393131c08a736a67ccb19297", + "transactionHash": "0x2c522d01183e9ed70caaf75c940ba9908d573cfc9996b3e7adc90313798279c8", + "transactionIndex": "0x7a", + "type": "0x2" + } +] From a7882553ccf3b3a40e49123bf5c3f11e6ba219e6 Mon Sep 17 00:00:00 2001 From: Alexandru Vasile Date: Thu, 21 Aug 2025 17:24:51 +0000 Subject: [PATCH 07/67] revive: Add requests_hash to the ethereum block for decoding Signed-off-by: Alexandru Vasile --- substrate/frame/revive/src/evm/api/rpc_types_gen.rs | 3 +++ 1 file changed, 3 insertions(+) diff --git a/substrate/frame/revive/src/evm/api/rpc_types_gen.rs b/substrate/frame/revive/src/evm/api/rpc_types_gen.rs index 5010519c0c103..21ced52be9df9 100644 --- a/substrate/frame/revive/src/evm/api/rpc_types_gen.rs +++ b/substrate/frame/revive/src/evm/api/rpc_types_gen.rs @@ -116,6 +116,9 @@ pub struct Block { /// Parent Beacon Block Root #[serde(rename = "parentBeaconBlockRoot", skip_serializing_if = "Option::is_none")] pub parent_beacon_block_root: Option, + /// Requests hash. + #[serde(rename = "requestsHash", skip_serializing_if = "Option::is_none")] + pub requests_hash: Option, /// Parent block hash #[serde(rename = "parentHash")] pub parent_hash: H256, From b7d3de58768d432dc487e94b0bccd27dc427bc27 Mon Sep 17 00:00:00 2001 From: Alexandru Vasile Date: Fri, 22 Aug 2025 11:40:05 +0000 Subject: [PATCH 08/67] revive: Fetch the type of the transaction Signed-off-by: Alexandru Vasile --- .../frame/revive/src/evm/api/rlp_codec.rs | 38 +++++++++++++++---- 1 file changed, 31 insertions(+), 7 deletions(-) diff --git a/substrate/frame/revive/src/evm/api/rlp_codec.rs b/substrate/frame/revive/src/evm/api/rlp_codec.rs index 67cdf9045ce8c..6ba744053e850 100644 --- a/substrate/frame/revive/src/evm/api/rlp_codec.rs +++ b/substrate/frame/revive/src/evm/api/rlp_codec.rs @@ -96,6 +96,31 @@ impl TransactionSigned { s.out().to_vec() } + /// Encode the Ethereum transaction type into bytes. + /// + /// This is needed to encode the receipts. + pub fn signed_type(&self) -> Vec { + let mut s = rlp::RlpStream::new(); + + match &self { + TransactionSigned::Transaction4844Signed(tx) => { + s.append(&tx.transaction_4844_unsigned.r#type.value()); + }, + TransactionSigned::Transaction1559Signed(tx) => { + s.append(&tx.transaction_1559_unsigned.r#type.value()); + }, + TransactionSigned::Transaction2930Signed(tx) => { + s.append(&tx.transaction_2930_unsigned.r#type.value()); + }, + TransactionSigned::Transaction7702Signed(tx) => { + s.append(&tx.transaction_7702_unsigned.r#type.value()); + }, + TransactionSigned::TransactionLegacySigned(_) => {}, + }; + + s.out().to_vec() + } + /// Decode the Ethereum transaction from bytes. pub fn decode(data: &[u8]) -> Result { if data.len() < 1 { @@ -214,9 +239,9 @@ impl Encodable for SetCodeAuthorizationEntry { s.append(&self.chain_id); s.append(&self.address); s.append(&self.nonce); + s.append(&self.y_parity); s.append(&self.r); s.append(&self.s); - s.append(&self.y_parity); } } @@ -226,9 +251,9 @@ impl Decodable for SetCodeAuthorizationEntry { chain_id: rlp.val_at(0)?, address: rlp.val_at(1)?, nonce: rlp.val_at(2)?, - r: rlp.val_at(3)?, - s: rlp.val_at(4)?, - y_parity: rlp.val_at(5)?, + y_parity: rlp.val_at(3)?, + r: rlp.val_at(4)?, + s: rlp.val_at(5)?, }) } } @@ -453,12 +478,12 @@ impl Encodable for Transaction7702Unsigned { s.append(&self.nonce); s.append(&self.max_priority_fee_per_gas); s.append(&self.max_fee_per_gas); - s.append(&self.gas_price); s.append(&self.gas); s.append(&self.to); s.append(&self.value); s.append(&self.input.0); s.append_list(&self.access_list); + s.append_list(&self.auth_list); } } @@ -466,12 +491,11 @@ impl Encodable for Transaction7702Unsigned { impl Encodable for Transaction7702Signed { fn rlp_append(&self, s: &mut rlp::RlpStream) { let tx = &self.transaction_7702_unsigned; - s.begin_list(14); + s.begin_list(13); s.append(&tx.chain_id); s.append(&tx.nonce); s.append(&tx.max_priority_fee_per_gas); s.append(&tx.max_fee_per_gas); - s.append(&tx.gas_price); s.append(&tx.gas); s.append(&tx.to); s.append(&tx.value); From 20d8b0b1dea96f8c9e2fbd8ceebcaa3f2cbf879d Mon Sep 17 00:00:00 2001 From: Alexandru Vasile Date: Fri, 22 Aug 2025 11:40:34 +0000 Subject: [PATCH 09/67] revive/exec: Fall back to system block hashes Signed-off-by: Alexandru Vasile --- substrate/frame/revive/src/exec.rs | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/substrate/frame/revive/src/exec.rs b/substrate/frame/revive/src/exec.rs index 42f218066c6c1..8d7a103240856 100644 --- a/substrate/frame/revive/src/exec.rs +++ b/substrate/frame/revive/src/exec.rs @@ -1599,7 +1599,14 @@ where if block_number < self.block_number.saturating_sub(256u32.into()) { return None; } - crate::Pallet::::eth_block_hash_from_number(block_number.into()) + + // Fallback to the system block hash for older blocks + // 256 entries should suffice for all use cases, this mostly ensures + // our benchmarks are passing. + match crate::Pallet::::eth_block_hash_from_number(block_number.into()) { + Some(hash) => Some(hash), + None => Some(System::::block_hash(&block_number).into()), + } } } From aab1cd911ce0c8d15f7e8680eacb2a991d453b5b Mon Sep 17 00:00:00 2001 From: Alexandru Vasile Date: Fri, 22 Aug 2025 11:41:51 +0000 Subject: [PATCH 10/67] revive/tests: Add tests with real block hashes Signed-off-by: Alexandru Vasile --- substrate/frame/revive/Cargo.toml | 2 +- substrate/frame/revive/src/evm/block_hash.rs | 121 ++++++++++++++++++- 2 files changed, 120 insertions(+), 3 deletions(-) diff --git a/substrate/frame/revive/Cargo.toml b/substrate/frame/revive/Cargo.toml index 1a3329b8ec76f..6a546b4442ea9 100644 --- a/substrate/frame/revive/Cargo.toml +++ b/substrate/frame/revive/Cargo.toml @@ -19,7 +19,7 @@ targets = ["x86_64-unknown-linux-gnu"] [dependencies] alloy-consensus = { workspace = true, default-features = false } alloy-core = { workspace = true, features = ["sol-types"] } -alloy-primitives = { workspace = true, default-features = false } +alloy-primitives = { workspace = true, features = ["rlp"] } codec = { features = ["derive", "max-encoded-len"], workspace = true } derive_more = { workspace = true, features = ["from", "try_into"] } environmental = { workspace = true } diff --git a/substrate/frame/revive/src/evm/block_hash.rs b/substrate/frame/revive/src/evm/block_hash.rs index ebd8c57ebce07..d68f5ac5fb1d7 100644 --- a/substrate/frame/revive/src/evm/block_hash.rs +++ b/substrate/frame/revive/src/evm/block_hash.rs @@ -192,8 +192,10 @@ impl Block { let receipt_bloom = receipt.bloom_slow(); - let mut encoded_receipt = - Vec::with_capacity(receipt.rlp_encoded_length_with_bloom(&receipt_bloom)); + // Receipt encoding must be prefixed with the rlp(transaction type). + let mut encoded_receipt = signed_transaction.signed_type(); + encoded_receipt + .reserve(encoded_receipt.len() + receipt.rlp_encoded_length_with_bloom(&receipt_bloom)); receipt.rlp_encode_with_bloom(&receipt_bloom, &mut encoded_receipt); TransactionProcessed { @@ -258,6 +260,47 @@ mod test { use super::*; use crate::evm::{Block, ReceiptInfo}; + fn manual_trie_root_compute(encoded: Vec>) -> H256 { + use alloy_consensus::private::alloy_trie::{HashBuilder, Nibbles}; + + // Helper function to RLP-encode a transaction index + fn rlp_encode_index(index: u64) -> Vec { + let mut buffer = Vec::new(); + alloy_consensus::private::alloy_rlp::Encodable::encode(&index, &mut buffer); + buffer + } + + let mut hash_builder = HashBuilder::default(); + + let mut pairs: Vec<_> = encoded + .into_iter() + .enumerate() + .map(|(index, tx)| { + let key = rlp_encode_index(index as u64); + let mut nibbles = Nibbles::new(); + for byte in key.iter() { + // Split each byte into two nibbles (high and low 4 bits) + let high_nibble = (byte >> 4) & 0x0F; + let low_nibble = byte & 0x0F; + nibbles.push(high_nibble); + nibbles.push(low_nibble); + } + + (nibbles, tx) + }) + .collect(); + // Sort by nibble key. + // This gives the right lexicographical order to add leaves to the trie. + pairs.sort_by(|x, y| x.0.cmp(&y.0)); + + for (key, tx) in pairs { + hash_builder.add_leaf(key, &tx); + } + + let tx_root_hash = hash_builder.root(); + tx_root_hash.0.into() + } + #[test] fn ensure_identical_hashes() { // curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getBlockByNumber","params":["0x161bd0f", true],"id":1}' -H "Content-Type: application/json" https://ethereum-rpc.publicnode.com | jq .result @@ -272,5 +315,79 @@ mod test { let receipts: Vec = serde_json::from_str(&json).unwrap(); assert_eq!(block.header_hash(), receipts[0].block_hash); + + let tx = match &block.transactions { + HashesOrTransactionInfos::TransactionInfos(infos) => infos.clone(), + _ => panic!("Expected full tx body"), + }; + + let encoded_tx: Vec<_> = tx + .clone() + .into_iter() + .map(|tx| tx.transaction_signed.signed_payload()) + .collect(); + + let transaction_details: Vec<_> = tx + .into_iter() + .zip(receipts.into_iter()) + .map(|(tx_info, receipt_info)| { + if tx_info.transaction_index != receipt_info.transaction_index { + panic!("Transaction and receipt index do not match"); + } + + // println!("EthLog: {}", receipt_info.logs.len()); + // for log in &receipt_info.logs { + // println!(" topics: {}", log.topics.len()); + // println!(" data: {}", log.data.clone().map(|data| data.0.len()).unwrap_or(0)); + // } + + TransactionDetails { + signed_transaction: tx_info.transaction_signed, + logs: receipt_info + .logs + .into_iter() + .map(|log| EventLog { + contract: log.address.into(), + data: log.data.unwrap_or_default().0, + topics: log.topics, + }) + .collect(), + success: receipt_info.status.unwrap_or_default() == 1.into(), + gas_used: receipt_info.gas_used.as_u64().into(), + } + }) + .collect(); + + // The block hash would differ here because we don't take into account + // the ommers and other fields from the substrate perspective. + // However, the state roots must be identical. + let built_block = Block::build( + transaction_details, + block.number.into(), + block.parent_hash.into(), + block.timestamp.into(), + block.miner.into(), + Default::default(), + block.base_fee_per_gas.unwrap_or_default().into(), + ) + .1; + + assert_eq!(built_block.gas_used, block.gas_used); + assert_eq!(built_block.logs_bloom, block.logs_bloom); + // We are using the tx root for state root. + assert_eq!(built_block.state_root, block.transactions_root); + + let manual_hash = manual_trie_root_compute(encoded_tx.clone()); + println!("Manual Hash: {:?}", manual_hash); + println!("Built block Hash: {:?}", built_block.transactions_root); + println!("Real Block Tx Hash: {:?}", block.transactions_root); + + // This double checks the compute logic. + assert_eq!(manual_hash, block.transactions_root); + // This ensures we can compute the same transaction root as Ethereum. + assert_eq!(block.transactions_root, built_block.transactions_root); + + // Double check the receipts roots. + assert_eq!(built_block.receipts_root, block.receipts_root); } } From e54b3ea458125eeff7c0d3d054147c77757c5e04 Mon Sep 17 00:00:00 2001 From: Alexandru Vasile Date: Fri, 22 Aug 2025 11:42:59 +0000 Subject: [PATCH 11/67] revive/tests: Remove commented code Signed-off-by: Alexandru Vasile --- substrate/frame/revive/src/evm/block_hash.rs | 6 ------ 1 file changed, 6 deletions(-) diff --git a/substrate/frame/revive/src/evm/block_hash.rs b/substrate/frame/revive/src/evm/block_hash.rs index d68f5ac5fb1d7..95b08f7884ef0 100644 --- a/substrate/frame/revive/src/evm/block_hash.rs +++ b/substrate/frame/revive/src/evm/block_hash.rs @@ -335,12 +335,6 @@ mod test { panic!("Transaction and receipt index do not match"); } - // println!("EthLog: {}", receipt_info.logs.len()); - // for log in &receipt_info.logs { - // println!(" topics: {}", log.topics.len()); - // println!(" data: {}", log.data.clone().map(|data| data.0.len()).unwrap_or(0)); - // } - TransactionDetails { signed_transaction: tx_info.transaction_signed, logs: receipt_info From f58a71b18de19440b631988a02533c35cf17bdc2 Mon Sep 17 00:00:00 2001 From: Alexandru Vasile Date: Tue, 26 Aug 2025 12:30:22 +0000 Subject: [PATCH 12/67] revive/fix: Fix 7702 encoding to valid addresses Signed-off-by: Alexandru Vasile --- substrate/frame/revive/src/evm/api/rpc_types.rs | 6 +++--- substrate/frame/revive/src/evm/api/rpc_types_gen.rs | 6 +++++- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/substrate/frame/revive/src/evm/api/rpc_types.rs b/substrate/frame/revive/src/evm/api/rpc_types.rs index 09b9f67271504..a5a68ad5a906e 100644 --- a/substrate/frame/revive/src/evm/api/rpc_types.rs +++ b/substrate/frame/revive/src/evm/api/rpc_types.rs @@ -289,7 +289,7 @@ impl GenericTransaction { input: tx.input.into(), nonce: Some(tx.nonce), value: Some(tx.value), - to: tx.to, + to: Some(tx.to), gas: Some(tx.gas), gas_price: Some( base_gas_price @@ -366,7 +366,7 @@ impl GenericTransaction { input: self.input.to_bytes(), nonce: self.nonce.unwrap_or_default(), value: self.value.unwrap_or_default(), - to: self.to, + to: self.to.unwrap_or_default(), gas: self.gas.unwrap_or_default(), gas_price: self.max_fee_per_gas.unwrap_or_default(), max_fee_per_gas: self.max_fee_per_gas.unwrap_or_default(), @@ -432,7 +432,7 @@ fn from_unsigned_works_for_7702() { input: Bytes::from(vec![1u8]), nonce: U256::from(1), value: U256::from(1), - to: Some(H160::zero()), + to: H160::zero(), gas: U256::from(1), gas_price: U256::from(20), max_fee_per_gas: U256::from(20), diff --git a/substrate/frame/revive/src/evm/api/rpc_types_gen.rs b/substrate/frame/revive/src/evm/api/rpc_types_gen.rs index 438bad4d2b943..132befef1c884 100644 --- a/substrate/frame/revive/src/evm/api/rpc_types_gen.rs +++ b/substrate/frame/revive/src/evm/api/rpc_types_gen.rs @@ -740,7 +740,11 @@ pub struct Transaction7702Unsigned { /// nonce pub nonce: U256, /// to address - pub to: Option
, + /// + /// # Note + /// + /// Extracted from eip-7702: `Note, this implies a null destination is not valid.` + pub to: Address, /// type pub r#type: TypeEip7702, /// value From a8fe6b25aad0317f21e3982420674b689e988838 Mon Sep 17 00:00:00 2001 From: Alexandru Vasile Date: Tue, 26 Aug 2025 12:31:41 +0000 Subject: [PATCH 13/67] revive/tests: Remove debug code Signed-off-by: Alexandru Vasile --- substrate/frame/revive/src/evm/block_hash.rs | 37 -------------------- 1 file changed, 37 deletions(-) diff --git a/substrate/frame/revive/src/evm/block_hash.rs b/substrate/frame/revive/src/evm/block_hash.rs index 63abc74817d30..08c5a1ed33a08 100644 --- a/substrate/frame/revive/src/evm/block_hash.rs +++ b/substrate/frame/revive/src/evm/block_hash.rs @@ -343,43 +343,6 @@ mod test { panic!("Transaction and receipt index do not match"); } - use crate::TransactionSigned; - let transaction_encoded = tx_info.transaction_signed.signed_payload(); - - pub fn decode(data: &[u8]) -> Result { - use crate::evm::*; - - if data.len() < 1 { - return Err(rlp::DecoderError::RlpIsTooShort); - } - match data[0] { - TYPE_EIP2930 => { - println!(" TYPE_EIP2930"); - rlp::decode::(&data[1..]).map(Into::into) - }, - TYPE_EIP1559 => { - println!(" TYPE_EIP1559"); - - rlp::decode::(&data[1..]).map(Into::into) - }, - TYPE_EIP4844 => { - println!(" TYPE_EIP4844"); - rlp::decode::(&data[1..]).map(Into::into) - }, - TYPE_EIP7702 => { - println!(" TYPE_EIP7702"); - rlp::decode::(&data[1..]).map(Into::into) - }, - _ => { - println!(" LEGACY"); - rlp::decode::(data).map(Into::into) - }, - } - } - - let generic_transaction = decode(&transaction_encoded).unwrap(); - println!(" Can DECODE!\n"); - TransactionDetails { transaction_encoded: tx_info.transaction_signed.signed_payload(), logs: receipt_info From 9e2b928b54168271df858f6993305cb2e3731d00 Mon Sep 17 00:00:00 2001 From: Alexandru Vasile Date: Tue, 26 Aug 2025 13:11:54 +0000 Subject: [PATCH 14/67] revive: Compute the diff of space for HB incremental build Signed-off-by: Alexandru Vasile --- substrate/frame/revive/src/evm/block_hash.rs | 68 ++++++++++++++++++++ 1 file changed, 68 insertions(+) diff --git a/substrate/frame/revive/src/evm/block_hash.rs b/substrate/frame/revive/src/evm/block_hash.rs index 08c5a1ed33a08..2b7d952b142cf 100644 --- a/substrate/frame/revive/src/evm/block_hash.rs +++ b/substrate/frame/revive/src/evm/block_hash.rs @@ -267,6 +267,7 @@ impl Block { mod test { use super::*; use crate::evm::{Block, ReceiptInfo}; + use alloy_consensus::private::alloy_trie::{HashBuilder, Nibbles}; fn manual_trie_root_compute(encoded: Vec>) -> H256 { use alloy_consensus::private::alloy_trie::{HashBuilder, Nibbles}; @@ -382,6 +383,73 @@ mod test { assert_eq!(built_block.receipts_root, block.receipts_root); let manual_hash = manual_trie_root_compute(encoded_tx.clone()); + + // struct IncrementalHashBuilder { + // hash_builder: HashBuilder, + // index: usize, + + // // RLP encoded. + // first_transaction: Vec, + // // Prev transaction RLP encoded. + // prev_transaction: Vec, + // } + + // impl IncrementalHashBuilder { + // pub fn new(first_transaction: Vec) -> Self { + // Self { + // hash_builder: HashBuilder::default(), + // index: 0, + // first_transaction, + // prev_transaction: Vec::new(), + // } + // } + + // pub fn add_transaction(&mut self) { + + // } + // } + + // Incremental HashBuildup: + pub const fn adjust_index_for_rlp(i: usize, len: usize) -> usize { + if i > 0x7f { + i + } else if i == 0x7f || i + 1 == len { + 0 + } else { + i + 1 + } + } + + let mut hb = HashBuilder::default(); + let items_len = encoded_tx.len(); + + let mut total_size = 0; + for enc in &encoded_tx { + total_size += enc.len(); + } + + for i in 0..items_len { + let index = adjust_index_for_rlp(i, items_len); + println!("For tx={} using index={}", i, index); + + let index_buffer = alloy_consensus::private::alloy_rlp::encode_fixed_size(&index); + + // value_buffer.clear(); + // encode(&items[index], &mut value_buffer); + + hb.add_leaf(Nibbles::unpack(&index_buffer), &encoded_tx[index]); + + // Each mask in these vectors holds a u16. + let masks_len = (hb.state_masks.len() + hb.tree_masks.len() + hb.hash_masks.len()) * 2; + let size = hb.key.len() + + hb.value.as_slice().len() + + hb.stack.len() * 33 + + masks_len + hb.rlp_buf.len(); + + println!(" HB size is: {:?} vs total {:?}", size, total_size); + } + let manual_hash_2: H256 = hb.root().0.into(); + println!("Manual Hash: {:?}", manual_hash); println!("Built block Hash: {:?}", built_block.transactions_root); println!("Real Block Tx Hash: {:?}", block.transactions_root); From a441265909ec075206984f12569ebc03ea982b93 Mon Sep 17 00:00:00 2001 From: Alexandru Vasile Date: Tue, 26 Aug 2025 16:06:20 +0000 Subject: [PATCH 15/67] revive: Add incremental hash builder Signed-off-by: Alexandru Vasile --- substrate/frame/revive/src/evm/block_hash.rs | 82 ++++++++++++++------ 1 file changed, 58 insertions(+), 24 deletions(-) diff --git a/substrate/frame/revive/src/evm/block_hash.rs b/substrate/frame/revive/src/evm/block_hash.rs index 2b7d952b142cf..ae2ec315fa843 100644 --- a/substrate/frame/revive/src/evm/block_hash.rs +++ b/substrate/frame/revive/src/evm/block_hash.rs @@ -384,30 +384,55 @@ mod test { let manual_hash = manual_trie_root_compute(encoded_tx.clone()); - // struct IncrementalHashBuilder { - // hash_builder: HashBuilder, - // index: usize, - - // // RLP encoded. - // first_transaction: Vec, - // // Prev transaction RLP encoded. - // prev_transaction: Vec, - // } - - // impl IncrementalHashBuilder { - // pub fn new(first_transaction: Vec) -> Self { - // Self { - // hash_builder: HashBuilder::default(), - // index: 0, - // first_transaction, - // prev_transaction: Vec::new(), - // } - // } - - // pub fn add_transaction(&mut self) { - - // } - // } + struct IncrementalHashBuilder { + hash_builder: HashBuilder, + index: usize, + + // RLP encoded. + first_transaction: Option>, + } + + impl IncrementalHashBuilder { + pub fn new(first_transaction: Vec) -> Self { + Self { + hash_builder: HashBuilder::default(), + index: 1, + first_transaction: Some(first_transaction), + } + } + + pub fn add_transaction(&mut self, transaction: Vec) { + if self.index == 0x7f { + // Pushing the previous item since we are expecting the index + // to be index + 1 in the sorted order. + if let Some(tx) = self.first_transaction.take() { + let zero: usize = 0; + let rlp_index = + alloy_consensus::private::alloy_rlp::encode_fixed_size(&zero); + + self.hash_builder.add_leaf(Nibbles::unpack(&rlp_index), &tx); + } + } + + let rlp_index = alloy_consensus::private::alloy_rlp::encode_fixed_size(&self.index); + self.hash_builder.add_leaf(Nibbles::unpack(&rlp_index), &transaction); + + self.index += 1; + } + + pub fn finish(&mut self) -> H256 { + // We have less than 0x7f items to the trie. Therefore, the + // first transaction index is the last one in the sorted vector + // by rlp encoding of the index. + if let Some(tx) = self.first_transaction.take() { + let zero: usize = 0; + let rlp_index = alloy_consensus::private::alloy_rlp::encode_fixed_size(&zero); + self.hash_builder.add_leaf(Nibbles::unpack(&rlp_index), &tx); + } + + self.hash_builder.root().0.into() + } + } // Incremental HashBuildup: pub const fn adjust_index_for_rlp(i: usize, len: usize) -> usize { @@ -450,10 +475,19 @@ mod test { } let manual_hash_2: H256 = hb.root().0.into(); + let mut builder = IncrementalHashBuilder::new(encoded_tx[0].clone()); + for tx in encoded_tx.iter().skip(1) { + builder.add_transaction(tx.clone()) + } + let incremental_hash = builder.finish(); + println!("Incremental hash: {:?}", incremental_hash); + println!("Manual Hash: {:?}", manual_hash); println!("Built block Hash: {:?}", built_block.transactions_root); println!("Real Block Tx Hash: {:?}", block.transactions_root); + assert_eq!(incremental_hash, block.transactions_root); + // This double checks the compute logic. assert_eq!(manual_hash, block.transactions_root); // This ensures we can compute the same transaction root as Ethereum. From 9383ef8b04d95b7743b8888aef7cbbe292c38a18 Mon Sep 17 00:00:00 2001 From: Alexandru Vasile Date: Wed, 27 Aug 2025 09:55:03 +0000 Subject: [PATCH 16/67] frame: Remove commented code Signed-off-by: Alexandru Vasile --- substrate/frame/revive/src/evm/block_hash.rs | 11 +---------- 1 file changed, 1 insertion(+), 10 deletions(-) diff --git a/substrate/frame/revive/src/evm/block_hash.rs b/substrate/frame/revive/src/evm/block_hash.rs index ae2ec315fa843..792046d733b97 100644 --- a/substrate/frame/revive/src/evm/block_hash.rs +++ b/substrate/frame/revive/src/evm/block_hash.rs @@ -239,16 +239,7 @@ impl Block { extra_data: self.extra_data.clone().0.into(), mix_hash: self.mix_hash.0.into(), nonce: self.nonce.0.into(), - // <<<<<<< HEAD - // base_fee_per_gas: self.base_fee_per_gas.map(|gas| gas.as_u64()), - // withdrawals_root: self.withdrawals_root.map(|root| root.0.into()), - // blob_gas_used: self.blob_gas_used.map(|gas| gas.as_u64()), - // excess_blob_gas: self.excess_blob_gas.map(|gas| gas.as_u64()), - // parent_beacon_block_root: self.parent_beacon_block_root.map(|root| root.0.into()), - // requests_hash: self.requests_hash.map(|hash| hash.0.into()), - - // difficulty: Default::default(), - // ======= + base_fee_per_gas: Some(self.base_fee_per_gas.as_u64()), withdrawals_root: Some(self.withdrawals_root.0.into()), blob_gas_used: Some(self.blob_gas_used.as_u64()), From 816375a8b8119a173d158569d5e7368ecf4bf875 Mon Sep 17 00:00:00 2001 From: Alexandru Vasile Date: Wed, 27 Aug 2025 10:03:48 +0000 Subject: [PATCH 17/67] revive: Introduce incremental hash builder Signed-off-by: Alexandru Vasile --- substrate/frame/revive/src/evm/block_hash.rs | 197 ++++++++----------- 1 file changed, 81 insertions(+), 116 deletions(-) diff --git a/substrate/frame/revive/src/evm/block_hash.rs b/substrate/frame/revive/src/evm/block_hash.rs index 792046d733b97..a764ea2ddb400 100644 --- a/substrate/frame/revive/src/evm/block_hash.rs +++ b/substrate/frame/revive/src/evm/block_hash.rs @@ -22,7 +22,10 @@ use crate::evm::{ }; use alloc::{vec, vec::Vec}; -use alloy_consensus::RlpEncodableReceipt; +use alloy_consensus::{ + private::alloy_trie::{HashBuilder, Nibbles}, + RlpEncodableReceipt, +}; use alloy_core::primitives::{bytes::BufMut, Bloom, FixedBytes, Log, B256}; use codec::{Decode, Encode}; use frame_support::weights::Weight; @@ -254,6 +257,59 @@ impl Block { } } +/// Build the Trie Root Hash incrementally. +pub struct IncrementalHashBuilder { + hash_builder: HashBuilder, + index: usize, + + // RLP encoded. + first_transaction: Option>, +} + +impl IncrementalHashBuilder { + /// Construct the hash builder from the first transaction. + pub fn new(first_transaction: Vec) -> Self { + Self { + hash_builder: HashBuilder::default(), + index: 1, + first_transaction: Some(first_transaction), + } + } + + /// Add a transaction to the hash builder. + pub fn add_transaction(&mut self, transaction: Vec) { + if self.index == 0x7f { + // Pushing the previous item since we are expecting the index + // to be index + 1 in the sorted order. + if let Some(tx) = self.first_transaction.take() { + let zero: usize = 0; + let rlp_index = alloy_consensus::private::alloy_rlp::encode_fixed_size(&zero); + + self.hash_builder.add_leaf(Nibbles::unpack(&rlp_index), &tx); + } + } + + let rlp_index = alloy_consensus::private::alloy_rlp::encode_fixed_size(&self.index); + self.hash_builder.add_leaf(Nibbles::unpack(&rlp_index), &transaction); + + self.index += 1; + } + + /// Build the trie root hash. + pub fn finish(&mut self) -> H256 { + // We have less than 0x7f items to the trie. Therefore, the + // first transaction index is the last one in the sorted vector + // by rlp encoding of the index. + if let Some(tx) = self.first_transaction.take() { + let zero: usize = 0; + let rlp_index = alloy_consensus::private::alloy_rlp::encode_fixed_size(&zero); + self.hash_builder.add_leaf(Nibbles::unpack(&rlp_index), &tx); + } + + self.hash_builder.root().0.into() + } +} + #[cfg(test)] mod test { use super::*; @@ -263,42 +319,37 @@ mod test { fn manual_trie_root_compute(encoded: Vec>) -> H256 { use alloy_consensus::private::alloy_trie::{HashBuilder, Nibbles}; - // Helper function to RLP-encode a transaction index - fn rlp_encode_index(index: u64) -> Vec { - let mut buffer = Vec::new(); - alloy_consensus::private::alloy_rlp::Encodable::encode(&index, &mut buffer); - buffer + pub const fn adjust_index_for_rlp(i: usize, len: usize) -> usize { + if i > 0x7f { + i + } else if i == 0x7f || i + 1 == len { + 0 + } else { + i + 1 + } } - let mut hash_builder = HashBuilder::default(); + let mut hb = HashBuilder::default(); - let mut pairs: Vec<_> = encoded - .into_iter() - .enumerate() - .map(|(index, tx)| { - let key = rlp_encode_index(index as u64); - let mut nibbles = Nibbles::new(); - for byte in key.iter() { - // Split each byte into two nibbles (high and low 4 bits) - let high_nibble = (byte >> 4) & 0x0F; - let low_nibble = byte & 0x0F; - nibbles.push(high_nibble); - nibbles.push(low_nibble); - } + let items_len = encoded.len(); + for i in 0..items_len { + let index = adjust_index_for_rlp(i, items_len); + println!("For tx={} using index={}", i, index); - (nibbles, tx) - }) - .collect(); - // Sort by nibble key. - // This gives the right lexicographical order to add leaves to the trie. - pairs.sort_by(|x, y| x.0.cmp(&y.0)); + let index_buffer = alloy_consensus::private::alloy_rlp::encode_fixed_size(&index); + hb.add_leaf(Nibbles::unpack(&index_buffer), &encoded[index]); - for (key, tx) in pairs { - hash_builder.add_leaf(key, &tx); + // Each mask in these vectors holds a u16. + let masks_len = (hb.state_masks.len() + hb.tree_masks.len() + hb.hash_masks.len()) * 2; + let size = hb.key.len() + + hb.value.as_slice().len() + + hb.stack.len() * 33 + + masks_len + hb.rlp_buf.len(); + + println!(" HB size is: {size}"); } - let tx_root_hash = hash_builder.root(); - tx_root_hash.0.into() + hb.root().0.into() } #[test] @@ -375,97 +426,11 @@ mod test { let manual_hash = manual_trie_root_compute(encoded_tx.clone()); - struct IncrementalHashBuilder { - hash_builder: HashBuilder, - index: usize, - - // RLP encoded. - first_transaction: Option>, - } - - impl IncrementalHashBuilder { - pub fn new(first_transaction: Vec) -> Self { - Self { - hash_builder: HashBuilder::default(), - index: 1, - first_transaction: Some(first_transaction), - } - } - - pub fn add_transaction(&mut self, transaction: Vec) { - if self.index == 0x7f { - // Pushing the previous item since we are expecting the index - // to be index + 1 in the sorted order. - if let Some(tx) = self.first_transaction.take() { - let zero: usize = 0; - let rlp_index = - alloy_consensus::private::alloy_rlp::encode_fixed_size(&zero); - - self.hash_builder.add_leaf(Nibbles::unpack(&rlp_index), &tx); - } - } - - let rlp_index = alloy_consensus::private::alloy_rlp::encode_fixed_size(&self.index); - self.hash_builder.add_leaf(Nibbles::unpack(&rlp_index), &transaction); - - self.index += 1; - } - - pub fn finish(&mut self) -> H256 { - // We have less than 0x7f items to the trie. Therefore, the - // first transaction index is the last one in the sorted vector - // by rlp encoding of the index. - if let Some(tx) = self.first_transaction.take() { - let zero: usize = 0; - let rlp_index = alloy_consensus::private::alloy_rlp::encode_fixed_size(&zero); - self.hash_builder.add_leaf(Nibbles::unpack(&rlp_index), &tx); - } - - self.hash_builder.root().0.into() - } - } - - // Incremental HashBuildup: - pub const fn adjust_index_for_rlp(i: usize, len: usize) -> usize { - if i > 0x7f { - i - } else if i == 0x7f || i + 1 == len { - 0 - } else { - i + 1 - } - } - - let mut hb = HashBuilder::default(); - let items_len = encoded_tx.len(); - let mut total_size = 0; for enc in &encoded_tx { total_size += enc.len(); } - for i in 0..items_len { - let index = adjust_index_for_rlp(i, items_len); - println!("For tx={} using index={}", i, index); - - let index_buffer = alloy_consensus::private::alloy_rlp::encode_fixed_size(&index); - - // value_buffer.clear(); - // encode(&items[index], &mut value_buffer); - - hb.add_leaf(Nibbles::unpack(&index_buffer), &encoded_tx[index]); - - // Each mask in these vectors holds a u16. - let masks_len = (hb.state_masks.len() + hb.tree_masks.len() + hb.hash_masks.len()) * 2; - let size = hb.key.len() + - hb.value.as_slice().len() + - hb.stack.len() * 33 + - masks_len + hb.rlp_buf.len(); - - println!(" HB size is: {:?} vs total {:?}", size, total_size); - } - let manual_hash_2: H256 = hb.root().0.into(); - let mut builder = IncrementalHashBuilder::new(encoded_tx[0].clone()); for tx in encoded_tx.iter().skip(1) { builder.add_transaction(tx.clone()) From 49a7a24207ba5aa9e3924c91c79fac69708a5f24 Mon Sep 17 00:00:00 2001 From: Alexandru Vasile Date: Wed, 27 Aug 2025 10:07:41 +0000 Subject: [PATCH 18/67] revive: Make the hash builder API generic Signed-off-by: Alexandru Vasile --- substrate/frame/revive/src/evm/block_hash.rs | 39 +++++++++----------- 1 file changed, 18 insertions(+), 21 deletions(-) diff --git a/substrate/frame/revive/src/evm/block_hash.rs b/substrate/frame/revive/src/evm/block_hash.rs index a764ea2ddb400..5361329815252 100644 --- a/substrate/frame/revive/src/evm/block_hash.rs +++ b/substrate/frame/revive/src/evm/block_hash.rs @@ -259,38 +259,35 @@ impl Block { /// Build the Trie Root Hash incrementally. pub struct IncrementalHashBuilder { + /// Hash builder. hash_builder: HashBuilder, + /// The index of the current value. index: usize, - - // RLP encoded. - first_transaction: Option>, + /// RLP encoded value. + first_value: Option>, } impl IncrementalHashBuilder { - /// Construct the hash builder from the first transaction. - pub fn new(first_transaction: Vec) -> Self { - Self { - hash_builder: HashBuilder::default(), - index: 1, - first_transaction: Some(first_transaction), - } + /// Construct the hash builder from the first value. + pub fn new(first_value: Vec) -> Self { + Self { hash_builder: HashBuilder::default(), index: 1, first_value: Some(first_value) } } - /// Add a transaction to the hash builder. - pub fn add_transaction(&mut self, transaction: Vec) { + /// Add a new value to the hash builder. + pub fn add_value(&mut self, value: Vec) { if self.index == 0x7f { // Pushing the previous item since we are expecting the index // to be index + 1 in the sorted order. - if let Some(tx) = self.first_transaction.take() { + if let Some(encoded_value) = self.first_value.take() { let zero: usize = 0; let rlp_index = alloy_consensus::private::alloy_rlp::encode_fixed_size(&zero); - self.hash_builder.add_leaf(Nibbles::unpack(&rlp_index), &tx); + self.hash_builder.add_leaf(Nibbles::unpack(&rlp_index), &encoded_value); } } let rlp_index = alloy_consensus::private::alloy_rlp::encode_fixed_size(&self.index); - self.hash_builder.add_leaf(Nibbles::unpack(&rlp_index), &transaction); + self.hash_builder.add_leaf(Nibbles::unpack(&rlp_index), &value); self.index += 1; } @@ -298,12 +295,12 @@ impl IncrementalHashBuilder { /// Build the trie root hash. pub fn finish(&mut self) -> H256 { // We have less than 0x7f items to the trie. Therefore, the - // first transaction index is the last one in the sorted vector + // first value index is the last one in the sorted vector // by rlp encoding of the index. - if let Some(tx) = self.first_transaction.take() { + if let Some(encoded_value) = self.first_value.take() { let zero: usize = 0; let rlp_index = alloy_consensus::private::alloy_rlp::encode_fixed_size(&zero); - self.hash_builder.add_leaf(Nibbles::unpack(&rlp_index), &tx); + self.hash_builder.add_leaf(Nibbles::unpack(&rlp_index), &encoded_value); } self.hash_builder.root().0.into() @@ -314,7 +311,6 @@ impl IncrementalHashBuilder { mod test { use super::*; use crate::evm::{Block, ReceiptInfo}; - use alloy_consensus::private::alloy_trie::{HashBuilder, Nibbles}; fn manual_trie_root_compute(encoded: Vec>) -> H256 { use alloy_consensus::private::alloy_trie::{HashBuilder, Nibbles}; @@ -430,14 +426,15 @@ mod test { for enc in &encoded_tx { total_size += enc.len(); } + println!("Total size used by transactions: {:?}", total_size); let mut builder = IncrementalHashBuilder::new(encoded_tx[0].clone()); for tx in encoded_tx.iter().skip(1) { - builder.add_transaction(tx.clone()) + builder.add_value(tx.clone()) } let incremental_hash = builder.finish(); - println!("Incremental hash: {:?}", incremental_hash); + println!("Incremental hash: {:?}", incremental_hash); println!("Manual Hash: {:?}", manual_hash); println!("Built block Hash: {:?}", built_block.transactions_root); println!("Real Block Tx Hash: {:?}", block.transactions_root); From 6c8520a28e884bb7cda657c3667f9478227be1e1 Mon Sep 17 00:00:00 2001 From: Alexandru Vasile Date: Wed, 27 Aug 2025 10:53:37 +0000 Subject: [PATCH 19/67] revive: Implement an incremental block builder approach Signed-off-by: Alexandru Vasile --- substrate/frame/revive/src/evm/block_hash.rs | 167 ++++++++++++++++++- 1 file changed, 162 insertions(+), 5 deletions(-) diff --git a/substrate/frame/revive/src/evm/block_hash.rs b/substrate/frame/revive/src/evm/block_hash.rs index 5361329815252..9a3efa30ab774 100644 --- a/substrate/frame/revive/src/evm/block_hash.rs +++ b/substrate/frame/revive/src/evm/block_hash.rs @@ -219,7 +219,7 @@ impl Block { } /// Compute the ETH header hash. - fn header_hash(&self) -> H256 { + pub fn header_hash(&self) -> H256 { // Note: Cap the gas limit to u64::MAX. // In practice, it should be impossible to fill a u64::MAX gas limit // of an either Ethereum or Substrate block. @@ -307,6 +307,144 @@ impl IncrementalHashBuilder { } } +/// Ethereum block builder. +pub struct EthereumBlockBuilder { + transaction_root_builder: Option, + receipts_root_builder: Option, + + gas_used: U256, + tx_hashes: Vec, + + logs_bloom: Bloom, + gas_info: Vec, +} + +impl EthereumBlockBuilder { + /// Constructs a new [`EthereumBlockBuilder`]. + pub fn new() -> Self { + Self { + transaction_root_builder: None, + receipts_root_builder: None, + gas_used: U256::zero(), + tx_hashes: Vec::new(), + logs_bloom: Bloom::default(), + gas_info: Vec::new(), + } + } + + /// Process a single transaction at a time. + pub fn process_transaction(&mut self, detail: TransactionDetails) { + let TransactionDetails { transaction_encoded, logs, success, gas_used } = detail; + + let tx_hash = H256(keccak_256(&transaction_encoded)); + self.tx_hashes.push(tx_hash); + + let transaction_type = Self::extract_transaction_type(transaction_encoded.as_slice()); + Self::add_builder_value(&mut self.transaction_root_builder, transaction_encoded); + + let logs = logs + .into_iter() + .map(|log| { + Log::new_unchecked( + log.contract.0.into(), + log.topics.into_iter().map(|h| FixedBytes::from(h.0)).collect::>(), + log.data.into(), + ) + }) + .collect(); + + self.gas_used = self.gas_used.saturating_add(gas_used.ref_time().into()); + self.gas_info.push(ReceiptGasInfo { gas_used: gas_used.ref_time().into() }); + + let receipt = alloy_consensus::Receipt { + status: success.into(), + cumulative_gas_used: self.gas_used.as_u64(), + logs, + }; + + let receipt_bloom = receipt.bloom_slow(); + self.logs_bloom.accrue_bloom(&receipt_bloom); + + // Receipt encoding must be prefixed with the rlp(transaction type). + let mut encoded_receipt = transaction_type; + let encoded_len = encoded_receipt + .len() + .saturating_add(receipt.rlp_encoded_length_with_bloom(&receipt_bloom)); + encoded_receipt.reserve(encoded_len); + + receipt.rlp_encode_with_bloom(&receipt_bloom, &mut encoded_receipt); + + Self::add_builder_value(&mut self.receipts_root_builder, encoded_receipt); + } + + /// Build the ethereum block from provided data. + pub fn build( + mut self, + block_number: U256, + parent_hash: H256, + timestamp: U256, + block_author: H160, + gas_limit: U256, + ) -> (H256, Block, Vec) { + let transactions_root = Self::compute_trie_root(&mut self.transaction_root_builder); + let receipts_root = Self::compute_trie_root(&mut self.receipts_root_builder); + + println!("Incr hash tx: {:?}", transactions_root); + println!("Incr hash receipts: {:?}", receipts_root); + + let block = Block { + number: block_number, + parent_hash, + timestamp, + miner: block_author, + gas_limit, + + state_root: transactions_root.clone(), + transactions_root, + receipts_root, + + gas_used: self.gas_used, + + logs_bloom: (*self.logs_bloom.data()).into(), + transactions: HashesOrTransactionInfos::Hashes(self.tx_hashes), + + ..Default::default() + }; + + let block_hash = block.header_hash(); + (block_hash, block, self.gas_info) + } + + fn compute_trie_root(builder: &mut Option) -> H256 { + match builder { + Some(builder) => builder.finish(), + None => HashBuilder::default().root().0.into(), + } + } + + fn add_builder_value(builder: &mut Option, value: Vec) { + match builder { + Some(builder) => builder.add_value(value), + None => *builder = Some(IncrementalHashBuilder::new(value)), + } + } + + fn extract_transaction_type(transaction_encoded: &[u8]) -> Vec { + // The transaction type is the first byte from the encoded transaction, + // when the transaction is not legacy. For legacy transactions, there's + // no type defined. Additionally, the RLP encoding of the tx type byte + // is identical to the tx type. + transaction_encoded + .first() + .cloned() + .map(|first| match first { + TYPE_EIP2930 | TYPE_EIP1559 | TYPE_EIP4844 | TYPE_EIP7702 => vec![first], + _ => vec![], + }) + .unwrap_or_default() + } +} + #[cfg(test)] mod test { use super::*; @@ -330,19 +468,19 @@ mod test { let items_len = encoded.len(); for i in 0..items_len { let index = adjust_index_for_rlp(i, items_len); - println!("For tx={} using index={}", i, index); + // println!("For tx={} using index={}", i, index); let index_buffer = alloy_consensus::private::alloy_rlp::encode_fixed_size(&index); hb.add_leaf(Nibbles::unpack(&index_buffer), &encoded[index]); // Each mask in these vectors holds a u16. let masks_len = (hb.state_masks.len() + hb.tree_masks.len() + hb.hash_masks.len()) * 2; - let size = hb.key.len() + + let _size = hb.key.len() + hb.value.as_slice().len() + hb.stack.len() * 33 + masks_len + hb.rlp_buf.len(); - println!(" HB size is: {size}"); + // println!(" HB size is: {size}"); } hb.root().0.into() @@ -399,10 +537,26 @@ mod test { }) .collect(); + let mut incremental_block = EthereumBlockBuilder::new(); + for details in &transaction_details { + incremental_block.process_transaction(details.clone()); + } + // The block hash would differ here because we don't take into account // the ommers and other fields from the substrate perspective. // However, the state roots must be identical. - let built_block = Block::build( + let built_incremental = incremental_block.build( + block.number, + block.parent_hash, + block.timestamp, + block.miner, + Default::default(), + ); + + // The block hash would differ here because we don't take into account + // the ommers and other fields from the substrate perspective. + // However, the state roots must be identical. + let old_built_block = Block::build( transaction_details, block.number.into(), block.parent_hash.into(), @@ -412,6 +566,9 @@ mod test { ) .1; + assert_eq!(old_built_block, built_incremental.1); + let built_block = built_incremental.1; + assert_eq!(built_block.gas_used, block.gas_used); assert_eq!(built_block.logs_bloom, block.logs_bloom); // We are using the tx root for state root. From 47e2b7cc5ca3ac08a20472e074f6c6cede144272 Mon Sep 17 00:00:00 2001 From: Alexandru Vasile Date: Wed, 27 Aug 2025 12:32:17 +0000 Subject: [PATCH 20/67] revive: Use global variables to handle incremental building Signed-off-by: Alexandru Vasile --- Cargo.lock | 10 +++ substrate/frame/revive/Cargo.toml | 1 + substrate/frame/revive/src/evm/block_hash.rs | 19 ++++-- substrate/frame/revive/src/exec.rs | 6 +- substrate/frame/revive/src/lib.rs | 67 ++++++++++---------- 5 files changed, 59 insertions(+), 44 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index d617257f38151..66012e7cdc902 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -13184,6 +13184,7 @@ dependencies = [ "sp-runtime", "sp-tracing 16.0.0", "sp-version", + "spin 0.10.0", "substrate-bn", "subxt-signer 0.41.0", ] @@ -23921,6 +23922,15 @@ dependencies = [ "lock_api", ] +[[package]] +name = "spin" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d5fe4ccb98d9c292d56fec89a5e07da7fc4cf0dc11e156b41793132775d3e591" +dependencies = [ + "lock_api", +] + [[package]] name = "spinners" version = "4.1.1" diff --git a/substrate/frame/revive/Cargo.toml b/substrate/frame/revive/Cargo.toml index bc8cb7cd267da..79d942e794ebd 100644 --- a/substrate/frame/revive/Cargo.toml +++ b/substrate/frame/revive/Cargo.toml @@ -40,6 +40,7 @@ revm = { workspace = true } rlp = { workspace = true } scale-info = { features = ["derive"], workspace = true } serde = { features = ["alloc", "derive"], workspace = true, default-features = false } +spin = { version = "0.10.0" } # Polkadot SDK Dependencies bn = { workspace = true } diff --git a/substrate/frame/revive/src/evm/block_hash.rs b/substrate/frame/revive/src/evm/block_hash.rs index 9a3efa30ab774..2dccc1939e6d5 100644 --- a/substrate/frame/revive/src/evm/block_hash.rs +++ b/substrate/frame/revive/src/evm/block_hash.rs @@ -321,17 +321,22 @@ pub struct EthereumBlockBuilder { impl EthereumBlockBuilder { /// Constructs a new [`EthereumBlockBuilder`]. - pub fn new() -> Self { + pub const fn new() -> Self { Self { transaction_root_builder: None, receipts_root_builder: None, gas_used: U256::zero(), tx_hashes: Vec::new(), - logs_bloom: Bloom::default(), + logs_bloom: Bloom(FixedBytes::ZERO), gas_info: Vec::new(), } } + /// Reset the state of the block builder to accommodate for the next block. + pub fn reset(&mut self) { + *self = Self::new(); + } + /// Process a single transaction at a time. pub fn process_transaction(&mut self, detail: TransactionDetails) { let TransactionDetails { transaction_encoded, logs, success, gas_used } = detail; @@ -379,7 +384,7 @@ impl EthereumBlockBuilder { /// Build the ethereum block from provided data. pub fn build( - mut self, + &mut self, block_number: U256, parent_hash: H256, timestamp: U256, @@ -389,8 +394,8 @@ impl EthereumBlockBuilder { let transactions_root = Self::compute_trie_root(&mut self.transaction_root_builder); let receipts_root = Self::compute_trie_root(&mut self.receipts_root_builder); - println!("Incr hash tx: {:?}", transactions_root); - println!("Incr hash receipts: {:?}", receipts_root); + let tx_hashes = core::mem::replace(&mut self.tx_hashes, Vec::new()); + let gas_info = core::mem::replace(&mut self.gas_info, Vec::new()); let block = Block { number: block_number, @@ -406,13 +411,13 @@ impl EthereumBlockBuilder { gas_used: self.gas_used, logs_bloom: (*self.logs_bloom.data()).into(), - transactions: HashesOrTransactionInfos::Hashes(self.tx_hashes), + transactions: HashesOrTransactionInfos::Hashes(tx_hashes), ..Default::default() }; let block_hash = block.header_hash(); - (block_hash, block, self.gas_info) + (block_hash, block, gas_info) } fn compute_trie_root(builder: &mut Option) -> H256 { diff --git a/substrate/frame/revive/src/exec.rs b/substrate/frame/revive/src/exec.rs index dc2252de8856d..8c4721e83951e 100644 --- a/substrate/frame/revive/src/exec.rs +++ b/substrate/frame/revive/src/exec.rs @@ -28,8 +28,8 @@ use crate::{ tracing::if_tracing, transient_storage::TransientStorage, AccountInfo, AccountInfoOf, BalanceOf, BalanceWithDust, CodeInfo, CodeInfoOf, Config, - ContractInfo, Error, Event, ImmutableData, ImmutableDataOf, InflightEthTxEvents, - Pallet as Contracts, RuntimeCosts, LOG_TARGET, + ContractInfo, Error, Event, ImmutableData, ImmutableDataOf, Pallet as Contracts, RuntimeCosts, + LOG_TARGET, }; use alloc::vec::Vec; use core::{fmt::Debug, marker::PhantomData, mem}; @@ -2031,7 +2031,7 @@ where }); if eth_block_storage::is_executing_ethereum_call() { - InflightEthTxEvents::::append(EventLog { + eth_block_storage::INFLIGHT_EVENTS.lock().push(EventLog { contract, data: data.clone(), topics: topics.clone(), diff --git a/substrate/frame/revive/src/lib.rs b/substrate/frame/revive/src/lib.rs index f67b5a9881fff..70f5125658b8d 100644 --- a/substrate/frame/revive/src/lib.rs +++ b/substrate/frame/revive/src/lib.rs @@ -130,6 +130,8 @@ const SENTINEL: u32 = u32::MAX; const LOG_TARGET: &str = "runtime::revive"; pub(crate) mod eth_block_storage { + use crate::{evm::block_hash::EthereumBlockBuilder, EventLog}; + use alloc::vec::Vec; use environmental::environmental; /// The maximum number of block hashes to keep in the history. @@ -145,6 +147,18 @@ pub(crate) mod eth_block_storage { pub fn with_ethereum_context(f: impl FnOnce() -> R) -> R { executing_call::using(&mut true, f) } + + /// The incremental block builder that builds the trie root hashes + /// on the go with optimal storage. + pub static INCREMENTAL_BUILDER: spin::Mutex = + spin::Mutex::new(EthereumBlockBuilder::new()); + + /// The events emitted by this pallet while executing the current inflight transaction. + /// + /// The events are needed to reconstruct the receipt root hash, as they represent the + /// logs emitted by the contract. The events are consumed when the transaction is + /// completed. + pub static INFLIGHT_EVENTS: spin::Mutex> = spin::Mutex::new(Vec::new()); } #[frame_support::pallet] @@ -558,18 +572,6 @@ pub mod pallet { #[pallet::unbounded] pub(crate) type InflightEthTxEvents = StorageValue<_, Vec, ValueQuery>; - /// The EVM submitted transactions that are inflight for the current block. - /// - /// The transactions are needed to construct the ETH block. - /// - /// This contains the information about transaction payload, transaction index within the block, - /// the events emitted by the transaction, the status of the transaction (success or not), and - /// the gas consumed. - #[pallet::storage] - #[pallet::unbounded] - pub(crate) type InflightEthTransactions = - StorageValue<_, Vec, ValueQuery>; - /// The current Ethereum block that is stored in the `on_finalize` method. /// /// # Note @@ -638,6 +640,9 @@ pub mod pallet { ReceiptInfoData::::kill(); EthereumBlock::::kill(); + // Reset the block builder for the next block. + eth_block_storage::INCREMENTAL_BUILDER.lock().reset(); + Weight::zero() } @@ -645,9 +650,6 @@ pub mod pallet { // If we cannot fetch the block author there's nothing we can do. // Finding the block author traverses the digest logs. let Some(block_author) = Self::block_author() else { - // Drain storage in case of errors. - InflightEthTxEvents::::kill(); - InflightEthTransactions::::kill(); return; }; @@ -659,17 +661,11 @@ pub mod pallet { H256::default() }; let gas_limit = Self::evm_block_gas_limit(); - // This touches the storage, must account for weights. - let transactions = InflightEthTransactions::::take(); - - let (block_hash, block, receipt_data) = EthBlock::build( - transactions, - eth_block_num, - parent_hash, - T::Time::now().into(), - block_author, - gas_limit, - ); + + let (block_hash, block, receipt_data) = eth_block_storage::INCREMENTAL_BUILDER + .lock() + .build(eth_block_num, parent_hash, T::Time::now().into(), block_author, gas_limit); + // Put the block hash into storage. BlockHash::::insert(eth_block_num, block_hash); @@ -1797,14 +1793,17 @@ impl Pallet { /// The data is used during the `on_finalize` hook to reconstruct the ETH block. fn store_transaction(transaction_encoded: Vec, success: bool, gas_used: Weight) { // Collect inflight events emitted by this EVM transaction. - let logs = InflightEthTxEvents::::take(); - - InflightEthTransactions::::append(TransactionDetails { - transaction_encoded, - logs, - success, - gas_used, - }); + let mut inflight_events = eth_block_storage::INFLIGHT_EVENTS.lock(); + let logs = core::mem::replace(&mut *inflight_events, Vec::new()); + + eth_block_storage::INCREMENTAL_BUILDER + .lock() + .process_transaction(TransactionDetails { + transaction_encoded, + logs, + success, + gas_used, + }); } /// The address of the validator that produced the current block. From 2cf30546b28b7b8062f2fb1dcdb1f4a3415dc0eb Mon Sep 17 00:00:00 2001 From: Alexandru Vasile Date: Wed, 27 Aug 2025 12:57:39 +0000 Subject: [PATCH 21/67] revive: Use SafeGlobal with RefCell instead of spin mutex Signed-off-by: Alexandru Vasile --- Cargo.lock | 10 ------- substrate/frame/revive/Cargo.toml | 1 - substrate/frame/revive/src/exec.rs | 2 +- substrate/frame/revive/src/lib.rs | 44 ++++++++++++++++++++---------- 4 files changed, 31 insertions(+), 26 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 66012e7cdc902..d617257f38151 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -13184,7 +13184,6 @@ dependencies = [ "sp-runtime", "sp-tracing 16.0.0", "sp-version", - "spin 0.10.0", "substrate-bn", "subxt-signer 0.41.0", ] @@ -23922,15 +23921,6 @@ dependencies = [ "lock_api", ] -[[package]] -name = "spin" -version = "0.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d5fe4ccb98d9c292d56fec89a5e07da7fc4cf0dc11e156b41793132775d3e591" -dependencies = [ - "lock_api", -] - [[package]] name = "spinners" version = "4.1.1" diff --git a/substrate/frame/revive/Cargo.toml b/substrate/frame/revive/Cargo.toml index 79d942e794ebd..bc8cb7cd267da 100644 --- a/substrate/frame/revive/Cargo.toml +++ b/substrate/frame/revive/Cargo.toml @@ -40,7 +40,6 @@ revm = { workspace = true } rlp = { workspace = true } scale-info = { features = ["derive"], workspace = true } serde = { features = ["alloc", "derive"], workspace = true, default-features = false } -spin = { version = "0.10.0" } # Polkadot SDK Dependencies bn = { workspace = true } diff --git a/substrate/frame/revive/src/exec.rs b/substrate/frame/revive/src/exec.rs index 8c4721e83951e..c67238f36d1ad 100644 --- a/substrate/frame/revive/src/exec.rs +++ b/substrate/frame/revive/src/exec.rs @@ -2031,7 +2031,7 @@ where }); if eth_block_storage::is_executing_ethereum_call() { - eth_block_storage::INFLIGHT_EVENTS.lock().push(EventLog { + eth_block_storage::INFLIGHT_EVENTS.borrow_mut().push(EventLog { contract, data: data.clone(), topics: topics.clone(), diff --git a/substrate/frame/revive/src/lib.rs b/substrate/frame/revive/src/lib.rs index 70f5125658b8d..eeb771135f766 100644 --- a/substrate/frame/revive/src/lib.rs +++ b/substrate/frame/revive/src/lib.rs @@ -132,6 +132,7 @@ const LOG_TARGET: &str = "runtime::revive"; pub(crate) mod eth_block_storage { use crate::{evm::block_hash::EthereumBlockBuilder, EventLog}; use alloc::vec::Vec; + use core::cell::{RefCell, RefMut}; use environmental::environmental; /// The maximum number of block hashes to keep in the history. @@ -148,17 +149,37 @@ pub(crate) mod eth_block_storage { executing_call::using(&mut true, f) } + /// A safe global value in the WASM environment. + pub struct SafeGlobal { + inner: RefCell, + } + + // This is safe as long there is no threads in wasm32. + unsafe impl ::core::marker::Sync for SafeGlobal {} + + impl SafeGlobal { + /// Construct a new [`SafeGlobal`]. + pub const fn new(value: T) -> Self { + Self { inner: RefCell::new(value) } + } + + /// Mutably borrows the wrapped value. + pub fn borrow_mut(&self) -> RefMut<'_, T> { + self.inner.borrow_mut() + } + } + /// The incremental block builder that builds the trie root hashes /// on the go with optimal storage. - pub static INCREMENTAL_BUILDER: spin::Mutex = - spin::Mutex::new(EthereumBlockBuilder::new()); + pub static INCREMENTAL_BUILDER: SafeGlobal = + SafeGlobal::new(EthereumBlockBuilder::new()); /// The events emitted by this pallet while executing the current inflight transaction. /// /// The events are needed to reconstruct the receipt root hash, as they represent the /// logs emitted by the contract. The events are consumed when the transaction is /// completed. - pub static INFLIGHT_EVENTS: spin::Mutex> = spin::Mutex::new(Vec::new()); + pub static INFLIGHT_EVENTS: SafeGlobal> = SafeGlobal::new(Vec::new()); } #[frame_support::pallet] @@ -641,7 +662,7 @@ pub mod pallet { EthereumBlock::::kill(); // Reset the block builder for the next block. - eth_block_storage::INCREMENTAL_BUILDER.lock().reset(); + eth_block_storage::INCREMENTAL_BUILDER.borrow_mut().reset(); Weight::zero() } @@ -663,7 +684,7 @@ pub mod pallet { let gas_limit = Self::evm_block_gas_limit(); let (block_hash, block, receipt_data) = eth_block_storage::INCREMENTAL_BUILDER - .lock() + .borrow_mut() .build(eth_block_num, parent_hash, T::Time::now().into(), block_author, gas_limit); // Put the block hash into storage. @@ -1793,17 +1814,12 @@ impl Pallet { /// The data is used during the `on_finalize` hook to reconstruct the ETH block. fn store_transaction(transaction_encoded: Vec, success: bool, gas_used: Weight) { // Collect inflight events emitted by this EVM transaction. - let mut inflight_events = eth_block_storage::INFLIGHT_EVENTS.lock(); + let mut inflight_events = eth_block_storage::INFLIGHT_EVENTS.borrow_mut(); let logs = core::mem::replace(&mut *inflight_events, Vec::new()); - eth_block_storage::INCREMENTAL_BUILDER - .lock() - .process_transaction(TransactionDetails { - transaction_encoded, - logs, - success, - gas_used, - }); + eth_block_storage::INCREMENTAL_BUILDER.borrow_mut().process_transaction( + TransactionDetails { transaction_encoded, logs, success, gas_used }, + ); } /// The address of the validator that produced the current block. From 3037698fdbd475df8765788ea8222a969a55ebb2 Mon Sep 17 00:00:00 2001 From: Alexandru Vasile Date: Wed, 27 Aug 2025 13:03:37 +0000 Subject: [PATCH 22/67] revive/tests: Comment out prev tests that relied on storage items Signed-off-by: Alexandru Vasile --- substrate/frame/revive/src/evm/block_hash.rs | 2 +- .../frame/revive/src/tests/block_hash.rs | 157 ++++++++---------- 2 files changed, 72 insertions(+), 87 deletions(-) diff --git a/substrate/frame/revive/src/evm/block_hash.rs b/substrate/frame/revive/src/evm/block_hash.rs index 2dccc1939e6d5..83360f8cc184e 100644 --- a/substrate/frame/revive/src/evm/block_hash.rs +++ b/substrate/frame/revive/src/evm/block_hash.rs @@ -313,7 +313,7 @@ pub struct EthereumBlockBuilder { receipts_root_builder: Option, gas_used: U256, - tx_hashes: Vec, + pub(crate) tx_hashes: Vec, logs_bloom: Bloom, gas_info: Vec, diff --git a/substrate/frame/revive/src/tests/block_hash.rs b/substrate/frame/revive/src/tests/block_hash.rs index aece048204a2a..5e1d81dc43932 100644 --- a/substrate/frame/revive/src/tests/block_hash.rs +++ b/substrate/frame/revive/src/tests/block_hash.rs @@ -18,11 +18,12 @@ //! The pallet-revive ETH block hash specific integration test suite. use crate::{ + eth_block_storage, evm::block_hash::{EventLog, TransactionDetails}, test_utils::{builder::Contract, deposit_limit, ALICE}, tests::{assert_ok, builder, Contracts, ExtBuilder, RuntimeOrigin, Test}, - BalanceWithDust, Code, Config, EthBlock, EthereumBlock, InflightEthTransactions, - InflightEthTxEvents, Pallet, ReceiptGasInfo, ReceiptInfoData, TransactionSigned, Weight, H256, + BalanceWithDust, Code, Config, EthBlock, EthereumBlock, InflightEthTxEvents, Pallet, + ReceiptGasInfo, ReceiptInfoData, TransactionSigned, Weight, H256, }; use frame_support::traits::{fungible::Mutate, Hooks}; @@ -51,30 +52,12 @@ fn on_initialize_clears_storage() { ReceiptInfoData::::put(receipt_data.clone()); assert_eq!(ReceiptInfoData::::get(), receipt_data); - let event = EventLog { contract: Default::default(), data: vec![1], topics: vec![] }; - InflightEthTxEvents::::put(vec![event.clone()]); - assert_eq!(InflightEthTxEvents::::get(), vec![event.clone()]); - - let transactions = vec![TransactionDetails { - transaction_encoded: TransactionSigned::TransactionLegacySigned(Default::default()) - .signed_payload(), - logs: vec![event.clone()], - success: true, - gas_used: Weight::zero(), - }]; - - InflightEthTransactions::::put(transactions.clone()); - assert_eq!(InflightEthTransactions::::get(), transactions.clone()); - let block = EthBlock { number: 1.into(), ..Default::default() }; EthereumBlock::::put(block.clone()); assert_eq!(EthereumBlock::::get(), block); Contracts::on_initialize(0); - // The events and tx info is killed on the finalized hook. - assert_eq!(InflightEthTxEvents::::get(), vec![event]); - assert_eq!(InflightEthTransactions::::get(), transactions); // RPC queried storage is cleared out. assert_eq!(ReceiptInfoData::::get(), vec![]); assert_eq!(EthereumBlock::::get(), Default::default()); @@ -103,75 +86,77 @@ fn transactions_are_captured() { // Instantiate with code is not captured. assert_ok!(builder::instantiate_with_code(gas_binary).value(1).build()); - let transactions = InflightEthTransactions::::get(); - let expected = vec![ - TransactionDetails { - transaction_encoded: TransactionSigned::TransactionLegacySigned(Default::default()) - .signed_payload(), - logs: vec![], - success: true, - gas_used: Weight::zero(), - }, - TransactionDetails { - transaction_encoded: TransactionSigned::Transaction4844Signed(Default::default()) - .signed_payload(), - logs: vec![], - success: true, - gas_used: Weight::zero(), - }, - ]; - assert_eq!(transactions, expected); + assert_eq!(eth_block_storage::INCREMENTAL_BUILDER.borrow_mut().tx_hashes.len(), 2); + + // let transactions = InflightEthTransactions::::get(); + // let expected = vec![ + // TransactionDetails { + // transaction_encoded: TransactionSigned::TransactionLegacySigned(Default::default()) + // .signed_payload(), + // logs: vec![], + // success: true, + // gas_used: Weight::zero(), + // }, + // TransactionDetails { + // transaction_encoded: TransactionSigned::Transaction4844Signed(Default::default()) + // .signed_payload(), + // logs: vec![], + // success: true, + // gas_used: Weight::zero(), + // }, + // ]; + // assert_eq!(transactions, expected); Contracts::on_finalize(0); - assert_eq!(InflightEthTransactions::::get(), vec![]); + assert_eq!(eth_block_storage::INCREMENTAL_BUILDER.borrow_mut().tx_hashes.len(), 0); }); } -#[test] -fn events_are_captured() { - let (binary, code_hash) = compile_module("event_and_return_on_deploy").unwrap(); - - ExtBuilder::default().existential_deposit(200).build().execute_with(|| { - let _ = ::Currency::set_balance(&ALICE, 1_000_000); - - assert_ok!(Contracts::upload_code( - RuntimeOrigin::signed(ALICE), - binary.clone(), - deposit_limit::(), - )); - - Contracts::on_initialize(1); - - // Bare call must not be captured. - builder::bare_instantiate(Code::Existing(code_hash)).build_and_unwrap_contract(); - let balance = - Pallet::::convert_native_to_evm(BalanceWithDust::new_unchecked::(100, 10)); - - // Capture the EthInstantiate. - assert_eq!(InflightEthTxEvents::::get(), vec![]); - assert_ok!(builder::eth_instantiate_with_code(binary).value(balance).build()); - // Events are cleared out by storing the transaction. - assert_eq!(InflightEthTxEvents::::get(), vec![]); - - let transactions = InflightEthTransactions::::get(); - let expected = vec![TransactionDetails { - transaction_encoded: TransactionSigned::Transaction4844Signed(Default::default()) - .signed_payload(), - logs: vec![EventLog { - data: vec![1, 2, 3, 4], - topics: vec![H256::repeat_byte(42)], - contract: Default::default(), - }], - success: true, - gas_used: Weight::zero(), - }]; - - assert_eq!(transactions, expected); - - Contracts::on_finalize(0); - - assert_eq!(InflightEthTransactions::::get(), vec![]); - assert_eq!(InflightEthTxEvents::::get(), vec![]); - }); -} +// #[test] +// fn events_are_captured() { +// let (binary, code_hash) = compile_module("event_and_return_on_deploy").unwrap(); + +// ExtBuilder::default().existential_deposit(200).build().execute_with(|| { +// let _ = ::Currency::set_balance(&ALICE, 1_000_000); + +// assert_ok!(Contracts::upload_code( +// RuntimeOrigin::signed(ALICE), +// binary.clone(), +// deposit_limit::(), +// )); + +// Contracts::on_initialize(1); + +// // Bare call must not be captured. +// builder::bare_instantiate(Code::Existing(code_hash)).build_and_unwrap_contract(); +// let balance = +// Pallet::::convert_native_to_evm(BalanceWithDust::new_unchecked::(100, 10)); + +// // Capture the EthInstantiate. +// assert_eq!(InflightEthTxEvents::::get(), vec![]); +// assert_ok!(builder::eth_instantiate_with_code(binary).value(balance).build()); +// // Events are cleared out by storing the transaction. +// assert_eq!(InflightEthTxEvents::::get(), vec![]); + +// let transactions = InflightEthTransactions::::get(); +// let expected = vec![TransactionDetails { +// transaction_encoded: TransactionSigned::Transaction4844Signed(Default::default()) +// .signed_payload(), +// logs: vec![EventLog { +// data: vec![1, 2, 3, 4], +// topics: vec![H256::repeat_byte(42)], +// contract: Default::default(), +// }], +// success: true, +// gas_used: Weight::zero(), +// }]; + +// assert_eq!(transactions, expected); + +// Contracts::on_finalize(0); + +// assert_eq!(InflightEthTransactions::::get(), vec![]); +// assert_eq!(InflightEthTxEvents::::get(), vec![]); +// }); +// } From 1b91b2875b68f38e83f14332847cf4394f6a0d74 Mon Sep 17 00:00:00 2001 From: Alexandru Vasile Date: Thu, 28 Aug 2025 10:15:48 +0000 Subject: [PATCH 23/67] revive: Add incremental receipt RLP builder Signed-off-by: Alexandru Vasile --- Cargo.lock | 1 + substrate/frame/revive/Cargo.toml | 5 +- substrate/frame/revive/src/evm/block_hash.rs | 212 ++++++++++++++++--- 3 files changed, 186 insertions(+), 32 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index d617257f38151..13e21b13c0fcb 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -13135,6 +13135,7 @@ version = "0.1.0" dependencies = [ "alloy-consensus", "alloy-core", + "alloy-rlp", "array-bytes 6.2.2", "assert_matches", "derive_more 0.99.17", diff --git a/substrate/frame/revive/Cargo.toml b/substrate/frame/revive/Cargo.toml index bc8cb7cd267da..8eb7cf0b67fd5 100644 --- a/substrate/frame/revive/Cargo.toml +++ b/substrate/frame/revive/Cargo.toml @@ -18,7 +18,10 @@ targets = ["x86_64-unknown-linux-gnu"] [dependencies] alloy-consensus = { workspace = true, default-features = false } -alloy-core = { workspace = true, features = ["sol-types"] } +alloy-core = { workspace = true, features = ["sol-types", "rlp"] } +alloy-rlp = { version = "0.3.12", default-features = false } + + codec = { features = ["derive", "max-encoded-len"], workspace = true } derive_more = { workspace = true, features = ["from", "try_into"] } environmental = { workspace = true } diff --git a/substrate/frame/revive/src/evm/block_hash.rs b/substrate/frame/revive/src/evm/block_hash.rs index 83360f8cc184e..a0168132ec09e 100644 --- a/substrate/frame/revive/src/evm/block_hash.rs +++ b/substrate/frame/revive/src/evm/block_hash.rs @@ -27,6 +27,7 @@ use alloy_consensus::{ RlpEncodableReceipt, }; use alloy_core::primitives::{bytes::BufMut, Bloom, FixedBytes, Log, B256}; +use alloy_rlp::Encodable; use codec::{Decode, Encode}; use frame_support::weights::Weight; use scale_info::TypeInfo; @@ -280,13 +281,13 @@ impl IncrementalHashBuilder { // to be index + 1 in the sorted order. if let Some(encoded_value) = self.first_value.take() { let zero: usize = 0; - let rlp_index = alloy_consensus::private::alloy_rlp::encode_fixed_size(&zero); + let rlp_index = alloy_rlp::encode_fixed_size(&zero); self.hash_builder.add_leaf(Nibbles::unpack(&rlp_index), &encoded_value); } } - let rlp_index = alloy_consensus::private::alloy_rlp::encode_fixed_size(&self.index); + let rlp_index = alloy_rlp::encode_fixed_size(&self.index); self.hash_builder.add_leaf(Nibbles::unpack(&rlp_index), &value); self.index += 1; @@ -299,7 +300,7 @@ impl IncrementalHashBuilder { // by rlp encoding of the index. if let Some(encoded_value) = self.first_value.take() { let zero: usize = 0; - let rlp_index = alloy_consensus::private::alloy_rlp::encode_fixed_size(&zero); + let rlp_index = alloy_rlp::encode_fixed_size(&zero); self.hash_builder.add_leaf(Nibbles::unpack(&rlp_index), &encoded_value); } @@ -307,6 +308,95 @@ impl IncrementalHashBuilder { } } +/// Accumulate receipts into a stream of RLP encoded bytes. +/// This is a very straight forward implementation that RLP encodes logs as they are added. +/// +/// The main goal is to generate the RLP-encoded representation of receipts +/// which is required to compute the receipt root hash, without storing the full receipt +/// data in memory. +/// +/// One approach is to store the full receipt in memory, together with the RLP encoding +/// of the receipt. +/// +/// However, since we only care about the RLP encoding of the receipt, we can optimize the memory +/// usage by only storing the RLP encoded value and the logs directly. This effectively saves +/// the need to store the full receipt (which can grow unboundedly due to the number of logs), and +/// builds the RLP encoding incrementally as logs are added. +/// +/// The implementation leverages the RLP encoding details of the receipt: +/// +/// ```ignore +/// // Memory representation of the RLP encoded receipt: +/// [ +/// ReceiptHeader ++ rlp(status) ++ rlp(gas) ++ rlp(bloom) +/// ++ LogsHeader ++ rlp(log1) ++ rlp(log2) ++ ... ++ rlp(logN) +/// ] +/// ``` +/// +/// The optimization comes from the fact that `rlp(log1) ++ rlp(log2) ++ ... ++ rlp(logN)` +/// can be built incrementally. +/// +/// On average, from the real ethereum block, this implementation reduces the memory usage by 30%. +/// `EncodedReceipt Space optimization (on average): 0.6995642434146292` +pub struct AccumulateReceipt { + /// The RLP bytes where the logs are accumulated. + encoding: Vec, + /// The bloom filter collected from accumulating logs. + bloom: Bloom, +} + +impl AccumulateReceipt { + /// Constructs a new [`AccumulateReceipt`]. + pub const fn new() -> Self { + Self { encoding: Vec::new(), bloom: Bloom(FixedBytes::ZERO) } + } + + /// Reset the state of the receipt accumulator. + pub fn reset(&mut self) { + *self = Self::new(); + } + + /// Add the log into the accumulated receipt. + /// + /// This accrues the log bloom and keeps track of the RLP encoding of the log. + pub fn add_log(&mut self, log: EventLog) { + let log = Log::new_unchecked( + log.contract.0.into(), + log.topics.into_iter().map(|h| FixedBytes::from(h.0)).collect::>(), + log.data.into(), + ); + self.bloom.accrue_log(&log); + log.encode(&mut self.encoding); + } + + /// Finalize the accumulated receipt and return the RLP encoded bytes. + pub fn finish(&mut self, status: bool, gas: u64, transaction_type: Vec) -> Vec { + let logs_length = self.encoding.len(); + let list_header_length = logs_length + alloy_rlp::length_of_length(logs_length); + + let header = alloy_rlp::Header { + list: true, + payload_length: alloy_rlp::Encodable::length(&status) + + alloy_rlp::Encodable::length(&gas) + + alloy_rlp::Encodable::length(&self.bloom) + + list_header_length, + }; + + let mut encoded = transaction_type; + header.encode(&mut encoded); + alloy_rlp::Encodable::encode(&status, &mut encoded); + alloy_rlp::Encodable::encode(&gas, &mut encoded); + alloy_rlp::Encodable::encode(&self.bloom, &mut encoded); + + let logs_header = alloy_rlp::Header { list: true, payload_length: logs_length }; + logs_header.encode(&mut encoded); + + encoded.extend(self.encoding.clone()); + + encoded + } +} + /// Ethereum block builder. pub struct EthereumBlockBuilder { transaction_root_builder: Option, @@ -317,6 +407,12 @@ pub struct EthereumBlockBuilder { logs_bloom: Bloom, gas_info: Vec, + + receipt: AccumulateReceipt, + + // Added to capture the gains of receipts encoding. + __metrics_receipts: f64, + __metrics_receipts_len: usize, } impl EthereumBlockBuilder { @@ -329,6 +425,10 @@ impl EthereumBlockBuilder { tx_hashes: Vec::new(), logs_bloom: Bloom(FixedBytes::ZERO), gas_info: Vec::new(), + receipt: AccumulateReceipt::new(), + + __metrics_receipts: 0.0, + __metrics_receipts_len: 0, } } @@ -337,9 +437,14 @@ impl EthereumBlockBuilder { *self = Self::new(); } + /// Adds a log to the current receipt object. + pub fn add_log(&mut self, log: EventLog) { + self.receipt.add_log(log); + } + /// Process a single transaction at a time. pub fn process_transaction(&mut self, detail: TransactionDetails) { - let TransactionDetails { transaction_encoded, logs, success, gas_used } = detail; + let TransactionDetails { transaction_encoded, success, gas_used, logs } = detail; let tx_hash = H256(keccak_256(&transaction_encoded)); self.tx_hashes.push(tx_hash); @@ -347,37 +452,67 @@ impl EthereumBlockBuilder { let transaction_type = Self::extract_transaction_type(transaction_encoded.as_slice()); Self::add_builder_value(&mut self.transaction_root_builder, transaction_encoded); - let logs = logs - .into_iter() - .map(|log| { - Log::new_unchecked( - log.contract.0.into(), - log.topics.into_iter().map(|h| FixedBytes::from(h.0)).collect::>(), - log.data.into(), - ) - }) - .collect(); + // The following block is used to derive the optimization number and + // will be removed once we determine the optimal path forward: + { + let mut size = 0; + + let logs = logs + .into_iter() + .map(|log| { + // Data len (u8) + topics (32 * u8) + contract (20 * u8) + size += log.data.len() + log.topics.len() * 32 + 20; + + let log = Log::new_unchecked( + log.contract.0.into(), + log.topics.into_iter().map(|h| FixedBytes::from(h.0)).collect::>(), + log.data.into(), + ); + + log + }) + .collect(); + + // success + gas + bloom. + size += 1 + 8 + 32; + + let receipt = alloy_consensus::Receipt { + status: success.into(), + cumulative_gas_used: self.gas_used.as_u64(), + logs, + }; + + let receipt_bloom = receipt.bloom_slow(); + self.logs_bloom.accrue_bloom(&receipt_bloom); + + // Receipt encoding must be prefixed with the rlp(transaction type). + let mut encoded_receipt = transaction_type.clone(); + let encoded_len = encoded_receipt + .len() + .saturating_add(receipt.rlp_encoded_length_with_bloom(&receipt_bloom)); + encoded_receipt.reserve(encoded_len); + + receipt.rlp_encode_with_bloom(&receipt_bloom, &mut encoded_receipt); + + println!("+Encoded receipt {:?}", encoded_receipt.len()); + println!("+Used receipt space {:?}", size + encoded_receipt.len()); + + let used_space_ratio = + encoded_receipt.len() as f64 / (size + encoded_receipt.len()) as f64; + self.__metrics_receipts += used_space_ratio; + self.__metrics_receipts_len += 1; + + println!("+ Used space ratio {:?}", used_space_ratio); + } self.gas_used = self.gas_used.saturating_add(gas_used.ref_time().into()); self.gas_info.push(ReceiptGasInfo { gas_used: gas_used.ref_time().into() }); - let receipt = alloy_consensus::Receipt { - status: success.into(), - cumulative_gas_used: self.gas_used.as_u64(), - logs, - }; - - let receipt_bloom = receipt.bloom_slow(); + let receipt_bloom = self.receipt.bloom.clone(); self.logs_bloom.accrue_bloom(&receipt_bloom); - - // Receipt encoding must be prefixed with the rlp(transaction type). - let mut encoded_receipt = transaction_type; - let encoded_len = encoded_receipt - .len() - .saturating_add(receipt.rlp_encoded_length_with_bloom(&receipt_bloom)); - encoded_receipt.reserve(encoded_len); - - receipt.rlp_encode_with_bloom(&receipt_bloom, &mut encoded_receipt); + let encoded_receipt = + self.receipt.finish(success, self.gas_used.as_u64(), transaction_type); + self.receipt.reset(); Self::add_builder_value(&mut self.receipts_root_builder, encoded_receipt); } @@ -391,6 +526,11 @@ impl EthereumBlockBuilder { block_author: H160, gas_limit: U256, ) -> (H256, Block, Vec) { + println!( + " EncodedReceipt Space optimization (on average): {:?}", + self.__metrics_receipts / self.__metrics_receipts_len as f64 + ); + let transactions_root = Self::compute_trie_root(&mut self.transaction_root_builder); let receipts_root = Self::compute_trie_root(&mut self.receipts_root_builder); @@ -475,7 +615,7 @@ mod test { let index = adjust_index_for_rlp(i, items_len); // println!("For tx={} using index={}", i, index); - let index_buffer = alloy_consensus::private::alloy_rlp::encode_fixed_size(&index); + let index_buffer = alloy_rlp::encode_fixed_size(&index); hb.add_leaf(Nibbles::unpack(&index_buffer), &encoded[index]); // Each mask in these vectors holds a u16. @@ -544,7 +684,17 @@ mod test { let mut incremental_block = EthereumBlockBuilder::new(); for details in &transaction_details { + let mut log_size = 0; + + for log in &details.logs { + let current_size = log.data.len() + log.topics.len() * 32 + 20; + + log_size += current_size; + incremental_block.add_log(log.clone()); + } + incremental_block.process_transaction(details.clone()); + println!(" Otherwise size {:?}", log_size); } // The block hash would differ here because we don't take into account From e49facce796ce192bea6bb1d1b959e924ba500a8 Mon Sep 17 00:00:00 2001 From: Alexandru Vasile Date: Thu, 28 Aug 2025 11:24:20 +0000 Subject: [PATCH 24/67] revive: Add metrics and documentation for inncremental builder Signed-off-by: Alexandru Vasile --- substrate/frame/revive/src/evm/block_hash.rs | 132 ++++++++++++++++++- 1 file changed, 130 insertions(+), 2 deletions(-) diff --git a/substrate/frame/revive/src/evm/block_hash.rs b/substrate/frame/revive/src/evm/block_hash.rs index a0168132ec09e..6e268e87e79d6 100644 --- a/substrate/frame/revive/src/evm/block_hash.rs +++ b/substrate/frame/revive/src/evm/block_hash.rs @@ -258,7 +258,66 @@ impl Block { } } -/// Build the Trie Root Hash incrementally. +/// The Incremental Hash Builder is designed to efficiently compute the transaction and receipt +/// trie roots in Ethereum, minimizing memory usage. This is achieved by constructing the Merkle +/// Trie incrementally, rather than storing all values in memory simultaneously. +/// +/// ## ETH Trie Overview +/// +/// In Ethereum, the trie calculates the hash of a node (leaf) by combining the remaining key path +/// with the RLP-encoded item, as follows: +/// +/// ```ignore +/// hash (remaining of the key path ++ RLP (item)) +/// ``` +/// +/// Because the hash incorporates the remaining key path, computing the trie root accurately +/// requires more than just the hash of the RLP-encoded item (hash(RLP(item))). To address this, the +/// Incremental Hash Builder leverages the internal structure of the Ethereum trie to optimize +/// memory usage. +/// +/// The Ethereum trie is ordered by the RLP-encoded index of items (RLP(index)). This ordering +/// allows the trie to be built incrementally, provided the items are added in a consistent order. +/// We leverage the following property of encoding RLP indexes to avoid sorting the items (and +/// therefore, we avoid knowing the number of items in advance): +/// +/// ```ignore +/// rlp(1) < rlp(2) < ... < rlp(127) < RLP (0) < rlp(128) < ... < rlp(n) +/// ``` +/// For more details see: +/// https://github.com/alloy-rs/trie/blob/3e762bcb65f25710c309e7d8cb6c9ed7e3fdada1/src/root.rs#L7-L16 +/// +/// This property allows the builder to add items in the order of indices 1, 2, ..., 127, followed +/// by index 0, and then index 128 onward. In this implementation, the focus is on placing the first +/// RLP encoded value at index 128. +/// +/// The primary optimization comes from computing the hash (remaining_key_path ++ RLP(item)) as +/// early as possible during the trie construction process. This approach minimizes the memory +/// required by avoiding the need to store all items simultaneously. +/// +/// For transactions, from real ethereum block, we can observe the following: +/// - worst case we use 90% less space +/// - best case we use 99.5% less space +/// +/// ```ignore +/// hash max 8042 +/// hash min 444 +/// hash total 79655 +/// hash saved worst case 0.1009603916891595 +/// hash saved best case 0.005574038039043374 +/// ``` +/// +/// For receipts, from real ethereum block, we can observe the following: +/// - worst case we use 94% less space +/// - best case we use 99.3% less space +/// +/// ```ignore +/// hash max 7249 +/// hash min 760 +/// hash total 106054 +/// hash saved worst case 0.06835197163709054 +/// hash saved best case 0.007166160635148132 +/// ``` pub struct IncrementalHashBuilder { /// Hash builder. hash_builder: HashBuilder, @@ -266,12 +325,24 @@ pub struct IncrementalHashBuilder { index: usize, /// RLP encoded value. first_value: Option>, + + __metrics_min: usize, + __metrics_max: usize, + __metrics_total_values: usize, } impl IncrementalHashBuilder { /// Construct the hash builder from the first value. pub fn new(first_value: Vec) -> Self { - Self { hash_builder: HashBuilder::default(), index: 1, first_value: Some(first_value) } + Self { + hash_builder: HashBuilder::default(), + index: 1, + first_value: Some(first_value), + + __metrics_min: usize::MAX, + __metrics_max: 0, + __metrics_total_values: 0, + } } /// Add a new value to the hash builder. @@ -291,6 +362,12 @@ impl IncrementalHashBuilder { self.hash_builder.add_leaf(Nibbles::unpack(&rlp_index), &value); self.index += 1; + + // Update metrics. + let used_mem = self.__hash_size(); + self.__metrics_min = self.__metrics_min.min(used_mem); + self.__metrics_max = self.__metrics_max.max(used_mem); + self.__metrics_total_values += value.len(); } /// Build the trie root hash. @@ -304,8 +381,59 @@ impl IncrementalHashBuilder { self.hash_builder.add_leaf(Nibbles::unpack(&rlp_index), &encoded_value); } + println!(" hash max {}", self.__metrics_max); + println!(" hash min {}", self.__metrics_min); + println!(" hash total {}", self.__metrics_total_values); + println!( + " hash saved worst case {}", + self.__metrics_max as f64 / self.__metrics_total_values as f64 + ); + println!( + " hash saved best case {}", + self.__metrics_min as f64 / self.__metrics_total_values as f64 + ); + self.hash_builder.root().0.into() } + + fn __hash_size(&self) -> usize { + // Masks store u16 (2 bytes): + let masks_len = (self.hash_builder.state_masks.len() + + self.hash_builder.tree_masks.len() + + self.hash_builder.hash_masks.len()) * + 2; + + // Nibble key is: + // pub struct Nibbles { + // /// Nibbles length. + // // This field goes first, because the derived implementation of `PartialEq` compares + // the fields // in order, so we can short-circuit the comparison if the `length` + // field differs. pub(crate) length: usize, + // /// The nibbles themselves, stored as a 256-bit unsigned integer with most + // significant bits set /// first. + // pub(crate) nibbles: U256, + // } + // This could be reduced to 40 bytes. + 40 + + + // Value is of form: + // pub struct HashBuilderValue { + // /// Stores the bytes of either the leaf node value or the hash of adjacent nodes. + // #[cfg_attr(feature = "serde", serde(with = "hex"))] + // buf: Vec, + // /// The kind of value that is stored in `buf`. + // kind: HashBuilderValueKind, + // } + self.hash_builder.value.as_slice().len() + + + // RLP nodes in stack are represented by: + // const MAX: usize = 33; + // pub struct RlpNode(ArrayVec); + self.hash_builder.stack.len() * 33 + + + // pub rlp_buf: Vec, + masks_len + self.hash_builder.rlp_buf.len() + } } /// Accumulate receipts into a stream of RLP encoded bytes. From 9dcf59c21f5947e163c3202936694d0d8bdf8134 Mon Sep 17 00:00:00 2001 From: Alexandru Vasile Date: Tue, 2 Sep 2025 17:25:01 +0000 Subject: [PATCH 25/67] hash: Add serailized intermediate representation of builder Signed-off-by: Alexandru Vasile --- substrate/frame/revive/src/evm/block_hash.rs | 120 ++++++++++++++++++- 1 file changed, 119 insertions(+), 1 deletion(-) diff --git a/substrate/frame/revive/src/evm/block_hash.rs b/substrate/frame/revive/src/evm/block_hash.rs index 6e268e87e79d6..7bf1e367efad2 100644 --- a/substrate/frame/revive/src/evm/block_hash.rs +++ b/substrate/frame/revive/src/evm/block_hash.rs @@ -322,7 +322,7 @@ pub struct IncrementalHashBuilder { /// Hash builder. hash_builder: HashBuilder, /// The index of the current value. - index: usize, + index: u64, /// RLP encoded value. first_value: Option>, @@ -331,6 +331,38 @@ pub struct IncrementalHashBuilder { __metrics_total_values: usize, } +/// The intermediate representation of the [`IncrementalHashBuilder`] that can be placed into the +/// pallets storage. This contains the minimum amount of data that is needed to serialize +/// and deserialize the incremental hash builder. +#[derive(codec::Encode, codec::Decode, scale_info::TypeInfo, Clone, PartialEq, Eq, Debug)] +pub struct IncrementalHashBuilderIR { + /// The nibbles of the builder. + pub key: Vec, + /// The type of the builder value. + /// 0 represents plain bytes. + /// 1 represents the hash of the bytes. + pub value_type: u8, + /// The current value stored by the builder. + pub builder_value: Vec, + /// The stack of RLP nodes. + pub stack: Vec>, + /// State mask. + pub state_masks: Vec, + /// Tree mask. + pub tree_masks: Vec, + /// Hash mask. + pub hash_masks: Vec, + /// True if the buider should be stored in database. + pub stored_in_database: bool, + /// Current RLP buffer. + pub rlp_buf: Vec, + + /// The index of the current value. + pub index: u64, + /// RLP encoded value. + pub first_value: Option>, +} + impl IncrementalHashBuilder { /// Construct the hash builder from the first value. pub fn new(first_value: Vec) -> Self { @@ -345,6 +377,92 @@ impl IncrementalHashBuilder { } } + /// Constructs a new hash builder from the intermediate representation. + pub fn from_ir(serialized: IncrementalHashBuilderIR) -> Self { + use alloy_consensus::private::alloy_trie::{ + hash_builder::{HashBuilderValue, HashBuilderValueRef}, + nodes::RlpNode, + TrieMask, + }; + + let value = match serialized.value_type { + 0 => { + let mut value = HashBuilderValue::new(); + value.set_bytes_owned(serialized.builder_value); + value + }, + 1 => { + use alloy_core::primitives::B256; + + let buffer: B256 = serialized.builder_value[..] + .try_into() + .expect("The buffer was serialized properly; qed"); + let value_ref = HashBuilderValueRef::Hash(&buffer); + + let mut value = HashBuilderValue::new(); + value.set_from_ref(value_ref); + value + }, + _ => panic!("Value type was serialized properly; qed"), + }; + + let hash_builder = HashBuilder { + key: Nibbles::from_nibbles(serialized.key), + value, + stack: serialized + .stack + .into_iter() + .map(|raw| RlpNode::from_raw(&raw).expect("RlpNode was encoded properly; qed")) + .collect(), + state_masks: serialized + .state_masks + .into_iter() + .map(|mask| TrieMask::new(mask)) + .collect(), + tree_masks: serialized.tree_masks.into_iter().map(|mask| TrieMask::new(mask)).collect(), + hash_masks: serialized.hash_masks.into_iter().map(|mask| TrieMask::new(mask)).collect(), + stored_in_database: serialized.stored_in_database, + updated_branch_nodes: None, + proof_retainer: None, + rlp_buf: serialized.rlp_buf, + }; + + IncrementalHashBuilder { + hash_builder, + index: serialized.index, + first_value: serialized.first_value, + + __metrics_min: 0, + __metrics_max: 0, + __metrics_total_values: 0, + } + } + + /// Constructs a new intermediate representation from the hash builder. + + pub fn to_ir(self) -> IncrementalHashBuilderIR { + use alloy_consensus::private::alloy_trie::hash_builder::HashBuilderValueRef; + + IncrementalHashBuilderIR { + key: self.hash_builder.key.to_vec(), + value_type: match self.hash_builder.value.as_ref() { + HashBuilderValueRef::Bytes(_) => 0, + HashBuilderValueRef::Hash(_) => 1, + }, + builder_value: self.hash_builder.value.as_slice().to_vec(), + stack: self.hash_builder.stack.into_iter().map(|n| n.as_slice().to_vec()).collect(), + + state_masks: self.hash_builder.state_masks.into_iter().map(|mask| mask.get()).collect(), + tree_masks: self.hash_builder.tree_masks.into_iter().map(|mask| mask.get()).collect(), + hash_masks: self.hash_builder.hash_masks.into_iter().map(|mask| mask.get()).collect(), + + stored_in_database: self.hash_builder.stored_in_database, + rlp_buf: self.hash_builder.rlp_buf, + index: self.index, + first_value: self.first_value, + } + } + /// Add a new value to the hash builder. pub fn add_value(&mut self, value: Vec) { if self.index == 0x7f { From 60080a959623343ede53d1784e9dc9ef615196fd Mon Sep 17 00:00:00 2001 From: Alexandru Vasile Date: Tue, 2 Sep 2025 17:52:41 +0000 Subject: [PATCH 26/67] hash: Add scale-encodable bloom wrapper Signed-off-by: Alexandru Vasile --- substrate/frame/revive/src/evm/block_hash.rs | 42 ++++++++++++++------ 1 file changed, 30 insertions(+), 12 deletions(-) diff --git a/substrate/frame/revive/src/evm/block_hash.rs b/substrate/frame/revive/src/evm/block_hash.rs index 7bf1e367efad2..19a32384a4824 100644 --- a/substrate/frame/revive/src/evm/block_hash.rs +++ b/substrate/frame/revive/src/evm/block_hash.rs @@ -26,7 +26,7 @@ use alloy_consensus::{ private::alloy_trie::{HashBuilder, Nibbles}, RlpEncodableReceipt, }; -use alloy_core::primitives::{bytes::BufMut, Bloom, FixedBytes, Log, B256}; +use alloy_core::primitives::{bytes::BufMut, Bloom as AlloyBloom, FixedBytes, Log, B256}; use alloy_rlp::Encodable; use codec::{Decode, Encode}; use frame_support::weights::Weight; @@ -123,7 +123,7 @@ impl Block { // Transaction hashes are placed in the ETH block. let mut tx_hashes = Vec::new(); // Bloom filter for the logs emitted by the transactions. - let mut logs_bloom = Bloom::default(); + let mut logs_bloom = AlloyBloom::default(); for detail in transaction_details { let processed = block.process_transaction_details(detail); @@ -132,7 +132,7 @@ impl Block { tx_hashes.push(processed.tx_hash); gas_infos.push(processed.gas_info); receipts.push(processed.encoded_receipt); - logs_bloom.accrue_bloom(&processed.receipt_bloom); + logs_bloom.accrue_bloom(&processed.receipt_bloom.0); } // Compute expensive trie roots. @@ -208,7 +208,7 @@ impl Block { tx_hash, gas_info: ReceiptGasInfo { gas_used: gas_used.ref_time().into() }, encoded_receipt, - receipt_bloom, + receipt_bloom: Bloom(receipt_bloom), } } @@ -554,6 +554,24 @@ impl IncrementalHashBuilder { } } +/// The Ethereum 256 byte bloom filter that is scale encodable. +#[derive(Clone)] +struct Bloom(AlloyBloom); + +impl codec::Encode for Bloom { + fn encode_to(&self, dest: &mut T) { + self.0.data().encode_to(dest); + } +} + +impl codec::Decode for Bloom { + fn decode(input: &mut I) -> Result { + const BLOOM_SIZE_BYTES: usize = 256; + let data = <[u8; BLOOM_SIZE_BYTES]>::decode(input)?; + Ok(Bloom(data.into())) + } +} + /// Accumulate receipts into a stream of RLP encoded bytes. /// This is a very straight forward implementation that RLP encodes logs as they are added. /// @@ -594,7 +612,7 @@ pub struct AccumulateReceipt { impl AccumulateReceipt { /// Constructs a new [`AccumulateReceipt`]. pub const fn new() -> Self { - Self { encoding: Vec::new(), bloom: Bloom(FixedBytes::ZERO) } + Self { encoding: Vec::new(), bloom: Bloom(AlloyBloom(FixedBytes::ZERO)) } } /// Reset the state of the receipt accumulator. @@ -611,7 +629,7 @@ impl AccumulateReceipt { log.topics.into_iter().map(|h| FixedBytes::from(h.0)).collect::>(), log.data.into(), ); - self.bloom.accrue_log(&log); + self.bloom.0.accrue_log(&log); log.encode(&mut self.encoding); } @@ -624,7 +642,7 @@ impl AccumulateReceipt { list: true, payload_length: alloy_rlp::Encodable::length(&status) + alloy_rlp::Encodable::length(&gas) + - alloy_rlp::Encodable::length(&self.bloom) + + alloy_rlp::Encodable::length(&self.bloom.0) + list_header_length, }; @@ -632,7 +650,7 @@ impl AccumulateReceipt { header.encode(&mut encoded); alloy_rlp::Encodable::encode(&status, &mut encoded); alloy_rlp::Encodable::encode(&gas, &mut encoded); - alloy_rlp::Encodable::encode(&self.bloom, &mut encoded); + alloy_rlp::Encodable::encode(&self.bloom.0, &mut encoded); let logs_header = alloy_rlp::Header { list: true, payload_length: logs_length }; logs_header.encode(&mut encoded); @@ -669,7 +687,7 @@ impl EthereumBlockBuilder { receipts_root_builder: None, gas_used: U256::zero(), tx_hashes: Vec::new(), - logs_bloom: Bloom(FixedBytes::ZERO), + logs_bloom: Bloom(AlloyBloom(FixedBytes::ZERO)), gas_info: Vec::new(), receipt: AccumulateReceipt::new(), @@ -729,7 +747,7 @@ impl EthereumBlockBuilder { }; let receipt_bloom = receipt.bloom_slow(); - self.logs_bloom.accrue_bloom(&receipt_bloom); + self.logs_bloom.0.accrue_bloom(&receipt_bloom); // Receipt encoding must be prefixed with the rlp(transaction type). let mut encoded_receipt = transaction_type.clone(); @@ -755,7 +773,7 @@ impl EthereumBlockBuilder { self.gas_info.push(ReceiptGasInfo { gas_used: gas_used.ref_time().into() }); let receipt_bloom = self.receipt.bloom.clone(); - self.logs_bloom.accrue_bloom(&receipt_bloom); + self.logs_bloom.0.accrue_bloom(&receipt_bloom.0); let encoded_receipt = self.receipt.finish(success, self.gas_used.as_u64(), transaction_type); self.receipt.reset(); @@ -796,7 +814,7 @@ impl EthereumBlockBuilder { gas_used: self.gas_used, - logs_bloom: (*self.logs_bloom.data()).into(), + logs_bloom: (*self.logs_bloom.0.data()).into(), transactions: HashesOrTransactionInfos::Hashes(tx_hashes), ..Default::default() From 0955d491c7ba5e361b1483c784dc9f850264a59f Mon Sep 17 00:00:00 2001 From: Alexandru Vasile Date: Tue, 2 Sep 2025 17:58:44 +0000 Subject: [PATCH 27/67] hash: Add type info for the bloom wrapper Signed-off-by: Alexandru Vasile --- substrate/frame/revive/src/evm/block_hash.rs | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/substrate/frame/revive/src/evm/block_hash.rs b/substrate/frame/revive/src/evm/block_hash.rs index 19a32384a4824..a93b24cb72faf 100644 --- a/substrate/frame/revive/src/evm/block_hash.rs +++ b/substrate/frame/revive/src/evm/block_hash.rs @@ -334,7 +334,7 @@ pub struct IncrementalHashBuilder { /// The intermediate representation of the [`IncrementalHashBuilder`] that can be placed into the /// pallets storage. This contains the minimum amount of data that is needed to serialize /// and deserialize the incremental hash builder. -#[derive(codec::Encode, codec::Decode, scale_info::TypeInfo, Clone, PartialEq, Eq, Debug)] +#[derive(Encode, Decode, scale_info::TypeInfo, Clone, PartialEq, Eq, Debug)] pub struct IncrementalHashBuilderIR { /// The nibbles of the builder. pub key: Vec, @@ -558,6 +558,7 @@ impl IncrementalHashBuilder { #[derive(Clone)] struct Bloom(AlloyBloom); +const BLOOM_SIZE_BYTES: usize = 256; impl codec::Encode for Bloom { fn encode_to(&self, dest: &mut T) { self.0.data().encode_to(dest); @@ -566,12 +567,19 @@ impl codec::Encode for Bloom { impl codec::Decode for Bloom { fn decode(input: &mut I) -> Result { - const BLOOM_SIZE_BYTES: usize = 256; let data = <[u8; BLOOM_SIZE_BYTES]>::decode(input)?; Ok(Bloom(data.into())) } } +impl TypeInfo for Bloom { + type Identity = [u8; BLOOM_SIZE_BYTES]; + + fn type_info() -> scale_info::Type { + <[u8; BLOOM_SIZE_BYTES]>::type_info() + } +} + /// Accumulate receipts into a stream of RLP encoded bytes. /// This is a very straight forward implementation that RLP encodes logs as they are added. /// @@ -602,6 +610,7 @@ impl codec::Decode for Bloom { /// /// On average, from the real ethereum block, this implementation reduces the memory usage by 30%. /// `EncodedReceipt Space optimization (on average): 0.6995642434146292` +#[derive(Encode, Decode, TypeInfo)] pub struct AccumulateReceipt { /// The RLP bytes where the logs are accumulated. encoding: Vec, From feaabc073a9ff369f2a62e8bb76eeb0e48849f89 Mon Sep 17 00:00:00 2001 From: Alexandru Vasile Date: Tue, 2 Sep 2025 18:12:24 +0000 Subject: [PATCH 28/67] hash: Add IR for block builder Signed-off-by: Alexandru Vasile --- substrate/frame/revive/src/evm/block_hash.rs | 57 ++++++++++++++++++-- 1 file changed, 54 insertions(+), 3 deletions(-) diff --git a/substrate/frame/revive/src/evm/block_hash.rs b/substrate/frame/revive/src/evm/block_hash.rs index a93b24cb72faf..e8d8750b8a087 100644 --- a/substrate/frame/revive/src/evm/block_hash.rs +++ b/substrate/frame/revive/src/evm/block_hash.rs @@ -377,7 +377,7 @@ impl IncrementalHashBuilder { } } - /// Constructs a new hash builder from the intermediate representation. + /// Converts the intermediate representation back into a builder. pub fn from_ir(serialized: IncrementalHashBuilderIR) -> Self { use alloy_consensus::private::alloy_trie::{ hash_builder::{HashBuilderValue, HashBuilderValueRef}, @@ -438,8 +438,7 @@ impl IncrementalHashBuilder { } } - /// Constructs a new intermediate representation from the hash builder. - + /// Converts the builder into an intermediate representation. pub fn to_ir(self) -> IncrementalHashBuilderIR { use alloy_consensus::private::alloy_trie::hash_builder::HashBuilderValueRef; @@ -670,6 +669,21 @@ impl AccumulateReceipt { } } +/// The intermediate representation of the Ethereum block builder. +#[derive(Encode, Decode, TypeInfo)] +pub struct EthereumBlockBuilderIR { + transaction_root_builder: Option, + receipts_root_builder: Option, + + gas_used: U256, + pub(crate) tx_hashes: Vec, + + logs_bloom: [u8; BLOOM_SIZE_BYTES], + gas_info: Vec, + + receipt: AccumulateReceipt, +} + /// Ethereum block builder. pub struct EthereumBlockBuilder { transaction_root_builder: Option, @@ -705,6 +719,39 @@ impl EthereumBlockBuilder { } } + /// Converts the builder into an intermediate representation. + pub fn to_ir(self) -> EthereumBlockBuilderIR { + EthereumBlockBuilderIR { + transaction_root_builder: self.transaction_root_builder.map(|b| b.to_ir()), + receipts_root_builder: self.receipts_root_builder.map(|b| b.to_ir()), + gas_used: self.gas_used, + tx_hashes: self.tx_hashes, + logs_bloom: (*self.logs_bloom.0.data()).into(), + gas_info: self.gas_info, + receipt: self.receipt, + } + } + + /// Converts the intermediate representation back into a builder. + pub fn from_ir(ir: EthereumBlockBuilderIR) -> Self { + Self { + transaction_root_builder: ir + .transaction_root_builder + .map(|b| IncrementalHashBuilder::from_ir(b)), + receipts_root_builder: ir + .receipts_root_builder + .map(|b| IncrementalHashBuilder::from_ir(b)), + gas_used: ir.gas_used, + tx_hashes: ir.tx_hashes, + logs_bloom: Bloom(AlloyBloom(FixedBytes::from_slice(&ir.logs_bloom))), + gas_info: ir.gas_info, + receipt: ir.receipt, + + __metrics_receipts: 0.0, + __metrics_receipts_len: 0, + } + } + /// Reset the state of the block builder to accommodate for the next block. pub fn reset(&mut self) { *self = Self::new(); @@ -967,6 +1014,10 @@ mod test { } incremental_block.process_transaction(details.clone()); + + let ir = incremental_block.to_ir(); + incremental_block = EthereumBlockBuilder::from_ir(ir); + println!(" Otherwise size {:?}", log_size); } From 3219183e7ccef291726b05aa9ac06befd3ffd651 Mon Sep 17 00:00:00 2001 From: Alexandru Vasile Date: Tue, 2 Sep 2025 18:33:28 +0000 Subject: [PATCH 29/67] hash: Simplify the storage of block builder Signed-off-by: Alexandru Vasile --- substrate/frame/revive/src/evm/block_hash.rs | 32 +++++++------------- substrate/frame/revive/src/lib.rs | 6 ++-- 2 files changed, 14 insertions(+), 24 deletions(-) diff --git a/substrate/frame/revive/src/evm/block_hash.rs b/substrate/frame/revive/src/evm/block_hash.rs index e8d8750b8a087..21fa17d41c980 100644 --- a/substrate/frame/revive/src/evm/block_hash.rs +++ b/substrate/frame/revive/src/evm/block_hash.rs @@ -642,7 +642,7 @@ impl AccumulateReceipt { } /// Finalize the accumulated receipt and return the RLP encoded bytes. - pub fn finish(&mut self, status: bool, gas: u64, transaction_type: Vec) -> Vec { + pub fn finish(&self, status: bool, gas: u64, transaction_type: Vec) -> Vec { let logs_length = self.encoding.len(); let list_header_length = logs_length + alloy_rlp::length_of_length(logs_length); @@ -680,8 +680,6 @@ pub struct EthereumBlockBuilderIR { logs_bloom: [u8; BLOOM_SIZE_BYTES], gas_info: Vec, - - receipt: AccumulateReceipt, } /// Ethereum block builder. @@ -695,8 +693,6 @@ pub struct EthereumBlockBuilder { logs_bloom: Bloom, gas_info: Vec, - receipt: AccumulateReceipt, - // Added to capture the gains of receipts encoding. __metrics_receipts: f64, __metrics_receipts_len: usize, @@ -712,7 +708,6 @@ impl EthereumBlockBuilder { tx_hashes: Vec::new(), logs_bloom: Bloom(AlloyBloom(FixedBytes::ZERO)), gas_info: Vec::new(), - receipt: AccumulateReceipt::new(), __metrics_receipts: 0.0, __metrics_receipts_len: 0, @@ -728,7 +723,6 @@ impl EthereumBlockBuilder { tx_hashes: self.tx_hashes, logs_bloom: (*self.logs_bloom.0.data()).into(), gas_info: self.gas_info, - receipt: self.receipt, } } @@ -745,7 +739,6 @@ impl EthereumBlockBuilder { tx_hashes: ir.tx_hashes, logs_bloom: Bloom(AlloyBloom(FixedBytes::from_slice(&ir.logs_bloom))), gas_info: ir.gas_info, - receipt: ir.receipt, __metrics_receipts: 0.0, __metrics_receipts_len: 0, @@ -757,13 +750,12 @@ impl EthereumBlockBuilder { *self = Self::new(); } - /// Adds a log to the current receipt object. - pub fn add_log(&mut self, log: EventLog) { - self.receipt.add_log(log); - } - /// Process a single transaction at a time. - pub fn process_transaction(&mut self, detail: TransactionDetails) { + pub fn process_transaction( + &mut self, + detail: TransactionDetails, + accumulate_receipt: AccumulateReceipt, + ) { let TransactionDetails { transaction_encoded, success, gas_used, logs } = detail; let tx_hash = H256(keccak_256(&transaction_encoded)); @@ -828,11 +820,9 @@ impl EthereumBlockBuilder { self.gas_used = self.gas_used.saturating_add(gas_used.ref_time().into()); self.gas_info.push(ReceiptGasInfo { gas_used: gas_used.ref_time().into() }); - let receipt_bloom = self.receipt.bloom.clone(); - self.logs_bloom.0.accrue_bloom(&receipt_bloom.0); let encoded_receipt = - self.receipt.finish(success, self.gas_used.as_u64(), transaction_type); - self.receipt.reset(); + accumulate_receipt.finish(success, self.gas_used.as_u64(), transaction_type); + self.logs_bloom.0.accrue_bloom(&accumulate_receipt.bloom.0); Self::add_builder_value(&mut self.receipts_root_builder, encoded_receipt); } @@ -1006,14 +996,14 @@ mod test { for details in &transaction_details { let mut log_size = 0; + let mut accumulate_receipt = AccumulateReceipt::new(); for log in &details.logs { let current_size = log.data.len() + log.topics.len() * 32 + 20; - log_size += current_size; - incremental_block.add_log(log.clone()); + accumulate_receipt.add_log(log.clone()); } - incremental_block.process_transaction(details.clone()); + incremental_block.process_transaction(details.clone(), accumulate_receipt); let ir = incremental_block.to_ir(); incremental_block = EthereumBlockBuilder::from_ir(ir); diff --git a/substrate/frame/revive/src/lib.rs b/substrate/frame/revive/src/lib.rs index eeb771135f766..cb26a56606773 100644 --- a/substrate/frame/revive/src/lib.rs +++ b/substrate/frame/revive/src/lib.rs @@ -1817,9 +1817,9 @@ impl Pallet { let mut inflight_events = eth_block_storage::INFLIGHT_EVENTS.borrow_mut(); let logs = core::mem::replace(&mut *inflight_events, Vec::new()); - eth_block_storage::INCREMENTAL_BUILDER.borrow_mut().process_transaction( - TransactionDetails { transaction_encoded, logs, success, gas_used }, - ); + // eth_block_storage::INCREMENTAL_BUILDER.borrow_mut().process_transaction( + // TransactionDetails { transaction_encoded, logs, success, gas_used }, + // ); } /// The address of the validator that produced the current block. From d505da3693fe2ac9f4c5cc3ffbd7226574ee8fc8 Mon Sep 17 00:00:00 2001 From: Alexandru Vasile Date: Tue, 2 Sep 2025 19:03:05 +0000 Subject: [PATCH 30/67] hash: Return receipt info and remove bloom wrapper Signed-off-by: Alexandru Vasile --- substrate/frame/revive/src/evm/block_hash.rs | 64 ++++++-------------- 1 file changed, 18 insertions(+), 46 deletions(-) diff --git a/substrate/frame/revive/src/evm/block_hash.rs b/substrate/frame/revive/src/evm/block_hash.rs index 21fa17d41c980..7d7465cff64ca 100644 --- a/substrate/frame/revive/src/evm/block_hash.rs +++ b/substrate/frame/revive/src/evm/block_hash.rs @@ -26,7 +26,7 @@ use alloy_consensus::{ private::alloy_trie::{HashBuilder, Nibbles}, RlpEncodableReceipt, }; -use alloy_core::primitives::{bytes::BufMut, Bloom as AlloyBloom, FixedBytes, Log, B256}; +use alloy_core::primitives::{bytes::BufMut, Bloom, FixedBytes, Log, B256}; use alloy_rlp::Encodable; use codec::{Decode, Encode}; use frame_support::weights::Weight; @@ -123,7 +123,7 @@ impl Block { // Transaction hashes are placed in the ETH block. let mut tx_hashes = Vec::new(); // Bloom filter for the logs emitted by the transactions. - let mut logs_bloom = AlloyBloom::default(); + let mut logs_bloom = Bloom::default(); for detail in transaction_details { let processed = block.process_transaction_details(detail); @@ -132,7 +132,7 @@ impl Block { tx_hashes.push(processed.tx_hash); gas_infos.push(processed.gas_info); receipts.push(processed.encoded_receipt); - logs_bloom.accrue_bloom(&processed.receipt_bloom.0); + logs_bloom.accrue_bloom(&processed.receipt_bloom); } // Compute expensive trie roots. @@ -208,7 +208,7 @@ impl Block { tx_hash, gas_info: ReceiptGasInfo { gas_used: gas_used.ref_time().into() }, encoded_receipt, - receipt_bloom: Bloom(receipt_bloom), + receipt_bloom, } } @@ -553,32 +553,6 @@ impl IncrementalHashBuilder { } } -/// The Ethereum 256 byte bloom filter that is scale encodable. -#[derive(Clone)] -struct Bloom(AlloyBloom); - -const BLOOM_SIZE_BYTES: usize = 256; -impl codec::Encode for Bloom { - fn encode_to(&self, dest: &mut T) { - self.0.data().encode_to(dest); - } -} - -impl codec::Decode for Bloom { - fn decode(input: &mut I) -> Result { - let data = <[u8; BLOOM_SIZE_BYTES]>::decode(input)?; - Ok(Bloom(data.into())) - } -} - -impl TypeInfo for Bloom { - type Identity = [u8; BLOOM_SIZE_BYTES]; - - fn type_info() -> scale_info::Type { - <[u8; BLOOM_SIZE_BYTES]>::type_info() - } -} - /// Accumulate receipts into a stream of RLP encoded bytes. /// This is a very straight forward implementation that RLP encodes logs as they are added. /// @@ -609,7 +583,6 @@ impl TypeInfo for Bloom { /// /// On average, from the real ethereum block, this implementation reduces the memory usage by 30%. /// `EncodedReceipt Space optimization (on average): 0.6995642434146292` -#[derive(Encode, Decode, TypeInfo)] pub struct AccumulateReceipt { /// The RLP bytes where the logs are accumulated. encoding: Vec, @@ -620,12 +593,7 @@ pub struct AccumulateReceipt { impl AccumulateReceipt { /// Constructs a new [`AccumulateReceipt`]. pub const fn new() -> Self { - Self { encoding: Vec::new(), bloom: Bloom(AlloyBloom(FixedBytes::ZERO)) } - } - - /// Reset the state of the receipt accumulator. - pub fn reset(&mut self) { - *self = Self::new(); + Self { encoding: Vec::new(), bloom: Bloom(FixedBytes::ZERO) } } /// Add the log into the accumulated receipt. @@ -637,7 +605,7 @@ impl AccumulateReceipt { log.topics.into_iter().map(|h| FixedBytes::from(h.0)).collect::>(), log.data.into(), ); - self.bloom.0.accrue_log(&log); + self.bloom.accrue_log(&log); log.encode(&mut self.encoding); } @@ -669,6 +637,9 @@ impl AccumulateReceipt { } } +/// Number of bytes that a bloom stores. +const BLOOM_SIZE_BYTES: usize = 256; + /// The intermediate representation of the Ethereum block builder. #[derive(Encode, Decode, TypeInfo)] pub struct EthereumBlockBuilderIR { @@ -706,7 +677,7 @@ impl EthereumBlockBuilder { receipts_root_builder: None, gas_used: U256::zero(), tx_hashes: Vec::new(), - logs_bloom: Bloom(AlloyBloom(FixedBytes::ZERO)), + logs_bloom: Bloom(FixedBytes::ZERO), gas_info: Vec::new(), __metrics_receipts: 0.0, @@ -721,7 +692,7 @@ impl EthereumBlockBuilder { receipts_root_builder: self.receipts_root_builder.map(|b| b.to_ir()), gas_used: self.gas_used, tx_hashes: self.tx_hashes, - logs_bloom: (*self.logs_bloom.0.data()).into(), + logs_bloom: (*self.logs_bloom.data()).into(), gas_info: self.gas_info, } } @@ -737,7 +708,7 @@ impl EthereumBlockBuilder { .map(|b| IncrementalHashBuilder::from_ir(b)), gas_used: ir.gas_used, tx_hashes: ir.tx_hashes, - logs_bloom: Bloom(AlloyBloom(FixedBytes::from_slice(&ir.logs_bloom))), + logs_bloom: Bloom(FixedBytes::from_slice(&ir.logs_bloom)), gas_info: ir.gas_info, __metrics_receipts: 0.0, @@ -755,7 +726,7 @@ impl EthereumBlockBuilder { &mut self, detail: TransactionDetails, accumulate_receipt: AccumulateReceipt, - ) { + ) -> ReceiptGasInfo { let TransactionDetails { transaction_encoded, success, gas_used, logs } = detail; let tx_hash = H256(keccak_256(&transaction_encoded)); @@ -795,7 +766,7 @@ impl EthereumBlockBuilder { }; let receipt_bloom = receipt.bloom_slow(); - self.logs_bloom.0.accrue_bloom(&receipt_bloom); + self.logs_bloom.accrue_bloom(&receipt_bloom); // Receipt encoding must be prefixed with the rlp(transaction type). let mut encoded_receipt = transaction_type.clone(); @@ -818,13 +789,14 @@ impl EthereumBlockBuilder { } self.gas_used = self.gas_used.saturating_add(gas_used.ref_time().into()); - self.gas_info.push(ReceiptGasInfo { gas_used: gas_used.ref_time().into() }); let encoded_receipt = accumulate_receipt.finish(success, self.gas_used.as_u64(), transaction_type); - self.logs_bloom.0.accrue_bloom(&accumulate_receipt.bloom.0); + self.logs_bloom.accrue_bloom(&accumulate_receipt.bloom); Self::add_builder_value(&mut self.receipts_root_builder, encoded_receipt); + + ReceiptGasInfo { gas_used: gas_used.ref_time().into() } } /// Build the ethereum block from provided data. @@ -860,7 +832,7 @@ impl EthereumBlockBuilder { gas_used: self.gas_used, - logs_bloom: (*self.logs_bloom.0.data()).into(), + logs_bloom: (*self.logs_bloom.data()).into(), transactions: HashesOrTransactionInfos::Hashes(tx_hashes), ..Default::default() From ebde141d5747630a3901cdd7c2d0e903127d981a Mon Sep 17 00:00:00 2001 From: Alexandru Vasile Date: Tue, 2 Sep 2025 19:50:20 +0000 Subject: [PATCH 31/67] revive: Add AccumulateReceipt as environmental and refactor block Signed-off-by: Alexandru Vasile --- substrate/frame/revive/src/evm/block_hash.rs | 236 +++---------------- substrate/frame/revive/src/exec.rs | 10 +- substrate/frame/revive/src/lib.rs | 38 ++- 3 files changed, 62 insertions(+), 222 deletions(-) diff --git a/substrate/frame/revive/src/evm/block_hash.rs b/substrate/frame/revive/src/evm/block_hash.rs index 7d7465cff64ca..d2a46300911be 100644 --- a/substrate/frame/revive/src/evm/block_hash.rs +++ b/substrate/frame/revive/src/evm/block_hash.rs @@ -48,16 +48,15 @@ pub struct EventLog { } /// The transaction details needed to build the ethereum block hash. -#[derive(Encode, Decode, TypeInfo, Clone, Debug)] pub struct TransactionDetails { /// The RLP encoding of the signed transaction. pub transaction_encoded: Vec, - /// The logs emitted by the transaction. - pub logs: Vec, /// Whether the transaction was successful. pub success: bool, /// The accurate gas used by the transaction. pub gas_used: Weight, + /// The RLP encoded receipt with logs bloom. + pub receipt: AccumulateReceipt, } /// Details needed to reconstruct the receipt info in the RPC @@ -78,140 +77,6 @@ struct TransactionProcessed { } impl Block { - /// Build the Ethereum block. - /// - /// # Note - /// - /// This is an expensive operation. - /// - /// (I) For each transaction captured (with the unbounded number of events): - /// - transaction hash is computed using `keccak256` - /// - transaction is 2718 RLP encoded - /// - the receipt is constructed and contains all the logs emitted by the transaction - /// - This includes computing the bloom filter for the logs (O(N) to compute) - /// - The receipt is 2718 RLP encoded: the cost is O(N) to encode due to the number of logs. - /// - /// (II) Transaction trie root and receipt trie root are computed. - /// - /// (III) Block hash is computed from the provided information. - pub fn build( - transaction_details: impl IntoIterator, - block_number: U256, - parent_hash: H256, - timestamp: U256, - block_author: H160, - gas_limit: U256, - ) -> (H256, Block, Vec) { - let mut block = Self { - number: block_number, - parent_hash, - timestamp, - miner: block_author, - gas_limit, - - // The remaining fields are populated by `process_transaction_details`. - ..Default::default() - }; - - // Needed for computing the transaction root. - let mut signed_tx = Vec::new(); - // Needed for computing the receipt root. - let mut receipts = Vec::new(); - // Gas info will be stored in the pallet storage under `ReceiptInfoData` - // and is needed for reconstructing the Receipts. - let mut gas_infos = Vec::new(); - // Transaction hashes are placed in the ETH block. - let mut tx_hashes = Vec::new(); - // Bloom filter for the logs emitted by the transactions. - let mut logs_bloom = Bloom::default(); - - for detail in transaction_details { - let processed = block.process_transaction_details(detail); - - signed_tx.push(processed.transaction_encoded); - tx_hashes.push(processed.tx_hash); - gas_infos.push(processed.gas_info); - receipts.push(processed.encoded_receipt); - logs_bloom.accrue_bloom(&processed.receipt_bloom); - } - - // Compute expensive trie roots. - let transactions_root = Self::compute_trie_root(&signed_tx); - let receipts_root = Self::compute_trie_root(&receipts); - - // We use the transaction root as state root since the state - // root is not yet computed by the substrate block. - block.state_root = transactions_root.0.into(); - block.transactions_root = transactions_root.0.into(); - block.receipts_root = receipts_root.0.into(); - block.logs_bloom = (*logs_bloom.data()).into(); - block.transactions = HashesOrTransactionInfos::Hashes(tx_hashes); - - // Compute the ETH header hash. - let block_hash = block.header_hash(); - - (block_hash, block, gas_infos) - } - - /// Returns a tuple of the RLP encoded transaction and receipt. - /// - /// Internally collects the total gas used. - fn process_transaction_details(&mut self, detail: TransactionDetails) -> TransactionProcessed { - let TransactionDetails { transaction_encoded, logs, success, gas_used } = detail; - - let tx_hash = H256(keccak_256(&transaction_encoded)); - // The transaction type is the first byte from the encoded transaction, - // when the transaction is not legacy. For legacy transactions, there's - // no type defined. Additionally, the RLP encoding of the tx type byte - // is identical to the tx type. - let transaction_type = transaction_encoded - .first() - .cloned() - .map(|first| match first { - TYPE_EIP2930 | TYPE_EIP1559 | TYPE_EIP4844 | TYPE_EIP7702 => vec![first], - _ => vec![], - }) - .unwrap_or_default(); - - let logs = logs - .into_iter() - .map(|log| { - Log::new_unchecked( - log.contract.0.into(), - log.topics.into_iter().map(|h| FixedBytes::from(h.0)).collect::>(), - log.data.into(), - ) - }) - .collect(); - - self.gas_used = self.gas_used.saturating_add(gas_used.ref_time().into()); - - let receipt = alloy_consensus::Receipt { - status: success.into(), - cumulative_gas_used: self.gas_used.as_u64(), - logs, - }; - - let receipt_bloom = receipt.bloom_slow(); - - // Receipt encoding must be prefixed with the rlp(transaction type). - let mut encoded_receipt = transaction_type; - let encoded_len = encoded_receipt - .len() - .saturating_add(receipt.rlp_encoded_length_with_bloom(&receipt_bloom)); - encoded_receipt.reserve(encoded_len); - - receipt.rlp_encode_with_bloom(&receipt_bloom, &mut encoded_receipt); - - TransactionProcessed { - transaction_encoded, - tx_hash, - gas_info: ReceiptGasInfo { gas_used: gas_used.ref_time().into() }, - encoded_receipt, - receipt_bloom, - } - } - /// Compute the trie root using the `(rlp(index), encoded(item))` pairs. pub fn compute_trie_root(items: &[Vec]) -> B256 { alloy_consensus::proofs::ordered_trie_root_with_encoder(items, |item, buf| { @@ -585,9 +450,9 @@ impl IncrementalHashBuilder { /// `EncodedReceipt Space optimization (on average): 0.6995642434146292` pub struct AccumulateReceipt { /// The RLP bytes where the logs are accumulated. - encoding: Vec, + pub encoding: Vec, /// The bloom filter collected from accumulating logs. - bloom: Bloom, + pub bloom: Bloom, } impl AccumulateReceipt { @@ -610,15 +475,21 @@ impl AccumulateReceipt { } /// Finalize the accumulated receipt and return the RLP encoded bytes. - pub fn finish(&self, status: bool, gas: u64, transaction_type: Vec) -> Vec { - let logs_length = self.encoding.len(); + pub fn encoded_receipt( + encoded_logs: Vec, + bloom: Bloom, + status: bool, + gas: u64, + transaction_type: Vec, + ) -> Vec { + let logs_length = encoded_logs.len(); let list_header_length = logs_length + alloy_rlp::length_of_length(logs_length); let header = alloy_rlp::Header { list: true, payload_length: alloy_rlp::Encodable::length(&status) + alloy_rlp::Encodable::length(&gas) + - alloy_rlp::Encodable::length(&self.bloom.0) + + alloy_rlp::Encodable::length(&bloom.0) + list_header_length, }; @@ -626,12 +497,12 @@ impl AccumulateReceipt { header.encode(&mut encoded); alloy_rlp::Encodable::encode(&status, &mut encoded); alloy_rlp::Encodable::encode(&gas, &mut encoded); - alloy_rlp::Encodable::encode(&self.bloom.0, &mut encoded); + alloy_rlp::Encodable::encode(&bloom.0, &mut encoded); let logs_header = alloy_rlp::Header { list: true, payload_length: logs_length }; logs_header.encode(&mut encoded); - encoded.extend(self.encoding.clone()); + encoded.extend(encoded_logs); encoded } @@ -724,76 +595,31 @@ impl EthereumBlockBuilder { /// Process a single transaction at a time. pub fn process_transaction( &mut self, - detail: TransactionDetails, - accumulate_receipt: AccumulateReceipt, + transaction_encoded: Vec, + success: bool, + gas_used: Weight, + encoded_logs: Vec, + receipt_bloom: Bloom, ) -> ReceiptGasInfo { - let TransactionDetails { transaction_encoded, success, gas_used, logs } = detail; - let tx_hash = H256(keccak_256(&transaction_encoded)); self.tx_hashes.push(tx_hash); + // Update the transaction trie. let transaction_type = Self::extract_transaction_type(transaction_encoded.as_slice()); Self::add_builder_value(&mut self.transaction_root_builder, transaction_encoded); - // The following block is used to derive the optimization number and - // will be removed once we determine the optimal path forward: - { - let mut size = 0; - - let logs = logs - .into_iter() - .map(|log| { - // Data len (u8) + topics (32 * u8) + contract (20 * u8) - size += log.data.len() + log.topics.len() * 32 + 20; - - let log = Log::new_unchecked( - log.contract.0.into(), - log.topics.into_iter().map(|h| FixedBytes::from(h.0)).collect::>(), - log.data.into(), - ); - - log - }) - .collect(); - - // success + gas + bloom. - size += 1 + 8 + 32; - - let receipt = alloy_consensus::Receipt { - status: success.into(), - cumulative_gas_used: self.gas_used.as_u64(), - logs, - }; - - let receipt_bloom = receipt.bloom_slow(); - self.logs_bloom.accrue_bloom(&receipt_bloom); - - // Receipt encoding must be prefixed with the rlp(transaction type). - let mut encoded_receipt = transaction_type.clone(); - let encoded_len = encoded_receipt - .len() - .saturating_add(receipt.rlp_encoded_length_with_bloom(&receipt_bloom)); - encoded_receipt.reserve(encoded_len); - - receipt.rlp_encode_with_bloom(&receipt_bloom, &mut encoded_receipt); - - println!("+Encoded receipt {:?}", encoded_receipt.len()); - println!("+Used receipt space {:?}", size + encoded_receipt.len()); - - let used_space_ratio = - encoded_receipt.len() as f64 / (size + encoded_receipt.len()) as f64; - self.__metrics_receipts += used_space_ratio; - self.__metrics_receipts_len += 1; - - println!("+ Used space ratio {:?}", used_space_ratio); - } - + // Update gas and logs bloom. self.gas_used = self.gas_used.saturating_add(gas_used.ref_time().into()); + self.logs_bloom.accrue_bloom(&receipt_bloom); - let encoded_receipt = - accumulate_receipt.finish(success, self.gas_used.as_u64(), transaction_type); - self.logs_bloom.accrue_bloom(&accumulate_receipt.bloom); - + // Update the receipt trie. + let encoded_receipt = AccumulateReceipt::encoded_receipt( + encoded_logs, + receipt_bloom, + success, + self.gas_used.as_u64(), + transaction_type, + ); Self::add_builder_value(&mut self.receipts_root_builder, encoded_receipt); ReceiptGasInfo { gas_used: gas_used.ref_time().into() } diff --git a/substrate/frame/revive/src/exec.rs b/substrate/frame/revive/src/exec.rs index c67238f36d1ad..9fde661bcb384 100644 --- a/substrate/frame/revive/src/exec.rs +++ b/substrate/frame/revive/src/exec.rs @@ -18,7 +18,6 @@ use crate::{ address::{self, AddressMapper}, eth_block_storage, - evm::block_hash::EventLog, gas::GasMeter, limits, precompiles::{All as AllPrecompiles, Instance as PrecompileInstance, Precompiles}, @@ -2030,13 +2029,8 @@ where tracer.log_event(contract, &topics, &data); }); - if eth_block_storage::is_executing_ethereum_call() { - eth_block_storage::INFLIGHT_EVENTS.borrow_mut().push(EventLog { - contract, - data: data.clone(), - topics: topics.clone(), - }); - } + // Capture the log only if it is generated by an Ethereum transaction. + eth_block_storage::capture_ethereum_log(contract, &data, &topics); Contracts::::deposit_event(Event::ContractEmitted { contract, data, topics }); } diff --git a/substrate/frame/revive/src/lib.rs b/substrate/frame/revive/src/lib.rs index cb26a56606773..00716be5abef7 100644 --- a/substrate/frame/revive/src/lib.rs +++ b/substrate/frame/revive/src/lib.rs @@ -45,7 +45,7 @@ pub mod weights; use crate::{ evm::{ - block_hash::{EventLog, ReceiptGasInfo, TransactionDetails}, + block_hash::{AccumulateReceipt, EventLog, ReceiptGasInfo, TransactionDetails}, runtime::GAS_PRICE, CallTracer, GasEncoder, GenericTransaction, PrestateTracer, Trace, Tracer, TracerType, TransactionSigned, TYPE_EIP1559, @@ -130,8 +130,12 @@ const SENTINEL: u32 = u32::MAX; const LOG_TARGET: &str = "runtime::revive"; pub(crate) mod eth_block_storage { - use crate::{evm::block_hash::EthereumBlockBuilder, EventLog}; + use crate::{ + evm::block_hash::{AccumulateReceipt, EthereumBlockBuilder}, + EventLog, H160, H256, + }; use alloc::vec::Vec; + use alloy_core::primitives::Bloom; use core::cell::{RefCell, RefMut}; use environmental::environmental; @@ -139,14 +143,24 @@ pub(crate) mod eth_block_storage { pub const BLOCK_HASH_COUNT: u32 = 256; // Indicates whether an Ethereum call is currently being executed. - environmental!(executing_call: bool); + environmental!(receipt: AccumulateReceipt); + + pub fn capture_ethereum_log(contract: H160, data: &[u8], topics: &[H256]) { + receipt::with(|receipt| { + receipt.add_log(EventLog { contract, data: data.to_vec(), topics: topics.to_vec() }); + }); + } - pub fn is_executing_ethereum_call() -> bool { - executing_call::with(|ctx| *ctx).unwrap_or(false) + pub fn get_receipt_details() -> Option<(Vec, Bloom)> { + receipt::with(|receipt| { + let encoding = core::mem::take(&mut receipt.encoding); + let bloom = core::mem::take(&mut receipt.bloom); + (encoding, bloom) + }) } pub fn with_ethereum_context(f: impl FnOnce() -> R) -> R { - executing_call::using(&mut true, f) + receipt::using(&mut AccumulateReceipt::new(), f) } /// A safe global value in the WASM environment. @@ -1817,9 +1831,15 @@ impl Pallet { let mut inflight_events = eth_block_storage::INFLIGHT_EVENTS.borrow_mut(); let logs = core::mem::replace(&mut *inflight_events, Vec::new()); - // eth_block_storage::INCREMENTAL_BUILDER.borrow_mut().process_transaction( - // TransactionDetails { transaction_encoded, logs, success, gas_used }, - // ); + if let Some((encoded_logs, bloom)) = eth_block_storage::get_receipt_details() { + eth_block_storage::INCREMENTAL_BUILDER.borrow_mut().process_transaction( + transaction_encoded, + success, + gas_used, + encoded_logs, + bloom, + ); + } } /// The address of the validator that produced the current block. From 1ce3cd91dcb10b2ae59ea83c869aa29524c63558 Mon Sep 17 00:00:00 2001 From: Alexandru Vasile Date: Tue, 2 Sep 2025 19:56:50 +0000 Subject: [PATCH 32/67] revive: Remove logs from SafeGlobal Signed-off-by: Alexandru Vasile --- substrate/frame/revive/src/lib.rs | 17 +++++------------ 1 file changed, 5 insertions(+), 12 deletions(-) diff --git a/substrate/frame/revive/src/lib.rs b/substrate/frame/revive/src/lib.rs index 00716be5abef7..204896e5b6d25 100644 --- a/substrate/frame/revive/src/lib.rs +++ b/substrate/frame/revive/src/lib.rs @@ -142,7 +142,11 @@ pub(crate) mod eth_block_storage { /// The maximum number of block hashes to keep in the history. pub const BLOCK_HASH_COUNT: u32 = 256; - // Indicates whether an Ethereum call is currently being executed. + // The events emitted by this pallet while executing the current inflight transaction. + // + // The events are needed to reconstruct the receipt root hash, as they represent the + // logs emitted by the contract. The events are consumed when the transaction is + // completed. To minimize the amount of used memory, the events are RLP encoded directly. environmental!(receipt: AccumulateReceipt); pub fn capture_ethereum_log(contract: H160, data: &[u8], topics: &[H256]) { @@ -187,13 +191,6 @@ pub(crate) mod eth_block_storage { /// on the go with optimal storage. pub static INCREMENTAL_BUILDER: SafeGlobal = SafeGlobal::new(EthereumBlockBuilder::new()); - - /// The events emitted by this pallet while executing the current inflight transaction. - /// - /// The events are needed to reconstruct the receipt root hash, as they represent the - /// logs emitted by the contract. The events are consumed when the transaction is - /// completed. - pub static INFLIGHT_EVENTS: SafeGlobal> = SafeGlobal::new(Vec::new()); } #[frame_support::pallet] @@ -1827,10 +1824,6 @@ impl Pallet { /// /// The data is used during the `on_finalize` hook to reconstruct the ETH block. fn store_transaction(transaction_encoded: Vec, success: bool, gas_used: Weight) { - // Collect inflight events emitted by this EVM transaction. - let mut inflight_events = eth_block_storage::INFLIGHT_EVENTS.borrow_mut(); - let logs = core::mem::replace(&mut *inflight_events, Vec::new()); - if let Some((encoded_logs, bloom)) = eth_block_storage::get_receipt_details() { eth_block_storage::INCREMENTAL_BUILDER.borrow_mut().process_transaction( transaction_encoded, From 8fda9111fb0cecf2eee784c620cae574e0c91fc8 Mon Sep 17 00:00:00 2001 From: Alexandru Vasile Date: Tue, 2 Sep 2025 21:07:38 +0000 Subject: [PATCH 33/67] revive: Place eth block builder IR into storage Signed-off-by: Alexandru Vasile --- substrate/frame/revive/src/evm/block_hash.rs | 13 +++++++++++++ substrate/frame/revive/src/lib.rs | 10 +++++++++- 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/substrate/frame/revive/src/evm/block_hash.rs b/substrate/frame/revive/src/evm/block_hash.rs index d2a46300911be..250fb2598d2ab 100644 --- a/substrate/frame/revive/src/evm/block_hash.rs +++ b/substrate/frame/revive/src/evm/block_hash.rs @@ -524,6 +524,19 @@ pub struct EthereumBlockBuilderIR { gas_info: Vec, } +impl Default for EthereumBlockBuilderIR { + fn default() -> Self { + Self { + transaction_root_builder: None, + receipts_root_builder: None, + gas_used: U256::zero(), + tx_hashes: Vec::new(), + logs_bloom: [0; BLOOM_SIZE_BYTES], + gas_info: Vec::new(), + } + } +} + /// Ethereum block builder. pub struct EthereumBlockBuilder { transaction_root_builder: Option, diff --git a/substrate/frame/revive/src/lib.rs b/substrate/frame/revive/src/lib.rs index 204896e5b6d25..0217f21fdae95 100644 --- a/substrate/frame/revive/src/lib.rs +++ b/substrate/frame/revive/src/lib.rs @@ -45,7 +45,9 @@ pub mod weights; use crate::{ evm::{ - block_hash::{AccumulateReceipt, EventLog, ReceiptGasInfo, TransactionDetails}, + block_hash::{ + AccumulateReceipt, EthereumBlockBuilderIR, EventLog, ReceiptGasInfo, TransactionDetails, + }, runtime::GAS_PRICE, CallTracer, GasEncoder, GenericTransaction, PrestateTracer, Trace, Tracer, TracerType, TransactionSigned, TYPE_EIP1559, @@ -633,6 +635,12 @@ pub mod pallet { #[pallet::unbounded] pub(crate) type ReceiptInfoData = StorageValue<_, Vec, ValueQuery>; + /// Incremental ethereum block builder. + #[pallet::storage] + #[pallet::unbounded] + pub(crate) type EthereumBlockBuilder = + StorageValue<_, EthereumBlockBuilderIR, ValueQuery>; + #[pallet::genesis_config] #[derive(frame_support::DefaultNoBound)] pub struct GenesisConfig { From b1442c8e243e0f08854d5fe1a6b2afc543e59d47 Mon Sep 17 00:00:00 2001 From: Alexandru Vasile Date: Tue, 2 Sep 2025 21:11:03 +0000 Subject: [PATCH 34/67] revive/hash: Disable captured metrics Signed-off-by: Alexandru Vasile --- substrate/frame/revive/src/evm/block_hash.rs | 90 +------------------- 1 file changed, 1 insertion(+), 89 deletions(-) diff --git a/substrate/frame/revive/src/evm/block_hash.rs b/substrate/frame/revive/src/evm/block_hash.rs index 250fb2598d2ab..fcfc3893d0da8 100644 --- a/substrate/frame/revive/src/evm/block_hash.rs +++ b/substrate/frame/revive/src/evm/block_hash.rs @@ -190,10 +190,6 @@ pub struct IncrementalHashBuilder { index: u64, /// RLP encoded value. first_value: Option>, - - __metrics_min: usize, - __metrics_max: usize, - __metrics_total_values: usize, } /// The intermediate representation of the [`IncrementalHashBuilder`] that can be placed into the @@ -231,15 +227,7 @@ pub struct IncrementalHashBuilderIR { impl IncrementalHashBuilder { /// Construct the hash builder from the first value. pub fn new(first_value: Vec) -> Self { - Self { - hash_builder: HashBuilder::default(), - index: 1, - first_value: Some(first_value), - - __metrics_min: usize::MAX, - __metrics_max: 0, - __metrics_total_values: 0, - } + Self { hash_builder: HashBuilder::default(), index: 1, first_value: Some(first_value) } } /// Converts the intermediate representation back into a builder. @@ -296,10 +284,6 @@ impl IncrementalHashBuilder { hash_builder, index: serialized.index, first_value: serialized.first_value, - - __metrics_min: 0, - __metrics_max: 0, - __metrics_total_values: 0, } } @@ -344,12 +328,6 @@ impl IncrementalHashBuilder { self.hash_builder.add_leaf(Nibbles::unpack(&rlp_index), &value); self.index += 1; - - // Update metrics. - let used_mem = self.__hash_size(); - self.__metrics_min = self.__metrics_min.min(used_mem); - self.__metrics_max = self.__metrics_max.max(used_mem); - self.__metrics_total_values += value.len(); } /// Build the trie root hash. @@ -363,59 +341,8 @@ impl IncrementalHashBuilder { self.hash_builder.add_leaf(Nibbles::unpack(&rlp_index), &encoded_value); } - println!(" hash max {}", self.__metrics_max); - println!(" hash min {}", self.__metrics_min); - println!(" hash total {}", self.__metrics_total_values); - println!( - " hash saved worst case {}", - self.__metrics_max as f64 / self.__metrics_total_values as f64 - ); - println!( - " hash saved best case {}", - self.__metrics_min as f64 / self.__metrics_total_values as f64 - ); - self.hash_builder.root().0.into() } - - fn __hash_size(&self) -> usize { - // Masks store u16 (2 bytes): - let masks_len = (self.hash_builder.state_masks.len() + - self.hash_builder.tree_masks.len() + - self.hash_builder.hash_masks.len()) * - 2; - - // Nibble key is: - // pub struct Nibbles { - // /// Nibbles length. - // // This field goes first, because the derived implementation of `PartialEq` compares - // the fields // in order, so we can short-circuit the comparison if the `length` - // field differs. pub(crate) length: usize, - // /// The nibbles themselves, stored as a 256-bit unsigned integer with most - // significant bits set /// first. - // pub(crate) nibbles: U256, - // } - // This could be reduced to 40 bytes. - 40 + - - // Value is of form: - // pub struct HashBuilderValue { - // /// Stores the bytes of either the leaf node value or the hash of adjacent nodes. - // #[cfg_attr(feature = "serde", serde(with = "hex"))] - // buf: Vec, - // /// The kind of value that is stored in `buf`. - // kind: HashBuilderValueKind, - // } - self.hash_builder.value.as_slice().len() + - - // RLP nodes in stack are represented by: - // const MAX: usize = 33; - // pub struct RlpNode(ArrayVec); - self.hash_builder.stack.len() * 33 + - - // pub rlp_buf: Vec, - masks_len + self.hash_builder.rlp_buf.len() - } } /// Accumulate receipts into a stream of RLP encoded bytes. @@ -547,10 +474,6 @@ pub struct EthereumBlockBuilder { logs_bloom: Bloom, gas_info: Vec, - - // Added to capture the gains of receipts encoding. - __metrics_receipts: f64, - __metrics_receipts_len: usize, } impl EthereumBlockBuilder { @@ -563,9 +486,6 @@ impl EthereumBlockBuilder { tx_hashes: Vec::new(), logs_bloom: Bloom(FixedBytes::ZERO), gas_info: Vec::new(), - - __metrics_receipts: 0.0, - __metrics_receipts_len: 0, } } @@ -594,9 +514,6 @@ impl EthereumBlockBuilder { tx_hashes: ir.tx_hashes, logs_bloom: Bloom(FixedBytes::from_slice(&ir.logs_bloom)), gas_info: ir.gas_info, - - __metrics_receipts: 0.0, - __metrics_receipts_len: 0, } } @@ -647,11 +564,6 @@ impl EthereumBlockBuilder { block_author: H160, gas_limit: U256, ) -> (H256, Block, Vec) { - println!( - " EncodedReceipt Space optimization (on average): {:?}", - self.__metrics_receipts / self.__metrics_receipts_len as f64 - ); - let transactions_root = Self::compute_trie_root(&mut self.transaction_root_builder); let receipts_root = Self::compute_trie_root(&mut self.receipts_root_builder); From 3c3dab4170c944af645617bcb25c51dd5a281ee1 Mon Sep 17 00:00:00 2001 From: Alexandru Vasile Date: Tue, 2 Sep 2025 21:13:01 +0000 Subject: [PATCH 35/67] revive: Remove unneeded structures Signed-off-by: Alexandru Vasile --- substrate/frame/revive/src/evm/block_hash.rs | 26 +------------------- substrate/frame/revive/src/lib.rs | 4 +-- 2 files changed, 2 insertions(+), 28 deletions(-) diff --git a/substrate/frame/revive/src/evm/block_hash.rs b/substrate/frame/revive/src/evm/block_hash.rs index fcfc3893d0da8..31506b989b700 100644 --- a/substrate/frame/revive/src/evm/block_hash.rs +++ b/substrate/frame/revive/src/evm/block_hash.rs @@ -22,10 +22,7 @@ use crate::evm::{ }; use alloc::{vec, vec::Vec}; -use alloy_consensus::{ - private::alloy_trie::{HashBuilder, Nibbles}, - RlpEncodableReceipt, -}; +use alloy_consensus::private::alloy_trie::{HashBuilder, Nibbles}; use alloy_core::primitives::{bytes::BufMut, Bloom, FixedBytes, Log, B256}; use alloy_rlp::Encodable; use codec::{Decode, Encode}; @@ -47,18 +44,6 @@ pub struct EventLog { pub topics: Vec, } -/// The transaction details needed to build the ethereum block hash. -pub struct TransactionDetails { - /// The RLP encoding of the signed transaction. - pub transaction_encoded: Vec, - /// Whether the transaction was successful. - pub success: bool, - /// The accurate gas used by the transaction. - pub gas_used: Weight, - /// The RLP encoded receipt with logs bloom. - pub receipt: AccumulateReceipt, -} - /// Details needed to reconstruct the receipt info in the RPC /// layer without losing accuracy. #[derive(Encode, Decode, TypeInfo, Clone, Debug, PartialEq, Eq)] @@ -67,15 +52,6 @@ pub struct ReceiptGasInfo { pub gas_used: U256, } -/// A processed transaction by `Block::process_transaction_details`. -struct TransactionProcessed { - transaction_encoded: Vec, - tx_hash: H256, - gas_info: ReceiptGasInfo, - encoded_receipt: Vec, - receipt_bloom: Bloom, -} - impl Block { /// Compute the trie root using the `(rlp(index), encoded(item))` pairs. pub fn compute_trie_root(items: &[Vec]) -> B256 { diff --git a/substrate/frame/revive/src/lib.rs b/substrate/frame/revive/src/lib.rs index 0217f21fdae95..b4669a5cea50e 100644 --- a/substrate/frame/revive/src/lib.rs +++ b/substrate/frame/revive/src/lib.rs @@ -45,9 +45,7 @@ pub mod weights; use crate::{ evm::{ - block_hash::{ - AccumulateReceipt, EthereumBlockBuilderIR, EventLog, ReceiptGasInfo, TransactionDetails, - }, + block_hash::{EthereumBlockBuilderIR, EventLog, ReceiptGasInfo}, runtime::GAS_PRICE, CallTracer, GasEncoder, GenericTransaction, PrestateTracer, Trace, Tracer, TracerType, TransactionSigned, TYPE_EIP1559, From 78cf4f009489a030d973754f23394ce3ac9976ae Mon Sep 17 00:00:00 2001 From: Alexandru Vasile Date: Tue, 2 Sep 2025 21:24:15 +0000 Subject: [PATCH 36/67] revive/tests: Adjust testing to incremental builder Signed-off-by: Alexandru Vasile --- substrate/frame/revive/src/evm/block_hash.rs | 75 +++++++++---------- .../frame/revive/src/tests/block_hash.rs | 19 ++--- 2 files changed, 40 insertions(+), 54 deletions(-) diff --git a/substrate/frame/revive/src/evm/block_hash.rs b/substrate/frame/revive/src/evm/block_hash.rs index 31506b989b700..ef980b6968165 100644 --- a/substrate/frame/revive/src/evm/block_hash.rs +++ b/substrate/frame/revive/src/evm/block_hash.rs @@ -674,35 +674,44 @@ mod test { panic!("Transaction and receipt index do not match"); } - TransactionDetails { - transaction_encoded: tx_info.transaction_signed.signed_payload(), - logs: receipt_info - .logs - .into_iter() - .map(|log| EventLog { - contract: log.address.into(), - data: log.data.unwrap_or_default().0, - topics: log.topics, - }) - .collect(), - success: receipt_info.status.unwrap_or_default() == 1.into(), - gas_used: receipt_info.gas_used.as_u64().into(), - } + let logs: Vec = receipt_info + .logs + .into_iter() + .map(|log| EventLog { + contract: log.address.into(), + data: log.data.unwrap_or_default().0, + topics: log.topics, + }) + .collect(); + + ( + tx_info.transaction_signed.signed_payload(), + logs, + receipt_info.status.unwrap_or_default() == 1.into(), + receipt_info.gas_used.as_u64(), + ) }) .collect(); + // Build the ethereum block incrementally. let mut incremental_block = EthereumBlockBuilder::new(); - for details in &transaction_details { + for (signed, logs, success, gas_used) in transaction_details { let mut log_size = 0; let mut accumulate_receipt = AccumulateReceipt::new(); - for log in &details.logs { + for log in &logs { let current_size = log.data.len() + log.topics.len() * 32 + 20; log_size += current_size; accumulate_receipt.add_log(log.clone()); } - incremental_block.process_transaction(details.clone(), accumulate_receipt); + incremental_block.process_transaction( + signed, + success, + gas_used.into(), + accumulate_receipt.encoding, + accumulate_receipt.bloom, + ); let ir = incremental_block.to_ir(); incremental_block = EthereumBlockBuilder::from_ir(ir); @@ -713,29 +722,15 @@ mod test { // The block hash would differ here because we don't take into account // the ommers and other fields from the substrate perspective. // However, the state roots must be identical. - let built_incremental = incremental_block.build( - block.number, - block.parent_hash, - block.timestamp, - block.miner, - Default::default(), - ); - - // The block hash would differ here because we don't take into account - // the ommers and other fields from the substrate perspective. - // However, the state roots must be identical. - let old_built_block = Block::build( - transaction_details, - block.number.into(), - block.parent_hash.into(), - block.timestamp.into(), - block.miner.into(), - Default::default(), - ) - .1; - - assert_eq!(old_built_block, built_incremental.1); - let built_block = built_incremental.1; + let built_block = incremental_block + .build( + block.number, + block.parent_hash, + block.timestamp, + block.miner, + Default::default(), + ) + .1; assert_eq!(built_block.gas_used, block.gas_used); assert_eq!(built_block.logs_bloom, block.logs_bloom); diff --git a/substrate/frame/revive/src/tests/block_hash.rs b/substrate/frame/revive/src/tests/block_hash.rs index 5e1d81dc43932..8013d9b5edd24 100644 --- a/substrate/frame/revive/src/tests/block_hash.rs +++ b/substrate/frame/revive/src/tests/block_hash.rs @@ -19,11 +19,11 @@ use crate::{ eth_block_storage, - evm::block_hash::{EventLog, TransactionDetails}, - test_utils::{builder::Contract, deposit_limit, ALICE}, - tests::{assert_ok, builder, Contracts, ExtBuilder, RuntimeOrigin, Test}, - BalanceWithDust, Code, Config, EthBlock, EthereumBlock, InflightEthTxEvents, Pallet, - ReceiptGasInfo, ReceiptInfoData, TransactionSigned, Weight, H256, + evm::block_hash::EventLog, + test_utils::{builder::Contract, ALICE}, + tests::{assert_ok, builder, Contracts, ExtBuilder, Test}, + BalanceWithDust, Code, Config, EthBlock, EthereumBlock, Pallet, ReceiptGasInfo, + ReceiptInfoData, }; use frame_support::traits::{fungible::Mutate, Hooks}; @@ -36,15 +36,6 @@ impl PartialEq for EventLog { } } -impl PartialEq for TransactionDetails { - // Ignore the weight since its subject to change. - fn eq(&self, other: &Self) -> bool { - self.transaction_encoded == other.transaction_encoded && - self.logs == other.logs && - self.success == other.success - } -} - #[test] fn on_initialize_clears_storage() { ExtBuilder::default().existential_deposit(50).build().execute_with(|| { From 88448b8330914e2306be93f99e1a55c400b355c8 Mon Sep 17 00:00:00 2001 From: Alexandru Vasile Date: Tue, 2 Sep 2025 21:32:19 +0000 Subject: [PATCH 37/67] revive: Serialize and deserialize block builder into storage Signed-off-by: Alexandru Vasile --- substrate/frame/revive/src/lib.rs | 51 +++++-------------- .../frame/revive/src/tests/block_hash.rs | 4 +- 2 files changed, 15 insertions(+), 40 deletions(-) diff --git a/substrate/frame/revive/src/lib.rs b/substrate/frame/revive/src/lib.rs index b4669a5cea50e..245abeae8a3ea 100644 --- a/substrate/frame/revive/src/lib.rs +++ b/substrate/frame/revive/src/lib.rs @@ -45,7 +45,7 @@ pub mod weights; use crate::{ evm::{ - block_hash::{EthereumBlockBuilderIR, EventLog, ReceiptGasInfo}, + block_hash::{EthereumBlockBuilder, EthereumBlockBuilderIR, EventLog, ReceiptGasInfo}, runtime::GAS_PRICE, CallTracer, GasEncoder, GenericTransaction, PrestateTracer, Trace, Tracer, TracerType, TransactionSigned, TYPE_EIP1559, @@ -130,13 +130,9 @@ const SENTINEL: u32 = u32::MAX; const LOG_TARGET: &str = "runtime::revive"; pub(crate) mod eth_block_storage { - use crate::{ - evm::block_hash::{AccumulateReceipt, EthereumBlockBuilder}, - EventLog, H160, H256, - }; + use crate::{evm::block_hash::AccumulateReceipt, EventLog, H160, H256}; use alloc::vec::Vec; use alloy_core::primitives::Bloom; - use core::cell::{RefCell, RefMut}; use environmental::environmental; /// The maximum number of block hashes to keep in the history. @@ -166,31 +162,6 @@ pub(crate) mod eth_block_storage { pub fn with_ethereum_context(f: impl FnOnce() -> R) -> R { receipt::using(&mut AccumulateReceipt::new(), f) } - - /// A safe global value in the WASM environment. - pub struct SafeGlobal { - inner: RefCell, - } - - // This is safe as long there is no threads in wasm32. - unsafe impl ::core::marker::Sync for SafeGlobal {} - - impl SafeGlobal { - /// Construct a new [`SafeGlobal`]. - pub const fn new(value: T) -> Self { - Self { inner: RefCell::new(value) } - } - - /// Mutably borrows the wrapped value. - pub fn borrow_mut(&self) -> RefMut<'_, T> { - self.inner.borrow_mut() - } - } - - /// The incremental block builder that builds the trie root hashes - /// on the go with optimal storage. - pub static INCREMENTAL_BUILDER: SafeGlobal = - SafeGlobal::new(EthereumBlockBuilder::new()); } #[frame_support::pallet] @@ -636,7 +607,7 @@ pub mod pallet { /// Incremental ethereum block builder. #[pallet::storage] #[pallet::unbounded] - pub(crate) type EthereumBlockBuilder = + pub(crate) type EthBlockBuilderIR = StorageValue<_, EthereumBlockBuilderIR, ValueQuery>; #[pallet::genesis_config] @@ -678,9 +649,6 @@ pub mod pallet { ReceiptInfoData::::kill(); EthereumBlock::::kill(); - // Reset the block builder for the next block. - eth_block_storage::INCREMENTAL_BUILDER.borrow_mut().reset(); - Weight::zero() } @@ -700,8 +668,10 @@ pub mod pallet { }; let gas_limit = Self::evm_block_gas_limit(); - let (block_hash, block, receipt_data) = eth_block_storage::INCREMENTAL_BUILDER - .borrow_mut() + let block_builder_ir = EthBlockBuilderIR::::get(); + EthBlockBuilderIR::::kill(); + + let (block_hash, block, receipt_data) = EthereumBlockBuilder::from_ir(block_builder_ir) .build(eth_block_num, parent_hash, T::Time::now().into(), block_author, gas_limit); // Put the block hash into storage. @@ -1831,13 +1801,18 @@ impl Pallet { /// The data is used during the `on_finalize` hook to reconstruct the ETH block. fn store_transaction(transaction_encoded: Vec, success: bool, gas_used: Weight) { if let Some((encoded_logs, bloom)) = eth_block_storage::get_receipt_details() { - eth_block_storage::INCREMENTAL_BUILDER.borrow_mut().process_transaction( + let block_builder_ir = EthBlockBuilderIR::::get(); + let mut block_builder = EthereumBlockBuilder::from_ir(block_builder_ir); + + block_builder.process_transaction( transaction_encoded, success, gas_used, encoded_logs, bloom, ); + + EthBlockBuilderIR::::put(block_builder.to_ir()); } } diff --git a/substrate/frame/revive/src/tests/block_hash.rs b/substrate/frame/revive/src/tests/block_hash.rs index 8013d9b5edd24..b40820d4045a1 100644 --- a/substrate/frame/revive/src/tests/block_hash.rs +++ b/substrate/frame/revive/src/tests/block_hash.rs @@ -77,7 +77,7 @@ fn transactions_are_captured() { // Instantiate with code is not captured. assert_ok!(builder::instantiate_with_code(gas_binary).value(1).build()); - assert_eq!(eth_block_storage::INCREMENTAL_BUILDER.borrow_mut().tx_hashes.len(), 2); + // assert_eq!(eth_block_storage::INCREMENTAL_BUILDER.borrow_mut().tx_hashes.len(), 2); // let transactions = InflightEthTransactions::::get(); // let expected = vec![ @@ -100,7 +100,7 @@ fn transactions_are_captured() { Contracts::on_finalize(0); - assert_eq!(eth_block_storage::INCREMENTAL_BUILDER.borrow_mut().tx_hashes.len(), 0); + // assert_eq!(eth_block_storage::INCREMENTAL_BUILDER.borrow_mut().tx_hashes.len(), 0); }); } From 87fba1d9a34009eb036fec2eb29d3e2ef345d6da Mon Sep 17 00:00:00 2001 From: Alexandru Vasile Date: Tue, 2 Sep 2025 21:49:23 +0000 Subject: [PATCH 38/67] revive: Use let Some syntax Signed-off-by: Alexandru Vasile --- substrate/frame/revive/src/lib.rs | 28 +++++++++++++++------------- 1 file changed, 15 insertions(+), 13 deletions(-) diff --git a/substrate/frame/revive/src/lib.rs b/substrate/frame/revive/src/lib.rs index 245abeae8a3ea..6cd4e6b91ba46 100644 --- a/substrate/frame/revive/src/lib.rs +++ b/substrate/frame/revive/src/lib.rs @@ -1800,20 +1800,22 @@ impl Pallet { /// /// The data is used during the `on_finalize` hook to reconstruct the ETH block. fn store_transaction(transaction_encoded: Vec, success: bool, gas_used: Weight) { - if let Some((encoded_logs, bloom)) = eth_block_storage::get_receipt_details() { - let block_builder_ir = EthBlockBuilderIR::::get(); - let mut block_builder = EthereumBlockBuilder::from_ir(block_builder_ir); - - block_builder.process_transaction( - transaction_encoded, - success, - gas_used, - encoded_logs, - bloom, - ); + let Some((encoded_logs, bloom)) = eth_block_storage::get_receipt_details() else { + return; + }; - EthBlockBuilderIR::::put(block_builder.to_ir()); - } + let block_builder_ir = EthBlockBuilderIR::::get(); + let mut block_builder = EthereumBlockBuilder::from_ir(block_builder_ir); + + block_builder.process_transaction( + transaction_encoded, + success, + gas_used, + encoded_logs, + bloom, + ); + + EthBlockBuilderIR::::put(block_builder.to_ir()); } /// The address of the validator that produced the current block. From 5b32cba685a4c803a9fd8068537129350fee5682 Mon Sep 17 00:00:00 2001 From: Alexandru Vasile Date: Tue, 2 Sep 2025 21:51:52 +0000 Subject: [PATCH 39/67] revive/tests: Fix unused import Signed-off-by: Alexandru Vasile --- substrate/frame/revive/src/tests/block_hash.rs | 1 - 1 file changed, 1 deletion(-) diff --git a/substrate/frame/revive/src/tests/block_hash.rs b/substrate/frame/revive/src/tests/block_hash.rs index b40820d4045a1..31a0b2de8dd80 100644 --- a/substrate/frame/revive/src/tests/block_hash.rs +++ b/substrate/frame/revive/src/tests/block_hash.rs @@ -18,7 +18,6 @@ //! The pallet-revive ETH block hash specific integration test suite. use crate::{ - eth_block_storage, evm::block_hash::EventLog, test_utils::{builder::Contract, ALICE}, tests::{assert_ok, builder, Contracts, ExtBuilder, Test}, From 8422dba7b233b0e296dfec9cc639d98c72e889d4 Mon Sep 17 00:00:00 2001 From: Alexandru Vasile Date: Tue, 2 Sep 2025 21:56:06 +0000 Subject: [PATCH 40/67] revive: Use &zero ref Signed-off-by: Alexandru Vasile --- substrate/frame/revive/src/evm/block_hash.rs | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/substrate/frame/revive/src/evm/block_hash.rs b/substrate/frame/revive/src/evm/block_hash.rs index ef980b6968165..83273a23f1450 100644 --- a/substrate/frame/revive/src/evm/block_hash.rs +++ b/substrate/frame/revive/src/evm/block_hash.rs @@ -293,8 +293,7 @@ impl IncrementalHashBuilder { // Pushing the previous item since we are expecting the index // to be index + 1 in the sorted order. if let Some(encoded_value) = self.first_value.take() { - let zero: usize = 0; - let rlp_index = alloy_rlp::encode_fixed_size(&zero); + let rlp_index = alloy_rlp::encode_fixed_size(&0usize); self.hash_builder.add_leaf(Nibbles::unpack(&rlp_index), &encoded_value); } @@ -312,8 +311,7 @@ impl IncrementalHashBuilder { // first value index is the last one in the sorted vector // by rlp encoding of the index. if let Some(encoded_value) = self.first_value.take() { - let zero: usize = 0; - let rlp_index = alloy_rlp::encode_fixed_size(&zero); + let rlp_index = alloy_rlp::encode_fixed_size(&0usize); self.hash_builder.add_leaf(Nibbles::unpack(&rlp_index), &encoded_value); } From 044777aa7d22cad7c08647b3cfee4cb84bb61130 Mon Sep 17 00:00:00 2001 From: Alexandru Vasile Date: Tue, 2 Sep 2025 21:56:25 +0000 Subject: [PATCH 41/67] revive: Make adjust_index_for_rlp private Signed-off-by: Alexandru Vasile --- substrate/frame/revive/src/evm/block_hash.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/substrate/frame/revive/src/evm/block_hash.rs b/substrate/frame/revive/src/evm/block_hash.rs index 83273a23f1450..eb639d5accdc8 100644 --- a/substrate/frame/revive/src/evm/block_hash.rs +++ b/substrate/frame/revive/src/evm/block_hash.rs @@ -605,7 +605,7 @@ mod test { fn manual_trie_root_compute(encoded: Vec>) -> H256 { use alloy_consensus::private::alloy_trie::{HashBuilder, Nibbles}; - pub const fn adjust_index_for_rlp(i: usize, len: usize) -> usize { + const fn adjust_index_for_rlp(i: usize, len: usize) -> usize { if i > 0x7f { i } else if i == 0x7f || i + 1 == len { From 75f25a9ec6a33521e77f01862dc5a6e0de298fba Mon Sep 17 00:00:00 2001 From: Alexandru Vasile Date: Tue, 2 Sep 2025 21:59:49 +0000 Subject: [PATCH 42/67] revive: Remove eth events from storage Signed-off-by: Alexandru Vasile --- substrate/frame/revive/src/lib.rs | 9 --------- 1 file changed, 9 deletions(-) diff --git a/substrate/frame/revive/src/lib.rs b/substrate/frame/revive/src/lib.rs index 6cd4e6b91ba46..4e85b2cbeaf79 100644 --- a/substrate/frame/revive/src/lib.rs +++ b/substrate/frame/revive/src/lib.rs @@ -566,15 +566,6 @@ pub mod pallet { #[pallet::storage] pub(crate) type OriginalAccount = StorageMap<_, Identity, H160, AccountId32>; - /// The events emitted by this pallet while executing the current inflight transaction. - /// - /// The events are needed to reconstruct the ReceiptInfo, as they represent the - /// logs emitted by the contract. The events are consumed when the transaction is - /// completed and moved to the `InflightEthTransactions` storage object. - #[pallet::storage] - #[pallet::unbounded] - pub(crate) type InflightEthTxEvents = StorageValue<_, Vec, ValueQuery>; - /// The current Ethereum block that is stored in the `on_finalize` method. /// /// # Note From 959ea5c2ded6dd3c13e83341434c1c997f305017 Mon Sep 17 00:00:00 2001 From: Alexandru Vasile Date: Tue, 2 Sep 2025 22:33:51 +0000 Subject: [PATCH 43/67] revive: Fix clippy Signed-off-by: Alexandru Vasile --- substrate/frame/revive/src/evm/block_hash.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/substrate/frame/revive/src/evm/block_hash.rs b/substrate/frame/revive/src/evm/block_hash.rs index eb639d5accdc8..8030d82af6cdb 100644 --- a/substrate/frame/revive/src/evm/block_hash.rs +++ b/substrate/frame/revive/src/evm/block_hash.rs @@ -551,7 +551,7 @@ impl EthereumBlockBuilder { miner: block_author, gas_limit, - state_root: transactions_root.clone(), + state_root: transactions_root, transactions_root, receipts_root, From 36238d07d76af55a25971bdef9e24db9381c855c Mon Sep 17 00:00:00 2001 From: Alexandru Vasile <60601340+lexnv@users.noreply.github.com> Date: Wed, 3 Sep 2025 11:21:50 -0700 Subject: [PATCH 44/67] revive: Fix incremental hashing order Co-authored-by: Lukasz Rubaszewski <117115317+lrubasze@users.noreply.github.com> --- substrate/frame/revive/src/evm/block_hash.rs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/substrate/frame/revive/src/evm/block_hash.rs b/substrate/frame/revive/src/evm/block_hash.rs index 8030d82af6cdb..57f23ec893982 100644 --- a/substrate/frame/revive/src/evm/block_hash.rs +++ b/substrate/frame/revive/src/evm/block_hash.rs @@ -289,6 +289,9 @@ impl IncrementalHashBuilder { /// Add a new value to the hash builder. pub fn add_value(&mut self, value: Vec) { + let rlp_index = alloy_rlp::encode_fixed_size(&self.index); + self.hash_builder.add_leaf(Nibbles::unpack(&rlp_index), &value); + if self.index == 0x7f { // Pushing the previous item since we are expecting the index // to be index + 1 in the sorted order. @@ -299,9 +302,6 @@ impl IncrementalHashBuilder { } } - let rlp_index = alloy_rlp::encode_fixed_size(&self.index); - self.hash_builder.add_leaf(Nibbles::unpack(&rlp_index), &value); - self.index += 1; } From ff25a39eb7892e21c0ad25ac6fb16ec0ac452c19 Mon Sep 17 00:00:00 2001 From: Alexandru Vasile Date: Wed, 3 Sep 2025 18:23:56 +0000 Subject: [PATCH 45/67] revive/tests: Add tests for incremental hasher Signed-off-by: Alexandru Vasile --- substrate/frame/revive/src/evm/block_hash.rs | 44 ++++++++++++++++++-- 1 file changed, 41 insertions(+), 3 deletions(-) diff --git a/substrate/frame/revive/src/evm/block_hash.rs b/substrate/frame/revive/src/evm/block_hash.rs index 57f23ec893982..f49c68c1a3469 100644 --- a/substrate/frame/revive/src/evm/block_hash.rs +++ b/substrate/frame/revive/src/evm/block_hash.rs @@ -602,6 +602,10 @@ mod test { use super::*; use crate::evm::{Block, ReceiptInfo}; + /// Manual implementation of the Ethereum trie root computation. + /// + /// Given the RLP encoded values, the implementation adjusts the + /// index to account for RLP encoding rules. fn manual_trie_root_compute(encoded: Vec>) -> H256 { use alloy_consensus::private::alloy_trie::{HashBuilder, Nibbles}; @@ -620,7 +624,6 @@ mod test { let items_len = encoded.len(); for i in 0..items_len { let index = adjust_index_for_rlp(i, items_len); - // println!("For tx={} using index={}", i, index); let index_buffer = alloy_rlp::encode_fixed_size(&index); hb.add_leaf(Nibbles::unpack(&index_buffer), &encoded[index]); @@ -631,13 +634,48 @@ mod test { hb.value.as_slice().len() + hb.stack.len() * 33 + masks_len + hb.rlp_buf.len(); - - // println!(" HB size is: {size}"); } hb.root().0.into() } + /// The test compares three hashing options: + /// - Block::compute_trie_root: this uses the consensus proofs crate + /// - manual_trie_root_compute: this ensures the keys are added in the correct order + /// - IncrementalHashBuilder: this offers the most compact storage option + /// + /// The above hashes must be identical. While at it, the incremental hash + /// builder is serialized and deserialized to ensure consistency. + #[test] + fn incremental_hasher() { + const UPPER_BOUND: usize = 256; + const RLP_VALUE_SIZE: usize = 128; + + let mut rlp_values = Vec::with_capacity(UPPER_BOUND); + + for i in 0..UPPER_BOUND { + // Simulate an RLP value repeated for `i`. + let rlp_value = vec![i as u8; RLP_VALUE_SIZE]; + + rlp_values.push(rlp_value); + + let block_hash: H256 = Block::compute_trie_root(&rlp_values).0.into(); + let manual_hash = manual_trie_root_compute(rlp_values.clone()); + + let mut builder = IncrementalHashBuilder::new(rlp_values[0].clone()); + for rlp_value in rlp_values.iter().skip(1) { + builder.add_value(rlp_value.clone()); + + let ir_builder = builder.to_ir(); + builder = IncrementalHashBuilder::from_ir(ir_builder); + } + let incremental_hash = builder.finish(); + + assert_eq!(block_hash, manual_hash); + assert_eq!(block_hash, incremental_hash); + } + } + #[test] fn ensure_identical_hashes() { // curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getBlockByNumber","params":["0x161bd0f", true],"id":1}' -H "Content-Type: application/json" https://ethereum-rpc.publicnode.com | jq .result From 889094446ceffcf3cfb7c92f0be0789b39fbba1e Mon Sep 17 00:00:00 2001 From: Alexandru Vasile Date: Wed, 3 Sep 2025 19:02:10 +0000 Subject: [PATCH 46/67] revive/tests: Ensre RLP ordering compatibility Signed-off-by: Alexandru Vasile --- substrate/frame/revive/src/evm/block_hash.rs | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/substrate/frame/revive/src/evm/block_hash.rs b/substrate/frame/revive/src/evm/block_hash.rs index f49c68c1a3469..91de11f713c34 100644 --- a/substrate/frame/revive/src/evm/block_hash.rs +++ b/substrate/frame/revive/src/evm/block_hash.rs @@ -676,6 +676,22 @@ mod test { } } + #[test] + fn test_alloy_rlp_ordering_compatibility() { + let zero_encoded = alloy_rlp::encode_fixed_size(&0usize); + let max_single_byte = alloy_rlp::encode_fixed_size(&127usize); + let first_multi_byte = alloy_rlp::encode_fixed_size(&128usize); + + // Document the exact bytes we expect + assert_eq!(zero_encoded.as_slice(), &[0x80]); // RLP encoding of 0 + assert_eq!(max_single_byte.as_slice(), &[0x7f]); // RLP encoding of 127 + assert_eq!(first_multi_byte.as_slice(), &[0x81, 0x80]); // RLP encoding of 128 + + // Verify ordering + assert!(max_single_byte < zero_encoded); + assert!(zero_encoded < first_multi_byte); + } + #[test] fn ensure_identical_hashes() { // curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getBlockByNumber","params":["0x161bd0f", true],"id":1}' -H "Content-Type: application/json" https://ethereum-rpc.publicnode.com | jq .result From 9bd2168f4f88f0df002e8848e77b0a0c5d0ffa89 Mon Sep 17 00:00:00 2001 From: Alexandru Vasile Date: Wed, 3 Sep 2025 19:06:06 +0000 Subject: [PATCH 47/67] revive: Add docs for eth block storage Signed-off-by: Alexandru Vasile --- substrate/frame/revive/src/lib.rs | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/substrate/frame/revive/src/lib.rs b/substrate/frame/revive/src/lib.rs index 4e85b2cbeaf79..4c3c60c4fca1f 100644 --- a/substrate/frame/revive/src/lib.rs +++ b/substrate/frame/revive/src/lib.rs @@ -145,12 +145,19 @@ pub(crate) mod eth_block_storage { // completed. To minimize the amount of used memory, the events are RLP encoded directly. environmental!(receipt: AccumulateReceipt); + /// Capture the Ethereum log for the current transaction. + /// + /// This method does nothing if called from outside of the ethereum context. pub fn capture_ethereum_log(contract: H160, data: &[u8], topics: &[H256]) { receipt::with(|receipt| { receipt.add_log(EventLog { contract, data: data.to_vec(), topics: topics.to_vec() }); }); } + /// Get the receipt details of the current transaction. + /// + /// This method returns `None` if and only if the function is called + /// from outside of the ethereum context. pub fn get_receipt_details() -> Option<(Vec, Bloom)> { receipt::with(|receipt| { let encoding = core::mem::take(&mut receipt.encoding); @@ -159,6 +166,9 @@ pub(crate) mod eth_block_storage { }) } + /// Capture the receipt events emitted from the current ethereum + /// transaction. The transaction must be signed by an eth-compatible + /// wallet. pub fn with_ethereum_context(f: impl FnOnce() -> R) -> R { receipt::using(&mut AccumulateReceipt::new(), f) } From 1068dbc3d8fb35c6a6ef658844e4bc65e161b1e1 Mon Sep 17 00:00:00 2001 From: Alexandru Vasile Date: Wed, 3 Sep 2025 19:06:45 +0000 Subject: [PATCH 48/67] revive/hash: Capture receipt info events Signed-off-by: Alexandru Vasile --- substrate/frame/revive/src/evm/block_hash.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/substrate/frame/revive/src/evm/block_hash.rs b/substrate/frame/revive/src/evm/block_hash.rs index 91de11f713c34..1438c627b1050 100644 --- a/substrate/frame/revive/src/evm/block_hash.rs +++ b/substrate/frame/revive/src/evm/block_hash.rs @@ -504,7 +504,7 @@ impl EthereumBlockBuilder { gas_used: Weight, encoded_logs: Vec, receipt_bloom: Bloom, - ) -> ReceiptGasInfo { + ) { let tx_hash = H256(keccak_256(&transaction_encoded)); self.tx_hashes.push(tx_hash); @@ -526,7 +526,7 @@ impl EthereumBlockBuilder { ); Self::add_builder_value(&mut self.receipts_root_builder, encoded_receipt); - ReceiptGasInfo { gas_used: gas_used.ref_time().into() } + self.gas_info.push(ReceiptGasInfo { gas_used: gas_used.ref_time().into() }); } /// Build the ethereum block from provided data. From cfee920d011aa376626b30d84ca299a77870f7ab Mon Sep 17 00:00:00 2001 From: Alexandru Vasile Date: Wed, 3 Sep 2025 19:08:58 +0000 Subject: [PATCH 49/67] revive/hash: Fix URL in docs Signed-off-by: Alexandru Vasile --- substrate/frame/revive/src/evm/block_hash.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/substrate/frame/revive/src/evm/block_hash.rs b/substrate/frame/revive/src/evm/block_hash.rs index 1438c627b1050..5341644faf434 100644 --- a/substrate/frame/revive/src/evm/block_hash.rs +++ b/substrate/frame/revive/src/evm/block_hash.rs @@ -126,7 +126,7 @@ impl Block { /// rlp(1) < rlp(2) < ... < rlp(127) < RLP (0) < rlp(128) < ... < rlp(n) /// ``` /// For more details see: -/// https://github.com/alloy-rs/trie/blob/3e762bcb65f25710c309e7d8cb6c9ed7e3fdada1/src/root.rs#L7-L16 +/// /// /// This property allows the builder to add items in the order of indices 1, 2, ..., 127, followed /// by index 0, and then index 128 onward. In this implementation, the focus is on placing the first From 6c87c10048ddb53b8ed723691f7c3d810ace254c Mon Sep 17 00:00:00 2001 From: Alexandru Vasile Date: Wed, 3 Sep 2025 19:10:39 +0000 Subject: [PATCH 50/67] revive: Add comments around receipt details Signed-off-by: Alexandru Vasile --- substrate/frame/revive/src/lib.rs | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/substrate/frame/revive/src/lib.rs b/substrate/frame/revive/src/lib.rs index 4c3c60c4fca1f..67ec4e3cad965 100644 --- a/substrate/frame/revive/src/lib.rs +++ b/substrate/frame/revive/src/lib.rs @@ -1801,9 +1801,10 @@ impl Pallet { /// /// The data is used during the `on_finalize` hook to reconstruct the ETH block. fn store_transaction(transaction_encoded: Vec, success: bool, gas_used: Weight) { - let Some((encoded_logs, bloom)) = eth_block_storage::get_receipt_details() else { - return; - }; + // Method returns `None` only when called from outside of the ethereum context. + // This is not the case here, since the `store_transaction` is called from within the + // ethereum context. + let (encoded_logs, bloom) = eth_block_storage::get_receipt_details().unwrap_or_default(); let block_builder_ir = EthBlockBuilderIR::::get(); let mut block_builder = EthereumBlockBuilder::from_ir(block_builder_ir); From a93fc8257ca8298197c787df2fd91becbd41faa3 Mon Sep 17 00:00:00 2001 From: Alexandru Vasile Date: Wed, 3 Sep 2025 19:36:28 +0000 Subject: [PATCH 51/67] revive/tests: Ensure builder captures trie root of eth tx Signed-off-by: Alexandru Vasile --- substrate/frame/revive/src/evm/block_hash.rs | 4 +- .../frame/revive/src/tests/block_hash.rs | 46 +++++++++---------- 2 files changed, 24 insertions(+), 26 deletions(-) diff --git a/substrate/frame/revive/src/evm/block_hash.rs b/substrate/frame/revive/src/evm/block_hash.rs index 5341644faf434..6e1d28a10edcc 100644 --- a/substrate/frame/revive/src/evm/block_hash.rs +++ b/substrate/frame/revive/src/evm/block_hash.rs @@ -422,7 +422,7 @@ pub struct EthereumBlockBuilderIR { pub(crate) tx_hashes: Vec, logs_bloom: [u8; BLOOM_SIZE_BYTES], - gas_info: Vec, + pub(crate) gas_info: Vec, } impl Default for EthereumBlockBuilderIR { @@ -440,7 +440,7 @@ impl Default for EthereumBlockBuilderIR { /// Ethereum block builder. pub struct EthereumBlockBuilder { - transaction_root_builder: Option, + pub(crate) transaction_root_builder: Option, receipts_root_builder: Option, gas_used: U256, diff --git a/substrate/frame/revive/src/tests/block_hash.rs b/substrate/frame/revive/src/tests/block_hash.rs index 31a0b2de8dd80..c50ca24a9f234 100644 --- a/substrate/frame/revive/src/tests/block_hash.rs +++ b/substrate/frame/revive/src/tests/block_hash.rs @@ -18,11 +18,11 @@ //! The pallet-revive ETH block hash specific integration test suite. use crate::{ - evm::block_hash::EventLog, + evm::{block_hash::EventLog, Block}, test_utils::{builder::Contract, ALICE}, tests::{assert_ok, builder, Contracts, ExtBuilder, Test}, - BalanceWithDust, Code, Config, EthBlock, EthereumBlock, Pallet, ReceiptGasInfo, - ReceiptInfoData, + BalanceWithDust, Code, Config, EthBlock, EthBlockBuilderIR, EthereumBlock, + EthereumBlockBuilder, Pallet, ReceiptGasInfo, ReceiptInfoData, TransactionSigned, }; use frame_support::traits::{fungible::Mutate, Hooks}; @@ -76,30 +76,28 @@ fn transactions_are_captured() { // Instantiate with code is not captured. assert_ok!(builder::instantiate_with_code(gas_binary).value(1).build()); - // assert_eq!(eth_block_storage::INCREMENTAL_BUILDER.borrow_mut().tx_hashes.len(), 2); - - // let transactions = InflightEthTransactions::::get(); - // let expected = vec![ - // TransactionDetails { - // transaction_encoded: TransactionSigned::TransactionLegacySigned(Default::default()) - // .signed_payload(), - // logs: vec![], - // success: true, - // gas_used: Weight::zero(), - // }, - // TransactionDetails { - // transaction_encoded: TransactionSigned::Transaction4844Signed(Default::default()) - // .signed_payload(), - // logs: vec![], - // success: true, - // gas_used: Weight::zero(), - // }, - // ]; - // assert_eq!(transactions, expected); + let block_builder = EthBlockBuilderIR::::get(); + // Only 2 transactions were captured. + assert_eq!(block_builder.gas_info.len(), 2); + + let expected_payloads = vec![ + // Signed payload of eth_call. + TransactionSigned::TransactionLegacySigned(Default::default()).signed_payload(), + // Signed payload of eth_instantiate_with_code. + TransactionSigned::Transaction4844Signed(Default::default()).signed_payload(), + ]; + let expected_tx_root = Block::compute_trie_root(&expected_payloads); + + // Double check the trie root hash. + let builder = EthereumBlockBuilder::from_ir(block_builder); + let tx_root = builder.transaction_root_builder.unwrap().finish(); + assert_eq!(tx_root, expected_tx_root.0.into()); Contracts::on_finalize(0); - // assert_eq!(eth_block_storage::INCREMENTAL_BUILDER.borrow_mut().tx_hashes.len(), 0); + // Builder is killed on finalize. + let block_builder = EthBlockBuilderIR::::get(); + assert_eq!(block_builder.gas_info.len(), 0); }); } From c7b14e0b51106cb79630c39f0d9434fecd309f46 Mon Sep 17 00:00:00 2001 From: Alexandru Vasile Date: Wed, 3 Sep 2025 20:08:54 +0000 Subject: [PATCH 52/67] revive/tests: Ensure events are properly captured Signed-off-by: Alexandru Vasile --- substrate/frame/revive/src/evm/block_hash.rs | 2 +- .../frame/revive/src/tests/block_hash.rs | 134 ++++++++++-------- 2 files changed, 79 insertions(+), 57 deletions(-) diff --git a/substrate/frame/revive/src/evm/block_hash.rs b/substrate/frame/revive/src/evm/block_hash.rs index 6e1d28a10edcc..233610322f359 100644 --- a/substrate/frame/revive/src/evm/block_hash.rs +++ b/substrate/frame/revive/src/evm/block_hash.rs @@ -441,7 +441,7 @@ impl Default for EthereumBlockBuilderIR { /// Ethereum block builder. pub struct EthereumBlockBuilder { pub(crate) transaction_root_builder: Option, - receipts_root_builder: Option, + pub(crate) receipts_root_builder: Option, gas_used: U256, pub(crate) tx_hashes: Vec, diff --git a/substrate/frame/revive/src/tests/block_hash.rs b/substrate/frame/revive/src/tests/block_hash.rs index c50ca24a9f234..2ad95c6f48ecd 100644 --- a/substrate/frame/revive/src/tests/block_hash.rs +++ b/substrate/frame/revive/src/tests/block_hash.rs @@ -19,21 +19,17 @@ use crate::{ evm::{block_hash::EventLog, Block}, - test_utils::{builder::Contract, ALICE}, - tests::{assert_ok, builder, Contracts, ExtBuilder, Test}, + test_utils::{builder::Contract, deposit_limit, ALICE}, + tests::{assert_ok, builder, Contracts, ExtBuilder, RuntimeOrigin, Test}, BalanceWithDust, Code, Config, EthBlock, EthBlockBuilderIR, EthereumBlock, - EthereumBlockBuilder, Pallet, ReceiptGasInfo, ReceiptInfoData, TransactionSigned, + EthereumBlockBuilder, Pallet, ReceiptGasInfo, ReceiptInfoData, TransactionSigned, H256, }; use frame_support::traits::{fungible::Mutate, Hooks}; use pallet_revive_fixtures::compile_module; -impl PartialEq for EventLog { - // Dont care about the contract address, since eth instantiate cannot expose it. - fn eq(&self, other: &Self) -> bool { - self.data == other.data && self.topics == other.topics - } -} +use alloy_consensus::RlpEncodableReceipt; +use alloy_core::primitives::{FixedBytes, Log as AlloyLog}; #[test] fn on_initialize_clears_storage() { @@ -101,50 +97,76 @@ fn transactions_are_captured() { }); } -// #[test] -// fn events_are_captured() { -// let (binary, code_hash) = compile_module("event_and_return_on_deploy").unwrap(); - -// ExtBuilder::default().existential_deposit(200).build().execute_with(|| { -// let _ = ::Currency::set_balance(&ALICE, 1_000_000); - -// assert_ok!(Contracts::upload_code( -// RuntimeOrigin::signed(ALICE), -// binary.clone(), -// deposit_limit::(), -// )); - -// Contracts::on_initialize(1); - -// // Bare call must not be captured. -// builder::bare_instantiate(Code::Existing(code_hash)).build_and_unwrap_contract(); -// let balance = -// Pallet::::convert_native_to_evm(BalanceWithDust::new_unchecked::(100, 10)); - -// // Capture the EthInstantiate. -// assert_eq!(InflightEthTxEvents::::get(), vec![]); -// assert_ok!(builder::eth_instantiate_with_code(binary).value(balance).build()); -// // Events are cleared out by storing the transaction. -// assert_eq!(InflightEthTxEvents::::get(), vec![]); - -// let transactions = InflightEthTransactions::::get(); -// let expected = vec![TransactionDetails { -// transaction_encoded: TransactionSigned::Transaction4844Signed(Default::default()) -// .signed_payload(), -// logs: vec![EventLog { -// data: vec![1, 2, 3, 4], -// topics: vec![H256::repeat_byte(42)], -// contract: Default::default(), -// }], -// success: true, -// gas_used: Weight::zero(), -// }]; - -// assert_eq!(transactions, expected); - -// Contracts::on_finalize(0); - -// assert_eq!(InflightEthTransactions::::get(), vec![]); -// assert_eq!(InflightEthTxEvents::::get(), vec![]); -// }); -// } +#[test] +fn events_are_captured() { + let (binary, code_hash) = compile_module("event_and_return_on_deploy").unwrap(); + + ExtBuilder::default().existential_deposit(200).build().execute_with(|| { + let _ = ::Currency::set_balance(&ALICE, 1_000_000); + + assert_ok!(Contracts::upload_code( + RuntimeOrigin::signed(ALICE), + binary.clone(), + deposit_limit::(), + )); + + Contracts::on_initialize(1); + + // Bare call must not be captured. + builder::bare_instantiate(Code::Existing(code_hash)).build_and_unwrap_contract(); + let balance = + Pallet::::convert_native_to_evm(BalanceWithDust::new_unchecked::(100, 10)); + + // Capture the EthInstantiate. + assert_ok!(builder::eth_instantiate_with_code(binary).value(balance).build()); + + let expected_payloads = vec![ + // Signed payload of eth_instantiate_with_code. + TransactionSigned::Transaction4844Signed(Default::default()).signed_payload(), + ]; + let expected_tx_root = Block::compute_trie_root(&expected_payloads); + + const EXPECTED_GAS: u64 = 6345452; + + // Convert the EventLog into the AlloyLog to ensure + // the default address remains stable. + let event_log = EventLog { + data: vec![1, 2, 3, 4], + topics: vec![H256::repeat_byte(42)], + contract: Default::default(), + }; + let logs = vec![AlloyLog::new_unchecked( + event_log.contract.0.into(), + event_log.topics.into_iter().map(|h| FixedBytes::from(h.0)).collect::>(), + event_log.data.into(), + )]; + let receipt = alloy_consensus::Receipt { + status: true.into(), + cumulative_gas_used: EXPECTED_GAS, + logs, + }; + + let receipt_bloom = receipt.bloom_slow(); + // Receipt starts with encoded tx type which is 3 for 4844 transactions. + let mut encoded_receipt = vec![3]; + receipt.rlp_encode_with_bloom(&receipt_bloom, &mut encoded_receipt); + let expected_receipt_root = Block::compute_trie_root(&[encoded_receipt]); + + let block_builder = EthBlockBuilderIR::::get(); + // 1 transaction captured. + assert_eq!(block_builder.gas_info.len(), 1); + assert_eq!(block_builder.gas_info, vec![ReceiptGasInfo { gas_used: EXPECTED_GAS.into() }]); + + let builder = EthereumBlockBuilder::from_ir(block_builder); + let tx_root = builder.transaction_root_builder.unwrap().finish(); + assert_eq!(tx_root, expected_tx_root.0.into()); + + let receipt_root = builder.receipts_root_builder.unwrap().finish(); + assert_eq!(receipt_root, expected_receipt_root.0.into()); + + Contracts::on_finalize(0); + + let block_builder = EthBlockBuilderIR::::get(); + assert_eq!(block_builder.gas_info.len(), 0); + }); +} From d209d8732abe8aaf167bbea1d4d7f8be53d2d151 Mon Sep 17 00:00:00 2001 From: Alexandru Vasile Date: Wed, 3 Sep 2025 23:38:32 +0000 Subject: [PATCH 53/67] revive/tests: Fix captured events test to use proper address Signed-off-by: Alexandru Vasile --- .../frame/revive/src/tests/block_hash.rs | 24 ++++++++++++++----- 1 file changed, 18 insertions(+), 6 deletions(-) diff --git a/substrate/frame/revive/src/tests/block_hash.rs b/substrate/frame/revive/src/tests/block_hash.rs index 2ad95c6f48ecd..cb486346cca0e 100644 --- a/substrate/frame/revive/src/tests/block_hash.rs +++ b/substrate/frame/revive/src/tests/block_hash.rs @@ -114,27 +114,39 @@ fn events_are_captured() { // Bare call must not be captured. builder::bare_instantiate(Code::Existing(code_hash)).build_and_unwrap_contract(); + let balance = Pallet::::convert_native_to_evm(BalanceWithDust::new_unchecked::(100, 10)); // Capture the EthInstantiate. assert_ok!(builder::eth_instantiate_with_code(binary).value(balance).build()); + // The contract address is not exposed by the `eth_instantiate_with_code` call. + // Instead, extract the address from the frame system's last event. + let events = frame_system::Pallet::::events(); + let contract = events + .into_iter() + .filter_map(|event_record| match event_record.event { + crate::tests::RuntimeEvent::Contracts(crate::Event::Instantiated { + contract, + .. + }) => Some(contract), + _ => None, + }) + .last() + .expect("Contract address must be found from events"); + let expected_payloads = vec![ // Signed payload of eth_instantiate_with_code. TransactionSigned::Transaction4844Signed(Default::default()).signed_payload(), ]; let expected_tx_root = Block::compute_trie_root(&expected_payloads); - const EXPECTED_GAS: u64 = 6345452; // Convert the EventLog into the AlloyLog to ensure // the default address remains stable. - let event_log = EventLog { - data: vec![1, 2, 3, 4], - topics: vec![H256::repeat_byte(42)], - contract: Default::default(), - }; + let event_log = + EventLog { data: vec![1, 2, 3, 4], topics: vec![H256::repeat_byte(42)], contract }; let logs = vec![AlloyLog::new_unchecked( event_log.contract.0.into(), event_log.topics.into_iter().map(|h| FixedBytes::from(h.0)).collect::>(), From b230c17cc298adde44b8938afee4e3a5772dfc76 Mon Sep 17 00:00:00 2001 From: Alexandru Vasile Date: Thu, 4 Sep 2025 20:32:31 +0000 Subject: [PATCH 54/67] revive: Update chain metadata Signed-off-by: Alexandru Vasile --- .../frame/revive/rpc/revive_chain.metadata | Bin 694304 -> 711710 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/substrate/frame/revive/rpc/revive_chain.metadata b/substrate/frame/revive/rpc/revive_chain.metadata index cb98c4653acced703a2a99b134af5e373a0db154..2a7bdae7e1d5244cfac4458528b1aed1cdadc9ec 100644 GIT binary patch delta 39773 zcmeEvdt8)N{{J}-GtYC*FaraEfPxMR3I+%Ur6?*YDkX*&yyOK&7-SL{WI&}dw6e0z zHkY-NTUzdBWo2q*lbMyf>+ZVWb;~wu-CZlTY_qa*%gV~__de&DfkA99-|z48&(GJ$ znddpT&-t9s`JB(~oOxjPu&vKtqBnS2+|GtQ`bQC30e|ZAh}&#*QOD}2JnHV)6*b1< zVe|p9d%uy`VMGtqyiCOSSbRrObgH(RiPWX6Z^y@aX2<=}PP(>Zcl70!b&TF8oWIbM zIxNnCmJN)4E|xd4J{^V5@s>@pt7kCJF(c@a4ohs2*2%<+%hCJ%*d%(g!ylVV z&viT)JI0d4>EmMf1A70C?_zVb6y7ns&nPXGcU;q_KuhNx+xm>rGI_^aeMVWcIZdIW z>2eHbMBG>{kKfcB7if;7DLS1WxT_x>L+SjxOZ8EKaZ~iT;CHcMs@|+#2h2?I>;UQs zmb>c;y-X7irqWAkMc|LAln%BeF?vYEWYC2o>JqApaV0caOJQR9AiDV0{UsFtHT;jj ze@kG0iM49WB~$(0rH!7N%9dt#qu*WK;`KEiGU%k)-H)?W0YdUc?mO0n(^Kd$S5@yy zRfVqEbsm?Q;VNmV^E7)}8(d+{X1SU@P0b#^r?JIT<8u2Q)a6qYT1?q-gF2_?U6w0e%GQ#^KR&RI6Lp_iqXVw@tovSxv|qUb|wYU;GG&MQ5Q)jl*ok|xjbRF7#LIhNSUMcEnahCs4Udx(nikFB>> z7s#<)q*icnGpCiiR6E|rr7mBsg7cpZxD+GoIp+Uhz<)er&7+Bl)LG;4w}i$`Xxs{S zeXHlB9Oj&Oda)q}>OZrdi{M>VMDZe)9Ju{U>l~|?aWzX2A6?C&+AlK0G;Vg-v|oOC z?g(@0E#$C4FP=pR3D3wMnV%o3bGB!l?kqx4r@foL@(Kz@g({uzS*bgVXgxX_G3wIX zP#w;C0N0&GBFMt90ZsEPbyv3qYYieXjDBA(u@DS73|Zl0?8XZrakM6!T4YvbYolK+ zm?K7y_GMm0FpE%2^GQ&0#fXB-@ZBHweZ?7r=3dn#m*E(hJ(f^cTc64%ceA&pt*ab4 z5(Zsa_%M2OLvm@BySm!r_gB_?{Vhigno+DCr{RgvsqWU6I$yK*TDR;@6*+-+=dyu| zUDb7NZ)2smrmIV8U+NA6G!0LcP0ikFPj`tpZ(~zy%V~qgO=xTJ_z4};;9gZ(>+w`J zd73N3s*9$1tp9?rijBU;@P=5657e7nTvG#ffp!v`2e-5}VQ0vijikieBuCk`6heq3 zM-4)>V+J`Eh8$5bpC!}dqIo{cK=RhN)=b+8S+3I{o#EvU&u3|2ASJua&U?TScLAKP zwhJfb`zDs06#TrkfB#bkbuDPUEPu2se-R<407wLAjpUNk3YHPW&KQ{xx~_9xyp)#EF?# zv%ZR}Toz7>J(~Qdq$nEavZ3C8NprpEt2~^(mel)}gcI4nAir7v1M-t2>rH;=zi&#y zxY&gpLuPeN3GK;|WZu7?63f5IF(?b;XW`S-qZ^X-PdUcFoT7h^EhL1`+l72#;6I%h zD-+MnWBsn^<^>Y|-jiWv;p+&i_`-E`++0UI94+DNC~Ot5xymZ!_oTi-Lziq*IkH?XSAl* zZvO9}x{IDjJd4X0v#w_GrU>*;nj?=lUgDIuik|PaKxcXj;jt77rv1Un3#uj1Ws& zCd+1dtbmPTMXZ>WvNA?8nMkwg>$Gep9<%8=S{@TmMCwW6bDN&46$Br~MWW?V!H0E` z`cSP%J&e|hgD)+1eMn>pqxORBUER1MH?(%ejJK4(c5bfA8- z=268`1CI>UpVy>*SQ%|i677TZt+YW57_1lPHDKw_^!QurTNt*`<;+q-+Zbi+s$~|k z9QYsv&^B908@^*FUCug+6BETFgZ06*Rs3$So{r@2GHDZuX?jiq>Hw)tK7UK4x3Si@ z9D^uD+7X?Q6hT(A4w~Oj0Gg<$Di;65s;y<>tzQ}a#G?asd!TxlewnVVW8z?^;R@`} z)sIEf^9`EbGbfAL+YBP-!0QXg}#x}?Say{`YuX$h!?Nc?+n~JU%x!~ z@G9LVezZV;$+k^W9DDa&vRy1(s1J|bfoE+eBlyVoiDXY;%R>DnjqVkTEA^dpU%+0a zAGbv8W6qAdhR2KZHF~>tfZZ*uL&Sp~y^tOZyyemD6ngDPwfYzIaNwP#`kR_|n02IF z)=!+cMju3v+`UYnM~{m6%k(lN4=>X*=`nG1nSKX7Ar{x`BQlTm+zvnv7l>8IO=376 z*jKOjrS=neRFav6bO!$1px>y|lYzx8`m;JcB|f}PA1f-Z(>Kvm0esJjqNf9ix9f(D zo(Z^qtW&G~lp1WQQEHIWB73twH0})EXlEJ02WTiZj!|+>)NR%a=y|bqvwpS4x%hgs z?hU46#m|1C-=>{sqIeLE7ZdK)2Wgax+I#WR%EhPm0!esYexH7Wd_HrZ-Z+f&@GZ~5 zdyUb-6~Q~W+340SSamU~u{d$<9GyFm{N$I<09UYMXuuroV8T{vIqJV$e_ZB6>Vf^;5l?#$o4G3OfNm^)-UM zSGOD&Z~RQJhH*rElFj;w7jqa7R6Yov217}p{UJTy(6YH`yqvkzA`+cDvC{Lnxc>=I zn_A-o#MvkGM_@h@_wUkY+eTqr+CEB(xH!K{pPygM>7&0`5E z<`z3%OS!s)L&d`%uq^zsYNS-$z8iF3CXVjW`-=0s^~rRGn6yV9qRrrnJ>0xUj~`jV ziJc}k`kEWu^%b02W)qs_gKnerr><9N4erJocZ;vN%`8JIWUDjFTNxc0)a>SZyi4m^ zpxdGBs>&80R^`QVVLb4Anpb#gE|N*+o3O5b62_uMV(XK7KW$Mrtm1D^>X%Zt=>L>H zhI+)jr}SZiFOC_lPX{)(t7|l}qZsv5Pw7OtpYW8Ahs>W=rHp@Lb znq8H#R<=G8jpGZkWUb@jo7H;0ftRsOoUG&K7WKs_mZq%_J`@x(mt_NIx522F*imn_ ziR%j4=zbeHof^dT?83rgzu(hRT7zCUa`8$bs&5Kbj~>m^Y@5+5U?p34#}AW}#PDbJ z*&t{7TTsHAsYcq+?c6d8aFHFHCdy&VMnl`x@b_uCc#GP2+$n41O|+P0_k@+*BTHDw z-X807U+?v~59P2S?GxYa)00K(K0SdR5F7UCLn97xD*o{tw&z#&=`j(9@zk_mPq0J~ zazGYd)#o6mxpSIprE$aE(%Ot2_Mo`^Iejj;rfLk8E9hbKJF2?ldRI8Y#hyv5kN9f8 zVxn>|LyiSUemrb6$JEGko#eP27M@N7wmh#tP3@gB!%h-ihW5V&19_a{9Mn}QfwmX7y2km zs*T>((b=bO?Br&T=UQyUa%2SbgaT435XXL@JH^j_q4&{JZ32Q`ihR@GmM)=+w~(y##+p?3=-#Ws8{Y;C$$ zViQLWgT0if2E>Tp>T$MG2`{RZDUhZ`&9DJMi7Oy`H2de<#G}8}bL@C0DI~YT2A(J< zN38iq@5ATIs>oZU-etOj@OZ-DajTl2JDtQM3**sivx^zO)zii9|I)WbG=!dByps-A9JC%a`%Le`77U)2}T4Pwk6^jy9{!m!asHj36ippi}D*dO$@k((8aPU0k6 zg!?spRKKH|?V|FSo-l9+3KRK9+i4^CNNhXF9{FOgjqDYhj_La% z_o??-CRpa5zOMHZ{@3;E=|TB@Aw3i*dqZDq8**6IIbtLD$VMC%a#X%KW+V7W=#SgT zahq@rf}w`}RZopPpcYEq)CDN zQ+l;k%QkxvFa6x;W6x8CNI@h%B08Tf&_+dyl27zqT2Z7_1_I7c^&^^A99Bmw3CppS zN@&U=Nm-=$;TL*;k^6i-B#X32BLSMjm`GzF-6s}C8vXF3 zaylZ7$MFi^Ct}yU*>2=vp*&+ZvakidV>gCk_ltBGV=YG_>1!g&VdRM$9EKCx!Veur z4zz_A94K>8jEypeS^*R}WPVM=*TeGbCG?1TqgOzJCr8cPTzoxdeg%^t$HgZosGW%X zQA>Yw_ZuH=q{nETk>cPA2u0VqjCtD0AcCZ5A)-01 zgi2PPYOK`GbXUuYKO0u#tgI1Z!73a$$neLXS6JLYM-pmR_;eDhU9AyCy&AWRm(z>{ z5i!^((HwSh#bBdRrg9aHh_MG(5yae(q!Xi>ab{XcJicjoOj2(WQ|u%q*s`L}RP$kM zda#k~utxAM%&eVh@1>h$qD?I4OaEnN8`o%~RGKIT4>2Yu z71`;ea?^L%9L86Qg2UWA#JI{)ECIF?XOW$h*gH<&)GrV{)EH)HrFJno$0*mz>|#TX zksnW+cA7l7+3RVnfnc`H z-ccy}1tP{6B^GVFSt+H|YLd^6umSFnLn*aFJQm}PVcH&h$I*L}0)H8A#A@1JyKtu& zd1HcjIT%)LUk`#g(3@Zmpj{Bm0kLSJagHC9z3j7N)mBb2YP7@lj(uDD2i~4!ETmYs zMU#y$vC<2s7#pzCe=)_FjKnq-3;wtmG1VyOcLMEaRWvqxmbb#$>ZyU`0>yEer=?S@ zoobAwC&f!sjVrYicE#`WJJB1q+7otivIm%*y}^`40p_U?T0zIK7Q9tz+@smgsAkUE z6UkXKJN{e{6X(M)aZdbZnz1qNyd2>TtT%=vuCkJuF7mjVE8;ED?-b2h(!yG_q75?V9G+H zkEV@sh%=Q&|G>({hKu$oa?mWLh|Pjl-U<>bQrYq1#Y!VrD^?Fp$t4b&4MCQbRuZiCYL$_v;U&6=7yaDEz4kIWB)eq9GaTZe+gPSm1hXeDF@{^_ zJ4l>xE;0HKqE4yp&PP`h&=H~nW=XwtDIAUdwuU9X`uV`#61n=r$GON6D8I%?H8gkV zi^t4PNeb$G-mnSqO2j8YXAZoy+;~^hmOJk5q;cZ87Gpg`(Mhew1NJsG1J2bBvO3t0 zYlXq$*M_ySR z-;1Z(jXSly!H4;4AYJSWK775#xXE=uRd71!W=amK#$&WZa!7qk{FEFHY*}k0TD2pX zqn}v%h&A_EBE_*=j7PCj*W7BP_B-YPb;4#c(T4yK6__&9R}anhn5qybUcS}HrN{5S z&A2S)gd?rENk)*k>;1ITLG0qKc2LE_+YDQJr-OE95}I7&fhpJ9a>7BACz)RfIe}LC zi-&GA=4hP?jqxHRza)rJ>ka$llaAg(%t?pE6%uTiRG+xlOiYT$;VdDX9ew4WK5yQ|O=QTH9J1X%I&rg~!46s3D*_{`65uh0Eouvs!DE7;wxoK&pb>_vm z*cKGhwnY(qQ1}?#9!0hXJF9-vI@At(ZJNoxOSriEP3s@E9U#|u+CT8v)5cQ~bf>6% z)_5{nWb1+^@${czyNSTMiDD$8>q*k3Al5peku-RVie#jU{y4tpiBm0dB=(8J^+~2hpN{HQ zO6eIhL1_>Tl;$m05P&1#ix{Bm>}N#y%E_rKDsww zjgJ=J{od$nNcov01)D5**%+jyM2q<^8l0105WCd4 z)KdwwyeBnU%zVXoNJIMdD^i3}6$Xg$M~z#w%wX-#qsD118xOA(aKO5XnM`CLuZK&-0)|kSjQLn`VFltI*b)2u&)Er+CrEf5nS7hVvqLcqIw--A98+2{Zi8j}BYC+M;Oj)->3;R(@!> z;@t`ZSi-~;{N^NH)siWAHbe*D?tB534YB)UST9;-(k}on<|+gF(LG-nh2Y75_yTjZ zRwR504!K&^F2R!oN9>NIeYADaV(UVEKmdxiRRal~IR_TLK{S7DlxA*-4(FO1qkD19 zjerZ_ZIrbV#5Z3XWl*Zr_o{D<>!DJe_y+sJ=5CnjmcaCHjU5r%wrKIT2LqM*{ibBL zi*DchJJwgzc0`N6H0a59N3dqFG6`l%fnj28PuRlSgO0TV1I$epiQgBbwgX{B_K7?z zqOwvfY$QJ*i|>nuPe8qEv9RZ1KE(H>6lM|iZkNu+f?=ue7K2SlI2ujIPxQev^{1#2WZ zWtJGt*?si1IhZrS!JG{n%o(#-zKvDb&dR}@i6-ZwMP-Yg7y0hf&SyGz}k0PvK5+E`e>-98PgZBD-9Raf(BUY@kf>JWyDZSiBbR6v;^}8EK#} ziN#SZDZGgkr}%L{=GIc3VX;(k6Y71{%Lu8b?UAe^LhVNH)RlTgT+2?D?v~Rvw}r?^pW4}srGoA zTKuX~7vOlU)O5dssJ(Y%x&AtL<)sK5s;>9=yQ(?;-fP2xRWqb>7@GvZ=_-=e;%$Kb z?`~-7#^ZS9ovrMirwhV?+5vrTSlE(3&q=GM0?{7-Rn1}XN-|^wQ#C2PXwTjgO@KXC znkH>;A5DBFnE8Fla7&DbGu%RB`I`#Scx7jl5|C<$(h}gi(MwuNz)dzjvVa* z<`ILM34J+2axq4-&Eow+Gm63oEi_pb9*LrPVPxO5UlsM@$NuWJ(1|P-@XSjG!;p`#BApf_HY#%Gx zt;zfv-2P?$`A+ImS$UEXXSBdkQ+crrNjMkFnCeHU3l0$BxPaW3!>*t#!)aqx-aVP8o8P6i6S*HdBa(Nn_X*5Dja_uuLe~d@36XX>WWH zM2BNzSW(VqkVALa;YdUsZUITCs6!dr5)3-rV$#GGS#dt<|D=cw$l2DT>dmOSJyiAP z?yB3(s@ui#acq!aW7!bI;SC?l2KC?Rq*E&zmo@rUHij`rNqakF;lbjEV_7HUNqk=p zPue@JBE4OtorK->@r0Bp_#>yJr_;HM4c43PGsqsr_i2BSu*^qv-eu< zG#ffCc28n);?zV|3FMYeVzp42@v6prnmjELl1#04=@CxnO>i&qlr;IO>n5sKt!5Y) zj%M`e>s;@?&Y69kGyB?Kf|Dud#kMIRr21JbO1E2PQfSKwli3355WkN|^O1oKrhp$`UkytY5*hXr_SYHA~A@1y<(e^=LKIz_1Hqg5%CaXn%;r3eW`z zq#)StkSp0N%cvOBaHt|_uC)|}KRQItG&WQ#juCUGvAnEebkj{YCFtRTxX}``{gR$- zyf%&1^>K9 zrA*JCi%1*3s0R-6fdY331^L|=aGSljW5j#Y+5UD($HJ7;&bYO^sU@Lvv^0d>GWza%@iU46KV0Wiwdg$n`y%+aST-6vE7g zFt9h_JBUNR(l*9GkN<22YXDPr&t!AkH=~j6so&Cj`nH(0Wuk41A^2eMBRg$mdynqr zXi5<5r*?v{(a6YCbiSiUH?p8fVM$#lzJdjJ%6{;DkJvUFECH+{7EHW-7Ml(WCAh?3 zL@(sbVJUct0{zW3zE7=jSUKxvvymu=oSK}2J>c6Lz9RRclhCA^EaQ;b+Vl!m1Y1FO z*GGDEebnswh*=n`chJneF%$uxp6Zz%1SB@jk*8J(b;@IPT`|GrXb(t^ghO(q7bM3- z`PD2@9o-OgF2;LYq|e3bFwZPr0mgsdT$Y%0fqn*=Mv44ZCXUQy2?f2gyU#53&NGjk zb&8~UEL}Tei1G87OQuWafr^p7P|f-#^sd%@HfF&oP-#%6k%}_FF;DRJszi?WpoF8n zk1Waaji8tlk`PYg_+l46(y-0NEMN&WCu3-SSZ98SPbYh{3ai0|91JbVR!{XT*PGl= zqg#|aEqhH7I~Fi!?wKCbcUDf{xzIX08#aIE%&KQi>aZ+iR|DY6h1i46nXfi2WFv|| z`-ve(EFtH6v`u5tc4%Ltu@@34jTJLyA(ni=A~rkE8XLYNs;z;?USwR&-Xfp<>Wt)?bT>72_7O94#qU_!hH4!(z~IH%Ev^n-^>b@n(zh!AAbNn2j5j z)T2^L?@B3VrIcW$=1R68E*0;z^jLxqc#1PKmSn2z%SU9#(zJ=t?I7n>gX0lbIby`6 zCBs6BW8umRKAG7VUAEb5dv_&^9cmv=mcsKF(uIQ&`oUvOGN1HN2+cRKU7c&7Q5hAj=T*v4sAt?lE(Qrk2F^l!%WTkcdlTArj9=&!jZi+SY0|Ajko- zK+PXkqua7rVbrie?PV7p2`g8Xn zoXp;Y1FDep>*-1ESSSO#SD`Eu;^)Ct=#4d_l>btL_17xCtbuT~MWlHkdz=vEGC3)( z_psqwrcLbhuwq0Xed1x05Js0@%W{xeUCVMc#7AzbMWLcdc`3)Zj^}awphSHyw^T&Z z2gSxO^dxcTQn1NIksVEN{JgvrJ5YmQb!<5N5+mza9(1Z}>e!{|c55BWhQ$86I>2&T zoI{>gVi#Fn^tVwg@S?^x@dKIc5&OO9{jmK=MMJ2)0bZ;t)41W0#9-mLYP*tsW);s9!8Y$LqwW%V0I$F8bFa zIV>jEqhd;w@YlmyoE{|}uZNUe5GCHPXO~)vqv$n| zckGFd6HoZqAWKPf@PZR@+Q$Z3=0}@1oD3Ahn^?Z3AsTJTD^5gv6HB+WqOiQ)M7-F< zQZb^=CN|QtC7RwP+?9Hq$Xm`*;CtxU7856Gmb3mC?3(4+*msB*mNVRFB0gEpMnD-E z)XYj?OUGR%F0sBDOLmb{JlG6@&FjRCCMn{pW*E*_J8`W^k{IDcsPwP^XHc;LfTSmTLg>NK~%WhN|VFyU4-Ep2wo zV}>{pbj5YpZHRdAI;g%x#9z;T5JyHzxujM4HG+a8P7*zJJsZ-OOezjuiQuW}YNS+r zd_Aa?1X5SCQkp>MY6N4-_9B$ ziEGjlv#?uy*3RbI2yP;2meQ*yFl!CFS&s6Jwd|{QLR&dW&I*o2GQc*?a)-KI#l3WC zGfu_I`%|jI@~d3Z9F!A>n*ypmPD?38VXq&@o?w{qt6NG;E2zA)1UIm(@cLTuy4&FD z$89WrU$s{?+%C<@F1HK!w7{t3!u=7_9+~5mHoAPvJqiw!*N3h^QKn$TPgS{UVZxSZ z%}JJ}@v4GZQYADVmoy*AYg7Df2(W8#Ww`5?;_8W(x`s^G5|7M~z6zJO(bX<*e`z)+ z(v{)KS(@XTQ14#m8IhTj7K{ults$1*s8&&_3q%*LkHPfUdhtr)!&U3Um+r=LOixW4 zXKoWDHC1L&)wy}|Ona#F921K`WGJ@^%0JGMwN|%O1_1=-eK@6s@G)rRva{d0q>Dx! za`L;-zYp)4T}z~e)a7sTR0F(fm$Z`s<*r7L2f=4KS;1jRLrNU813LLlw!B0XC-FYZ z8bh<-$}rn&frs0rE~6M8HjOx82ef&bvs^3dyw!C8$Lp_gnU-KzjSr+CiKn>+UJ-w0 zj@%fMD_XquxLAbH4WQ{Y#4=4Borg0cU*5<@fDX5C!Y-i0dUO6)z#HCNttPY@1ZvV> zFpvm-5ARZM<0j4WsVXcB00)?Dyv=g?!s@DN0#V8)OgJUdWI2D1bV`Wqo7iY4$qKH@ z7O%%o$u_a_Cgwt>xQX2$*YwTU5lDtOd<)A7wA{>Imn-RtTiCToet8RA{^j7?h4euz#VSkPj~hel79iO>B}Clx`v7_$F+Lo#LBKY^aUU zV<7lD2u_thu$%W26YpkOrG%aYqH;q_Mvl+PDu9e0ok^~$dg@x0L;WT)M!V!mN)QkN z&a4UI-0yj0U(civ$E(JYt@G7mtX3lYce6?x8DH8cZ`@kp5qI7Vo$9N*V~)O>qRJa;eKQbgjWqE+*i)dsSzcc~XHUl)L`CFY?u zP&OjCE zIc_7v=KE9td<&8H7(_JaaW~m9QWY(!QN1Q`+(($P!PW<%&Ry2T&oP~LG zFZBfXU`n!qJN%=60b>wre#R05Gq{938em>tpOz+4{GSL#y!G0*O08hj?yyg6+m^oyKgvPsE^IxO{+! zy}MLvD|W+JO#*+}&5lz>#>k_fo*J>}8JL3Jc#^$^g3mm~s*v=3noU8n=xJDvh|(^)%xS zER8G|`=4WfN7l~$Yz>m^=M_Z1dtR}Fz6aQrSduZ_hu{Qxwi+6$#Y)-&zdXRQfHU#w zK_xC0{+vB25%tk8)Zhw#$+qC>jbE~dq6nl1xza^ zpVa~}qZvzsS*`1A>jU+_hCqtyFa3rkMXa-J3jF0a>{czAObshMv0icJt~xjT7js6S z&Yiz!2@#uZTLO>#o>6fBkrV6PU`$vvE3pFy`w%a@tR`m5D@?|SKJyAYfvO!x+1^Al zUUp)ZF86t1@K-y}Hc|PiLh9dMWzV4OmOsD?M8q%tz#c)eyvPuibOC2sL1 zGQ}-#u<`NOhU!frZdMcS3RDwtK>Xy_3!HQXe`IUXbBruOqAos8sbduePyxk{RJUm;!I?4Wur$^pnqoau{v=vJfo)Bl=W2L|e1On(# zM2!C%E1in12v=FoyV&|I&k_6sRuW5GxK#wZ;8nG9z6p=~qnz%`#HJ6}C#ZAthpfFn$(7<& z2`-~)ZgkfZk{W3t&iSU)vGF~cBrf}i9g8JtknXFO$@}R5g`S@tDUwgKAES}or&%>- zywAtbp@5%M;3pN&vpxaIBfITWwZwn@DHKGov3I#-IbWSo49NR;b{bD}K2!STuFsec zPXj(@`;i>~T)iA|mMz57oo87Y8qdV3IpQGVt+P;Uvm@{R0zNscr*o_{nj}tybx7ez z&(Dh#?O(7D@zNZ>0vX3Y4}J}E20;EBABH6P8@LaNxb7QPi?*`?xFnOUU$G`!_g552 zEU?=7U~_Uy&2EjFu#m!|r0E*3zscPqC3vaUktovf5|sBL=isd?4u=hmK6j3t`;VZ> z12m($p(*)~p@{}7{}zyxMv5E0Wiz5l8e{^wDO7;VBO*%N602j|(RNUr+_yT%#9 zmZFszkvB_PNfq(mv1*{F000%C38t|WcRhV#(1}6y6IFmQOmC6m zEuG7`jWc*Lk_v<8BUx{7?4ki&Y?7j3Z|R|Vc(DpBH;auQ^7y_zbPie!h+z4!n-csM z8&5=2Qi7-CnMfc4f;_AUy#@Jrb4m3U2D@}(5;R5Tw80by2?I&UcXQ=9ll zG?%1%xsy-B7SLc}5!xmyg~}?Z){Qll(6Zh2RW7xLR(hdRE`cS%(*TWAT`ODWZgY*u z9Z`_uD)YiX)B=6Rr?!el&q`OVWdBl|fmUJeAF55WwH#v6_L@DJ?N#QugE0R)-Icb8 zym$0I=^hsjA0f2KG~o1tIS0gu;jMS_%MIe30I%70@hd0CNpY8XM5nZ7tw@RCvp`!- zF}zB0!B=9rWMf%<_&lIwT_j;?>X6-)P|x1AWMd+v@`C6}9C!mG20EmwB<&cPFFS!i|J5U|hVB6|L#BF`}8{-LGjwRuii*!8*KYU;%=pDdI z{%G!mVWW^cqcVU9x=0&plZG%)OAd)6;+i;~DNnP1n`gTm!sJ9;MJD6lg1mjBI1$Ie zi30uNxz!>?w%~R z#B`ILqNG263bWIS<8#{Qd6OW3$m@SxA!4mNOL7xjKV4 zfF?{{?x|6>!;l#NmkfR*`d)|5+5mA)CVyodv^3dei1)XZ)~u#M>*>Yplu{QqP0uZD zIV6FIk;8Z{VvoGTc!q;0LzO96o)KGyaU8}+m?ieYVSEs*_8$!6^9GQ4pjTy1X>6GZ zn^toRf;(ZtP^!s!QF#fURf>fKWWdZ9QklVuVAPu33VK^7!JFI)t{H;Q%nVt1yR1Ap zB#DS;FX4F_wTllgQT%607N0(a(2c6~sj`)xJ>2$hx80A3d$agt&1x6#Wbq?%p#7m= zX7hA;b-^FA`EP;YpXP8WfB!9q{~W^4tkxy|pdgxL7lGmY1*keRJxd`{!b%B&7dI2! zoXcMc+lt#vnK#c~U>9|Hyf~4Jtbk=f9t-YT?b>EK${u(rkJrc2h0I;|JLOsJZ@aply7?fOdv=hHu9X}f zELjZ-X4Tr-Y}G~%fqicx=nZyQZ*3b`r3d=}l!-=H)hthaZDFBo7nPwi4204Evcnz+ z9<6R|R~NjigQBn{5ixNzms{2YqxmuG0pE{1?z9HuXFVtyy z$HLNad~7_pIyP~sGx=j z{j9UC6|*Mr%i|z)! zPLk|X6qoS1NbV`&`I6G)`M4Cw03~Qu| zeK?u7pkk4<9HXdb3jYvE`BV<&G%%tR@-fo7EBKQXymK2U?*f+j&#eDs0934L5bL&! zantzdKD{k$JH;K-xF7wOp#MGS*jmQj>0}!0N^=mz0Fn#sBrq@~V{G8td*m1g0xM;F z8N|Wjr9iq{QjK%3IA6x+gOm_p1ow-Y?S1f4d#3a0X#1(@{26prhOYMF(RUSZL~`OP ze)dvA5BDCLX>1I0uqi3hRKQ$Byk5?wMfA5b_&Z2;&XlAOxM>#0Ek`iFRPZUW&^pl9 zLAlu+kwB-yGcgCc$x%@_hi4Ac#?Lg5tw^P!)jt`O*87cAfRC&4Q=qdqd%O*>P|Bjn zp!QRkQnc{V^lOjxpf0zTBzIwSr%hwtf2@{1cAA)QpKczZJo zv89j9<>P=OFB&|8VVs`J&tX*W%>yIDW7^gHDkT1^xkv8JYa$~O#HUyD7x8Y_0{%95 zQ;g$3@()Q>U{#wGNRQ&~dy4H>ik)(QX_6VELk==Xk;(@t#Z#4|wkc7D1RjZfmvW*^Xd-c$eaa%2L?E@cRK> zFpQQ!z`+2`tGfd!&%$kt%@_)WGVhzt%CI6iWH9WT3wfF)-jU=G`xo*|(BE><-w6=j z2MfXEKwXzD=D$Sp^R0cC=Cp)k}rrME_u0!^yf*I?o35@m5`Re11fo< zyu#$mN}dL$}OnC+T`pXBk@OBq4=WTY;I-96|B!+xo0>ukjiamO{h zC_YSE#|=}Orj4LxzR5xBz7?GUW#T8!j0 zpk3I?UqX_+f-7U$3Vth|p7-(9NZMEOJCH=K;tfbvtx^jAA_sAHyOZuy>%0{nSm}NX zdKh8ag<6TLjzfMXe@?O*ZfT7ZF%%)86f0e>63JkyVbeB8u7*86Sh_rDnwtHl2Wj+iUNSBCE*C!?z)tUZi&gC<0_U`W^fpEjPl@BKzTJz*}@Ij z{mU}a?yR&doC1{v6d!EI^7gcZT>Hwp0bx&u!?>0}I0GkLDsL>u!FRuv0txc|Yx%BA zk5`5ZcfD*-25iW)z33HuQ!4rwj3TP88T-d%YY@ z5A24bP5c>nk7-AbIdQNzH@k1MeC5Kghrl`SgX!6fw?MPfxPes)fXo<|F8||D6#)ab z74%N#kfDTR$O`}zTz*{sB{nYS@!9`R7R)*J?R|Kx(n zfE+r(wqcjR!!y_M z*9_PzU;qeO#J69s?Dv1ZUaE@9B0dpDV2Gf}s>9M6+`|QhCuBwGGGj=w4gyfG0GRK! zo5z?UB!n;U%KuC8FPRu-Swl0mmx=psPM{=>X;c`1K9JZ!Y znY4-f*Ya}o^~qZ0%t*VDKMbGYMC>@QAmJyTpkJ>Rf4Y%3L5)2CW^@)_iZC^H!A($e zuxH;S;ST)zCj1~59GL5R%WbnE^7r82Qq0XESs43tub;|4&Mak0oh`3KN4M((r*G!# z5~2C2*HUxQoEt>@7LGfll4rFxG{6{*3xymHNTg(lGh29$Q^v`d$A^`Wvqj`=<#Pb~ zL4baql8i9WH*J;Hbn*UH{zD`y?^hc5JNNUoc&d4T--Gdd`v7o*$7w&65})|xPx)&| z?)e$-j3&9W>)b16*EIvj^`33w)(5%tXl<8*S2htJKgb8jnD^~S;J$i{d!em%NmWvI z+9}xMybW`L=m5XJD+>bGPBHu;eoG$`64vl)AKfFxH8ExL>3B-Ve_C;udJgOIlkzro?u@aZpq~!Bb%mD~0#FT>greY(VvKNIdZ{ zPlfxvBlVp=;+=>2WQ^!AFo#?6#qdXzq3Yh<%D@9zZKxQyhgYD(rX9Q;$tOGbV@Q7T zC?AjHPme0oX`jba_M(*TGVu@429mM7FuK7Z_w|8Pn&Zr53wNaJ| zpFD;8vueWn_Lwjy$V5Bupi!dg3GT|h=#m7l0#~K^jTlKGLEVa zc$9eM2}O+`Kf!-0$GMBg%gf;&-o*#w@wdAqi@kd{&qjpYQA~QgMn;Ouvq(}*27a`IJ`)!Ah&Q&FUpsgxP^#a?guR;FkgsYp* zN^4xOT6xUl!I{*BXs}kq$2IyOZkj=iIj&izBeKf0vsPgOp<_Vut@c!gULlqu6jv;B z0aY1ocLi%yc9VQ}6gCzFtoZ;_LMhF=!879BpjEl>OE|t}j2!v~%$!mw!Jrks%zncf zu9WKwKMB~~K~6hD4Oc=5LC7)e0pE*e%*_P|L^QY}((WrD5cdlMjETkGgX-P)w-S%- z7a$VeOc}BxLoK1#c^kkBlo2LG1c;mQODi07l>aRZrX2x}7d6h;xnQ!-Mw|es&ma0x zhM-}I{|obb$k=bj?0k>yeK;ZI(`!3g?XeiPLGdu%}R4U+Ugr-Lk zHU`YJn}8&PzUQJ$eEQ_sIFL|_pWSd;{`k*Wc%utNFV4GhAUSasLRYcH2UCU7^@yjzZ^ueNJtgm+$BJ^$}VudmTZfkDpK zU?iS_OFl0!pM8%Qb}4+V2lxrFNilPdADl{G=0geg5FYu zkH{ibYUd1^h(m$N#7!YhN)GCGRb>P#$X_yc*H@}qnL*AEX59cy!#v9p-nc4-?hpmv z(k{)*!2=myKWr?x)(Jb1uQsHnN~1LF9Wn{+4^48!(w~*3b_LlqFd<_(y8DvgxKu|d z@-%)-d0?%HMA1NSW^)W8Z zeb>AWQz;Q&zRp)BlKhEvxU;6)Kns`LKH3l^*1f?qQRs;`AcDd~d-M&y6C(Hxf8;kw z5uE;sH-f`0LPrfCwHmSb4NH=^>rYB~dHYX%I(mg~j*!cU81ZL*1FG!)Gi0?k@sn@) zh(06(>!o^`(j=sJR$mQURGd)m!mI2EEHDeLOO5Z6*j;m&}X5zx7 z*``Ach?28{Z2TJqn|deDkJuBnSLFRw8DG!*mG{9#e%5#RVGMgY%6b^s&^!DM;7-O= z;%%pFw-BLdCwXoW%(p1ymHnOU%~}4be{eK-*GZnOor($zuS7ThaR}o&K(HEM1_LTj z1CIYJpmGc%PEPUbaj>SRTa26$51rz9fa#4>ya>u#(D5vZeSd>Tqr(-K3foZ3ClUy#(e=IEs0qZA7@HqWb zWm^BQPo-Kbs?YGvQoB9F@q5j1Hp12!9Ie{WaFc7_&-fK6SoImd5(UiAaaqjtr{G@J z7d}&}#9zz;p;+}$fy`)8__=arfBw00?vFbQT?5yw&N<5k+C6<%jd#o!{1QAZ{X!W% zc6}j1e)y{|xPZ=-Pu%^NxuNw^3^U#Y$qX+d308%G?3ypr9jf0CpMdbLQmB1sD1Bihl%kh$S90U0vrxKpz}$GGMr_UG6iooNS;Kn~S?%IVKyWnBLu!6qKc= z-Tg+6uL;vDhvAimnKra7Pbi{GWjcrDMoLrCo}U4vp@b?AtG*efrnYalf!(PYXF9}N z=XiX3XkYXC$6!YvoaPg6*27E$ck%9{i1uJGb?s1z}9 zeoEPGs}Lb!9s-%|n_wR0s>;k#AYw+^ATHof8$wvrRKcHwpmALNku_69e5-b7xeLmR zg75v7=f(Bj1}kvw?zjA9te^|_!A>l>4d7J&{yqqy`QrPa^M9}pZv38oa2#%woat^{ z=BY6?60u9OZI0_=+lrAbiiVzWpUD1(4aHf5(wf;m6%_{yjn(Ro79A0`#mRUtBju0< z=^XEI-!QnkjBu^xc=3u}kX?4hU_=&$=S){}Pgqcpp%x3?gc5Z9=b_ z(~Dl^776@ql6z$XF0Ccw5g=o=Wk+md%f)o7Z4dDMoz-?Pc7#(Xw*`29K)2O6V4($B z&w|j|G}$BQlaRLt8#ZZSonqLe;JwqpkJZ}IzDVQoP4fOH2!@>6%31%EoxU$rR9g_CXSpsS>K1e1Z8 z)Wh`Vg_8||zHr$kDsGUID1k4n*~W0*Z(4F!3B_4LfrXOC78CIWv&kQ_N#eE}F@Sry zZ6lH_n+>6Tf#o*a8VXtO3^22Y12Y!eXdRgTaZY*k9K#82HgY(r7;ESlTPNZ>(-?P|Hh{3FWtof8L}aHtSQQ1f_x zYryWbjYqhBc`1%cW9jwGWfl^*h>Dm>o*>ExT8+RhF_?!dFoB>N=PYo2CtT{X_u+LO zcM})|_5sN=a>zs&y32hlsQi-~hr>O%5{Wn^r6j6{5$Z`Ci&f*W^|2LRN;0NNb{Z@z zBY-TquKY6ZgkW?D$?DEWby+~P^s&K;CmuDExBJ)<67ZXQxYJz5xYXcRxIm)R>A+7? z3VWQb-z8*xc;@VtzEyJNr~)9}b3oYvQ-GX=kcBwgT;TCMULFL&J{)JeJs+WB7IdtK_mkc zZ8EI*M525OY)!K5Mqno0E@@#h!4Wj6H_G^60DT0Nm-M&Ec(_OV+hjc0SN&}=nrTY1 zO72d^3?r&5*;b6}kH{2QQ$)-J+`E>OVv}0R{uG-OeL3LhL{qy4*rdL5=Rn(sc)LUP zI2DSG%Qhp1Un$A@S=}+q8aUQaN-28C+dI6Ba{x<*%HH!_h}X)*##UD%Nc&lwtW+D>aUZz#tp$ ziFeKQH7{$z&r-_5$Av!FHXFcRJ=oSTfXtSbJ-1wwDwJ0f?zx2F(dj%AS4BKz;_Qp&#rAISmtAW^Iw#^il>k1s&ec}>D0bg8# z#g3?;EL$a#U0MIDvTKix;yB}b=QY0jYSLZHU^@nLU}NmWK74Qn12#GP`~YLZ>r4yA zJ|FhkKH|GGeiRILj2jGYln@}ml&VFvY9ghH+LE-rNQk1gNmWowlD-sI5ekj?BW;30 zBwD2sYJcDC?)ga6O8slKJF_#hGqd0O`wi{GC9hm|^mI9OLE5K|e@GUz;$>3Mx_WJ8*XL{R+zYGAKH}>oeoGXi>yM59K)XoT#fPn~~k>p#%Kl zN2>e+S0O}TIIc>$Nl3Mj(P2AhA#G$3q9b4>29WTN zcQ`Uo%3|ROltChwmLk~)By#B2ENCKmI1(L+Vtf(gec%{pY0WoaIGBmC2#J4z5k6%7 z&y8G))?wH7t$tTOgf+M>A-C-?B3{tCf$|ZV;87y7C5EHY&`jJ&HZ=l=W^FiZ&JQ6U z$cVgRD^M3}0o`a3I3yug4|0+iGXX3%p+>nnfvN1@6x>j|V?)rtrSpwrl?%@7#(;*U|hfYEd%&-;)k6Y4Xm{ z5DkMPb^p^a8xB z;~Jtrq#t7=vfaKA--mMtj2v42bSdqoz)`$1YY+elvJi93ggE?k_#9TOG|`_pEceUOu;+ z-AslyJFeKghOmuD4ffKUbx!wbei-317hp^Bkd&|p)X}m^#T%AjU18(=2sK-hsZr-N zy!Hl+mtjLN;+^aEJuJwI_c@9BCP#6@i&za8>nQv+4fSuHyf0|a6fPQq<~W&_t! z13k)8_8%IkG;Q4ZUGeV*dJ50K-bij-e%wd}>Lu;GQ~bV>wl7htyJR4E#KhGea#-K0 z!M+i?r2RrPG|?`+c%g}ccBFsZZ=%ZVH#Nub!EtBm5eU~3jT`7H3o_}=w9^h4fVO6G zKl+YV1X<9Kk>7CuV!P7?y+Y>7NE)6j#00*E7kKEmnrUwVM@R%fN-UD=Iskzayf-uu zaYLEv*hD9}vpX#mNV}!oPP`qWd^;X=Zh<26VPfDQean`p*aq^z54W?RmpH$juG@HM zT>;|A=$ip4h}E@H1a~jD66d@8vz1;&-IsQf1MMX)eU;weCPsD>hvIy^Tgs8{Hp<1( zK22?gWZycFF@*;HGv-$M&~VbGG6&y*fc8&2{xD zcQy45p>*0lPFxOA zR@!GNGxGN?s^ATi-wlQSp73=On^>RjrVBjglCW&^XqcAp?TcY5wudssjW8AwgD>nM zF97rc!u5oGo{0C*LxAdgvPaI_`_EDFY?-Tp+t#HoxY z=W3ifVbBNb=M5bn3?hhK*`|w%0m+p*2dGu<&DRI0l-K9hAl2sX(yM`#5d>~Nj!%&B ze%QX6t43TNpt3~I5VjJkzBoc{b7VogQLyrBl)(j9{FP~Ws@&l>B!tiVLzE+S9tO+% zP;)ehiyZ)D`SxL{e*EJwEt#JUsvaFg-fFgsA+Zr*IIOhmqHK(oB4LUj!HCp@pbJ={ zm9Q?l#^mUqAEUMQh%Vk5gU*XcyK$PAxnIwgBOcYq^~A+-+RLkFpP;1=maLq>4}g+a zj!+@5>sv?gZvsO5qa)0Dy=-+1;&dPBOhuBLdy+gkiqHBbW=nMSC&DvH3w7(SFmb>@ zE50{L%WS6-*C**V&&rREV!NvFJ4{g-_v|?akJ)*#^%(74q##1m#O!u4Mu~;BCrJr* z$cZn_e+VB-=J-22wE_n1vz_j z2nzTo&(OUzMg2tl@CYdO{b#9oLIp~N)U`16Ek%&w3~mCgC37t4-(@-0`nra|21CMg zE3X@x2LvZhcrm2pyi^B_`qnahyJAv?>~gM2E9Jn0FU$-Wchnx`x8SN!V)RX(CHL&*-4UYBUnG6G{I(PPTsRw9}{gN&wdZ-J_^+n>N zznMyWuGp>_)MuVj!INW2;3_!RpY*%p`I7|ysB_X zP}KCS#5YgTQr=xxPSZl?Oolur1&=>CO8kirTVxpp;qM{;R;R-i_%cqLv2bQIl zl`*!W(sU-Lv>c_zPF8AE{w6FZv8=3|V#j{_ivY=Xsy^dElON z_Fil4z1LZ5?X}ll`|NyS$gYEfl?rd2$3a?@uY=@^^tm5`HgOW#w8ox7BAO1^$B^iz zukEAd7z&;{X=u|}M~pm@LiO#mchfgYLet|8CrNKQ=(x!=mXgOH_Yoe^WODX1Wl{12 zwBA93n?^e`OgWV7g4Tsfc+*#k1MV6}dYkeQyeTC(tm!>x4DmJn=u9IOO)0KqQ#~br zh9z}Mbkhb`G-+tsO_T$|CqL<9`tTo3xj*%u9BJMpbzl z%Ke^_G!iw}TRf&dZJZ>Hfytkl7e#$N*u5lByJWO`PMO#3tt|GJcuU+1m%ydZ%+aPL zg+mFf_sfI&l+@SwDofqP{>r)^!X#NX7W z(lJ#vz6xKRZ-uw0uA$0X>&zcMa+D;Qq?0OfFRUMxdb2yVP{Jok3NlHOlq|KYT0g52 zYZ3fhcSH$;MPW)``K$`Jhbdo+>#gC+5c!-65Uxxdd`=~?S*z;2m9@wNNjisgOtBs6 zdG&&NQN65QQLn0mnyJ*Gf+<4TD4$p1o(N^Ad_jdve^Daf-3TRFz8HAu7m1WF2OhkU z${_hl;Ni(grN4YN@bG!0GSJeg5^GkCN0K_#rc-i=me5Ce%qbIUko|Osl1R*8OH{^L z7$wdee4UcSM1dPt;196@Br378i^8_IR5zSURI*7Z3`$ZSlOrfJUo}NRN0M@<98IC| zCsT~JX{hqDER=QpX|+$&PwO}=Pf;Euaqx4Bl9>`mP2sb=we{t7)HH`AP*WC3p@hBwdS2R|=J&vD6CfUUN7kC!1C6(ecU| z2g!u$nTj7T9W#-iSya0mN_Lt^c0e7oyQ`z|V5p;huaQ8Ju8sj%T^+IF=t5;#P!2Zv z%0eYV%UGn`Ny73diJ$AQ^Um@X`)f*2TI)RJTG&o zSSXyURo2P%^dT@0ggfh$(WF5;R;O4ASp#p?EB_>o+G{J6zsYhVZHgWh2}c@~{$wM3 z+MvuQn<0I*l7pAKS1So*E3~Xu?j_q{+-=J6gsmtLGpmGQFrh$fLs@Xn@K>S?O3vB- z3a?4pW=O&|t@$>kH?eNVM_mC;QnU8b?aBs)?9j&Dp}e4w-SFlXWgLv$qHHI-HM~!> zlResx4=XAsd!PSrl0&fe zDP@7&O5ww&6kp&v4(`~iY?2RA$n1}5(0?DQ+hGcm_hI1?3a9oVlkhq3X=SZ=Zhu;- z9NgMth{tan;&E&nh5dMd=-Ovc-`aFyA+TVdvJ@isD>Zx0jc3Wak=m4ei(luVlFUpZz_ZJnpiSDc6@zXoTQtJGx0 zV)6bvDOz0oL2HFSW?3R|>oH{!TBw#+l-_Xem@=6#hy9tR%eB zUsK^Jw=rUxBauXZmA3|4@mF3eimmWemUwWMX)s_Uo1i)?H;IxoLj=dn^ZH85>c&X~ zVOJH^`B5u>tJYoPt@YNd@Rs~WrQ|aD>TAV`I~3NoDv@&N^}fPiT9pwb0{-2qpko7R zuPTEF{5D@mtgoV~yr|Ms;k`;>k($lKvwnFbV%qkXubo zDTzUQ775jsyr%pv2o2`UHl>n`giEKC(Sy>NX*R-1V;Kn-)BGHK59vDQVL2H~@x|d| zCagcHq(JToMIDpX4KhpAo1|>kU3YWX4Z53ya46V0aNk=>6dX9AgrRBs%L!!=O69jF zaONq5s5g};EYtz=-&7U_=QEN#w`SRFUumVMuD%8>K|Z|xrZNvvbfC1ilzha)`!&A- z>w&%}6%X<19UtfmjIyFz-+lThlbuq97z935Yww>_{!Fa(qQWYLyQK!!)Y>mXJNULT zUYIw*u+YW;sm^bX$PL z_HHD$86;+%Ru-}C0(={jnsxBrI|AUlyMgauP4^G$5AJuAbhcZ7?_g-i#7pYEHvoRP z8~EO9;P#OHENX(M+*4WXCE++{QeVk_1{v=t5i(wNV;23cl3;3K*I=%QSfu3CL){`qb)(=jnbX5T3V<&6+cJv_l z>SJY>OgP>T(_TKOI8A7}PIf5mXtf^yyD}Iro-3$P2Q4HRJuAm&N}`O-j{Qt2LMML5 zXUdpfp`0WJtPy&hsFtDd)n`f^kKkhPPDzS}$j_C9XbZkQuOzb=ESBTA6bA=BMK2}If}dWw%o@t&*7e59zi z_MfZDgs?+8RJ|NWq{9ZnRxTakFuj9BXq7)H#b(lKNL02-4YnTFVWc*We`qM8w~trH z$tU^tb?O1RoeO7Jn@ZG^GC6Y{Nj}@Hf}aze>EKcahncFnN>}!=TRE~wr$*x34r@mM?BZh-ftIxOD0{RV-V<0^gtq#J8u)QA+q&-^g zi>h=fT1~`hFS;+*6hc;Cb)3m#A@9PJzG@0C{8cB;b8UUqp~MG23YdI>J;;nbmI{p9 zaJ(%vZd38rqu(kv;b3{i{SZXeanP=y3hIrIajW5^S|6cS=2mZVk$TvbqE^Ta7Px#$ zN$xl?hO3rqRbk?E` zOH(JQ@;M9Ck5_Z$4h#Hcyc$2aqer*S-`K75Mz_veARuS-_lO!w`EF5$>z=A8?Sa4bNhdRThD`IT;bkzXv-5CHjqnq93E_PZV zKU2*j1Rl*)hvVh1nQ8?yTM@I^yX49dXr?;UpxA~h!qS^Pgj!>_2cPknxi|aG}78M8X~o^ zIckbsZ^G;4dh-qRs%Wz z8ZulQuO>nB9Q9u;Ur@=hqLMb}t0lO2|2bb>CD!XJ=c)ffo%YXHx1wTp&Q~YnWl{mE zb_J9ds3Rk*t%N4#SJrr|>oM5nEkSn%7gEc;b@lL4fjW*fz)uD0G`ZT^W&Km@1rMoI zZIv3V-Q~L;DgA1tEkIGe*Ia)Qa-+3r-JVEDd|qYR*oA7HY~85S+iVS&HXCrETLVMg zc5SEKV2T^-STM*w4YH;f%txVTtd!*>gm9ad?NwW;cl zVcI=KYKm;xtK*|N-fxA!c+@8`hTvbS#>*{Mt$C^HHOYsp50&C1bl3_9O0oQ~RXba% zP9^e@ZewY+YCfNu7$hIJ0+g#?%57Gyu|f@&<&#zzU!#UXMzyMFEq>Kag4?YmF|)ST zTQ?h*s`cp7w+CRZR;kJInd=A(<+E1UQLTo{=d7Sr<9v(HIyGwzb{z}x;h?oci~t=n zNje{>cGjwMNvC zx4RANvQ^u1n;N6aSGsPl8ntk41KQorZanT3yp1qPMEhxj`ni~bKiR16M4xo+UFt5Y z%_bzp>9R>Ko34t{R|AGV)OKC#LlH{8N~8#F<=yJ*M2i81Oz<7|d9By^(_ z2bZ>}A@K2Lbhr})%{ZHsB+5cz>=yM|R9U<)NAWMbM@_Sg)cZzcrHHBfi)0rfsPJMi$qBiP)N+thkFCs305pn6A4o{r_T zk!B+0>#extaH&AQ3%?{4+M33_9|5aPs#WWJQ2ow?TAKMNQdEhhC+(rgo*z0a<4w&&+?b!64qzH&}KCSRau9h(X95jSKDGUtEzB<@RZl$G`kkd z@UpvE?Tu9=YLXWto4z_ps=kJ!!l%tBIQ2SfLxoo}JgdQWqeIhR>*>%4-`<8EzO)91 zrvJ!|HVOZPb-;>^MhnQLG7QvV4~L+VRXnOj$Xjup@+kIus{!%XN7ahRZ354UT#J@n zvb0^N5+OI+aP6uO&i5Ejf;+DF(E(Q!^ z%~}ONH&Wbc*rz^hI^6ZRy@dAC-r1+x&_>wc?@z1ka;psvJ)1fWN4Q$X9LPeo=i~ zToLQmpiXS7-x*Y)nJ=lph@Ct!vCLOq0xhNLz#w7|R1SSvJtv#((D#g~uQud}8b@$6 zc}LY!bk7eTMgPQ3l2ac)Zdpr#S_bY0|^`c8xZU9*SPjoqLf@}oD zwW_%WZ8tpBs@`vM*-1H6A5;6lq*v8oqlI`_|EkI`jJD-fH36YBe?-NJf%jik2jY`X zC+s!#mb_4V_c;$K{d&%G+4VUuq6b{`jd0NhT(qDa32m>b3sPfx;KbdC6KCLv3))qT zgC^K@yBhynwlWE!K5je)%Jx;n^;;m}y(6tTcg3jcmx{Q%eS*p*<2 z%2k+l>A3n_5E%L_})}AaOtt{ zO?8S~U^mvXg?4={8zkiz9UYWs4|p;5>k~kpF`Rlu$`@V6#{xkSLp*PxyHaRS?{!k0 zfDP&`)t^-FxUmUupb1}~iHdGb_yRl#mnuXP_*ktsp|$)~y*G%|YvWF<+lky@Hx>zN z?AKSea-%^vdYfW&ePcJe8wIs(inJMW-$xnT3J<)mPLj777=8B!Ft&HY*e)>kDpIo@ zqSKW~ZQKXyDMj942hXP{stKQ{>*U>b*!PJ#MqJUa4u#H7)RYl>>^EBEJ@%d!*%?@3 z3SV2=tCPH0-fxGUpQ@APLw5M$Q}i_OS#K((1HE2-iz*m4b*MJE#SYM+{!v`V|6Ls@ z5Ol!xe^>934+kCwex_cOj|3iuey)bawAx8(e&tesWl65zUoLDgaj*2%l@(#I{J5Q< zzy8c8DB$ZqM=z>1fcVleRzXswgz5W+iwiB?Kg(mYDcSm5_zfr$nACs|AbOt z#Tk3In4)&*ylPeDvv%#ZuhmQ?=xp~&82G)ak#j=sOHqt<>(lZ7mG$W`lufrjI_>}3 z`eb*vKJs}(n&9OhRcgD8{(0AO>B6t|RlaD4V+%2G_VRyJckjzOLr`g@D}g(VEgH1M zk|?MXIic?#=60%2$R^@2wg$I5=xCEU@SyJ#9$HSTRkYDAhI7yNDvd?M8cyj%w2O-< zO~9wi|3Q~YL`ktozt^LYp&DYu%0Uqh3K^9s$T=43!yO9ELbHcNJG$G^7{?8EG{&LZ z(U>me3@gpSu*`i{+=5Mj{x+J37i?^zoaBJbSzpk9WgtcP6)#Um5hmg z+>!B$I8N8Hz+*tX5KgC{BZ$x&Ek0}kMH^pbg&?&QV<~!5mPi_o&RuLI?H^n3AoIlz zhqq*+zXrpvwaX{?>L#MkkG@_#;+ri}gF$(HBz+7+p8D7t17q9RZETGOSVJG0&o_#( zH9Dlt$l^PcaP3kbI>v%#E@=?GP2T3vHwCr74x)nz?!M|TquBxD66iL0hXdLZ=uPr& z2k^nPpSa?4KbSh0hRS;!;2BJ##1#v}pe;g8g`x{)Cww@V9!B>}C$&FNdua%rDz`Ya z$*HudmwX5txCJ*1|2>&z%7^ubKg&n-YovxdjO9V5RtL?+Ert+ya2j1^Iv#k^oYUz9 zVr|ozDV=oSU)P#eZg&7~NA}Y`%%L5!e8wU6Bp;K{I>b(7gjSbFn@PWO0x_|}(LKH5 zyyJqyOfNg64u{Bo7%QLGuMsfi4aIG`;Gmmuw>`Y6+|1#=HSBxIy zRRgZ!FUrhb*h!O=hGwx-yt%6miGY1Jor(*yg4r}7fjPTto!NPV)|qiZi59~KPtT@{ zhPn{^dTvD;rdEU^ik?~_+6ZJ;gc>-Z0;eC$nL|gTNw|Lw?K?E02mYOiAKit2=XLyO z13wx(`LsWD&Y=U*@ruR!K5kjd|2OkOuK`FM|m%@e5e(5UDXLKdJMDS%lE(DW9g`E=lj0O$V{9h%4tx+l-oNMf7HQ`>%T5{2M)Q{=evXbB~_y z=-%@kH}rgm(fFbYG>d;3fq1Iwa-#ITW)cR6=HvQa4D^j59trt@?j@TFQzGj4w$3cMud|F!bv9u(m_ICM+qG)cUqwh zuR-lbX)vt48k8&-IN{*cplRaTc{M0@*qI)jNkzt-?P84B+X(3LS)+loPWZ@6Us`vr z2U2o(q~sfrI(h(~7ccEv6X%icui6krCVIhn*(qJXTlu0>y6B{nYO9JWDr$=Kd_o8< zr3vz7CuEe;k@965tSqG&!>;sbXH)lPHr>$5RVRE=N~eT$qN$thtrh8mxn-VO3@UXx zVL}-od=zZY0~ltmxO;fjI??# zMZ3CBAfjKLm?)r6Al>>UGINk<3<6&lC;|AZaB=`HPBf193D8(hhoZedSdP|zB>YlN z2jC+1e{ZGHScr9fz`dMCV&L!QwfD6?ER%r4WEg?;UM$%bjlfm0P|e)1r)5(Tx; z1$||uA9yS25OnvpRnqX`6)ut-u!ACH6c<#^Wi|eaY8M$3D9$V?!HtPptg)7QYAamu zQ6-IxxDhYJS6Nk$k$k(K#>oga(vQXvuk-vULwL0}(B5G;qR~2kwF{PTB{E^n^}bAK zsPkfrM%wHRNKjZphv0jZ3tUox3tT};Cgusx##~rlDBhRHC3*DXICwWmi7jcvv|2qO zmPC1s(I7vg0t3TVD*c#OavjLsP*mlq@zph4FEZ71yRW@=FL_0CK9}Uvn+tl zK!=Bh&>coMb{N36T67e4yC9{W4uYCm+DG2wg8OUfP1(~YmY|3w8>)QGbm;nv(kSXB;zngI zs;~75+KfUJqKg;$O}GV%`rWN0#9LG2uZeMq^h3y4L8H)Yn5GFDMn;2}CyoS5II4 zxQf2|ITt$X7qMmOT!7j)t7zYV*-AvEySV|I?LceRK>M%j_!SAC3rREx66Xa8@grYw zN%)6v*XP0-L0Z1-lJF0Uj;q+-l^%j~Z2T!j>jFIq>xMYE49kyO* zeUOL3taUg74^*tfibmM6jwZ=_tnk)4nuuGc@DmoxtyUPao({pyP?*17^u-E)T~BX< z7uVBXxTPo_CSj+78?oUC$Y{jiK{_lKmqK``5fNK#@LD5!?}u&hpGNfB+iZ}wfsT;R z*q~wq&5&{5;=l&<({V52>kYKoWVU01q5F&}6n5T0`ysKTcVO?v!Z&x&QF67t>7qRv zCfQ!_jF1^eeZX-S`WB&(au-cAB{|3gkXfmOK;vCB8beV{yImph=euYhWag>6 z(051&``t7d7a!yAro&BJ1$^=#8UmZ|Mx(dQf#-YNaQ1Fg*cJ!;a5s8*N03HvG)&oq zF_d-(9`%WU4V$RjjOPmi=Y8PiO%(Tt9q^w`^fbJ^nNEU`Ei@D6ZlR-L+ZO7Be{Z1$ zkbe&?gQNG*IS_m=%>mE7bgK5uy%@!VOIzv0;KVGk+?wOB@)g$-VvR)W=qt|rh6+(>&jg4)bDTrpZ$(j zaQCF824Dm%+)n2)JV#U`+}3FA0vRYd%e-s?)8z1&w-?i-xfjpq{JfJzz_9}~ z$wV5M87dCaA~<=F-m0aw(3L^fkm>k(by1Smz{`K8Upw6Br-&SPqi`#{aER`>Ib;f^ z*BB+uf}Q1Vy}<3SbbE@6Mf}pe)JQU}9g3MbUhnDv{vHMoK2HalNry}x&|Z0-enH^L z7w8Z0*kSq?D0vYBf#e9L(4txB^)ekBkv7{n4Hgg`BDG?3D48E?%U`C?2K85^C3-v# z-_#02y5_9HET;<83WWMp9AR?bMx(UiS7?8fqgFZ~I4!T z{PZ@R1v#ha<8bj5-4l|QXgXJ`x4MnF>)!R?gZ{U@8=qAX1msY`x;%CSiTp~VlhSuA{r+Z6Ey)_cr3&{-8 z@6qqT`958bDN@*pln>}sxcvik`Qm5zD}0!H@2^28$7Ggl+K{s}(FF6)p$+=OIr=Pt zxu4(w_IyHjz{F4KA2EjkBYi8pS>lwL3;y*feMNhrgW5?*A{NzRsC+s0nBeg?a|Dmp zKKeVILm>Hc8W9x16SV1{)4Sz9Q@TM;EY}s{8p5|>3 z_m<4^uJqIhi4?>kRwU_8KVHx=-1Xble6p(UHZJ92%W@i>mxJ*Ym;wRvS8LB9b24#T4rpxqM zxcNJM1UWG8J6Z>C;S;v{#dowQBvmJYi955aFbt|QF%K4ePvd*ViW0q6n3YVP&mrbs zj59v}J#B=vALwE2yC0~NDCA5K?!{@Af6_04;Jd4I1PuHM6@JxE^a7ax0F9YL(pk(gV* zwA@#W>5WxLV+|CU*e%Z3K+4L@Wdh&188j1H3^PXXQdnzdkA!8+@-7q6+LHPTaZWD) zwhfXMw$kOs6LHA3nac!oq#gVN$lFXu!M6(g7CuqgI#;qV-WW{x*5IigNjk)#in4#X zVkeY)ikFxBYU{93CG{|e2F88|cFu~m8qP)|KVwWJhG>T@Y#@P;t!xGiv9XEZx3OC8oi4Tr{_SEpCUS&hib5~ePj2P#a0HKs)(D<$ z51)vxu|5tZ^*D!!NdA>Q+!%=7o0I7Cg|QUq7s3WZRUcjir~2?^3PD3W675J7uR;^f zn~vd*+dH8wMn2PxI9MY2)&GiGiixBf)J)_ocfiC5Bz2C%vIv%EkDXPo8;$%bB4OG8 zM6f?WeI&aC%lfce9f8j3JU`Fx6g-as62*!YGSWoG5~zq`)8KFvD}lbz?0?{VG`kgY z`?3*mXJ2*`yxf<4pl$DmT-HvxSuBAoG3;y*xxnFDJfRI=_h)YTA_w~bHVU%v$3n*9 zsY)V|%iIN92e3XOb$s6d7T+s17v%!q|HLv+WhuHLm`Z+r02>K?Vp%2>#7`8> z%*@0YE5z4di|JRoyqaP05cZBWagtYTUaY`XV+lNP5VLM(C$h2KbG2}O*_p_`gKbG{ zoGpBIm63vq5^sZZNh}@0hO+4jsW6d30#k;un-u4S`kKl@xN8{8;qF{Ldnvml6#h1h z&DMq|vn2$YQc%(^rLg%X5@87j*9i8$g;Zn08S*OH5&{LOEJ0+wk6g}g>J>i`59(gi zASE@<0_&FZF`8v0Gn>GbjwhxQU|>4)!oBI(&2^($82Z>Sn%xsNJ;#TBp4ghnuEf!o z;_?{t8#7__&FneM^)?Y7Np;UIF7uYumwU6|Z)4a5h#AX{!lz@|YFIc9H3N-6takHw zmP)j$3^ts=A2L}UT*+j=hleMyU0R>jyoA8cNo<-eF{^Tguf|^~X68Kj*Ch6lH9oV- z7ns*8;FB!oMVH2c`^}SCx`i~FNIed?-qKrpaWbovsnf7u4Um$Jd|jT+Dnio?zs_5t zJD^?0|C?-vhe0=@g(A=}m7Ow?MoSoMn#Pjx9O~g|EZ(a7eg?UX@Xa)qfO%U{(^-EE zs*In`=EK9&SrncRIW(QkR>)>tIYvNU4oi`@WA=FtzMPI6HbW)bup&}|Z8OlJdSC`i zlrdTT=nQre^Q<12$>K!Lx;B%YfDO4U3*N|OuiC?B*DtLNShf8YXwG9t9r3fgrD(8f zJUBB-n3i5Ti=DbI)D4DVJZ`~+^69f#W>{K2I%6XJ=h{1$o5@Lwwr4ggClMI|&FKOX z!i@E2EZUHKb|2ARoXf_c5!_}X+X;~QIMfC6SsA=GpS_^nUcd&UFSdX!grJ3N3*5I5 zYyP#6-3NCqVrg(}5vxU$Vu^xNg{%;UE@sQ&k;NLW87p z7SzNTSlWgw|x*66S+LOV|_P8MEtah4y$$dQyQJ53=tC z4;#yz6MQ(si(K?yJZxNW{6sv)DdsM(K1_*OO)zUI8)y#^2dc3QT>+Oh6z*P%^3uAL zh2pgQ{!%uPnn9(3KKVPG+P4?2rky$z?VWrpFwpf;>8VT*dF8b#ik>l7n!IsJVJ zyU9h;&146O?WV)yylfzNy~x$0URDl6ma!M%i)E}H7L}sm+F8n`!&jwj9!xA_sU{L< zjfVAQI1eSjlVxlQTq z!aoUUIl7Zk=uJu_%i0fCRaT@#@3p1r62X$8xW;oDX077NKYlU7u6 zk2MCSG~k@!g;yF_f^ZJ>ymlkGVzOWOAWCY5UO7GyBX_{AojV;uk^H?UaKUh94<6mDP%3aK`e zb40s;1DlRM#vSZ+*nKCPWg;!sSQxaCEp)m?Qny%a>Ql`jD>Q9n{UfL7r45t3wZ%0) z{UE$ikE!dYHnP~@F-HCMG+~^2=v^#BAq{47o+!o2kfs2 zIAS^YsRf_#YikPO-A(LyxMwrF4b(08bH^5Rfzt0|>tW|s_DD2owZ=)#IX?8}^k1s~ zioT{|#=PlXb_&ki%Z@2zjhS2^uwyHG)WCl6K2{3-?`KP4E;#o#UQ_pLp?=*Sh`7+#Xykiq!g{QJKb?5mi=}BRFQ&XFS5jhFnjH#vKzGPoG;c zXa4;M*gstE9HfGpFXU2oUa;muW)|w@m)ls_^A9qstdK@rh7mZmgS`UVcCsS4yp!Dx zN4K*zWIi~K2lWQ~E>z66hgbzf{V$ttBA2a$;M-;v`~P!4H=4=i|EqppvBtx`KcMG> z+5K&QU~c%wAK2)S8>1Xpo&E$HuQfcu`pfXxAKANRve_&JJfW>mq8Il1lWf{GPso-4 zb^BN@9N)*X!SOU&n8ENrPqTqRX4^sG3MN9IXV~D#+zDRqvW6RCD%XJSeTHoyLm+rR zOK?U__t&9|-hhj6JnCtB2KxOGH}~%EMO5(bXDm25*HeS1R(!Y=3h1B>?%j`lIJY0Y zz2HBwCmo3*s-2Byz8Liv*OVvz#Hw86h?!g=)^3(}#sL-!wFlS~?d1db^^(3M!j>pm zXZUJ~_;Duc3!pjT6hBgl)~qdTW4J9`FBQr!J7eJSHgxQwX4h9#cxoDmlw{i_Mja2m zPOzaO22$)rrPL=Hr#J}D=DJ9$nRJr)ZrynC1e*=^H`)EL^G%!pEN`(!*!mWGSQ~hf zMJ z?>$CG?$RRN$&k^$Pko2=gInKWk(d!oK4Oumf^}%?m)6&L4He9@<=Y_TBjyfC%&zlR z=84!)>dfiW9 z1o|7ny(pCwem;%DHts__eBu;C3XG*f=Mx$pOXQfGzYP`Ju4>BNpS{A?nNAqCvN(>kYUuE@7My849m{ z#C{*vwN9G7(o=QqCG4@m?H{uNu(NFL# z{P+nQ3!^?|nWPFDKVo6Zj2fSw~p9M z@X9|}oYSp`jL_!jerl@?#(c^8D&mt{BV{Q5l6?r{E}+}a{=rt`^kqwdd;h@-?BRx6 zs^j2U4}sG=%_z$f$2!rM(CgZ5knk1D!$^Zd(q;JlS18~=e#M$i4H<5p>|}O$djwDE6)$#dm+Q7$cywpbfBw|YPeF@= z=V-q;cm^(TJm`eUaN8(e50^*rX)yLCzEAt|Cf=9Oa2>ri2^{JCtzjhHev^bd@o4my zOT?#;P%4qJ_B1JRmfv4D$MB9NQlVhxE`AsVW`^=qbEZAZ9tcSt4dt6cQgvgh2hOpx zx|`{Rg}r$j_5$UKLQ)uiUym{20@pqo{u9oVae<2>f{oSNZw6lkPr~g&z%ZyDOZxA_ zJsVMI@e5lRJTj3r_Aziiir?<~m2)dKLTxlpfj!ZDtfOmaMt`2oQ!$J^u?A0VdEr!l9)W-2<%{Gv$BsftVQ0TrU#8VgXgZNaa9mJ=lBpMM}0b{t!d+oaE3~U>SPs+K) zDF^&EU6p_t3YQTrIMIj~Uq{1}61nmGMX)6BX<=hf1P-7K#*xh( z%!j~+!F&q5Ihbc-C^jaM2SdUT{x$SY@<$bNK_U4R<4e2*UKxi1 zWE#(xh0mYvtFHHz;2z;TJf%`n<5}q`pX~J(!X4vLY4(ptO&^fK$8?`kZq48rrZzh= zVMZqJk0&9jGx-MiA(L-|yC(1~?X3xXJ)z_>uK1|2F%}8cllZ+R66%-$N){i6XCUf? z7Z?rsS$rhilf@_4LvnHHiK3=kxj6VZiw{!B6*Oj4vrgsz>vsyvy^b8tPMtOq<>KMKa-PiW#KKZfYV*IiO_u;+vv zCP@08={%yheh5fEVvM!J@g)(bO*X;H(|I%_R~1r^W^WRFIi1f_NGC2eDNM=XTX0v_ zkp;>O{!a%k==8Ix21_!*I+Gv8FRZC#4TX1R@+FX(%Uj`}x%?;`%Hyrt%31s%ZYGa( zOqOEB)U2<-Q7AUzN6+S|DHK!mC z$`|lSRyR5gdPGfpWa`KQK0RVmF2;~>k?tv<<*mfMCBwQDI0|9FLVml5fs|t4RG1t& zTlK<$g*?;lp69PwUWK1l686Fezbxc)V9p|55v_mt!y_yTZc`fmG$I?g82Mbpr}jz| z-v-e^vi@DOTuq@_NoXHpj^>=kr?7x&O=G)FfKt?O2xsWw-K`WJZ%KI5I^dM{tK5jmkF1OfjFYz->qpxJD)8 zGDU>BydqYP{8Li5JAONQ-i${_FnZoQHL$F@7Gzb9t9Uf#^m0Bid`xylMSY#vI}-;D z^raKl?!}WH<;c-%QFa;6!8|;gZ3!JSv&L77`>5sDmTD&DxE5TA20qBh!Pqr?q&R3( zw}$^6=B?#Z?RxZ1U$vU0!wxvOmJfvY*YaEJ-bPp z1aEbKbv^H63+b9BW#@5Z+y2vko>xvV;q^^#jq-)qsS6o*v$U2ISQ(d}PR2C#_p` z)e*0cr3ka!%ThBn%RT%Ufj95vb78<%KGc!zj75`aOdy+S4lLQq`@rp31J7*bOTlp; z@1rH&#~&bYDuz``~-oUfZqns0UEOKhq(_nJj|!V+Yj?+wGGXj%Gy1T^4D=Yd5sk=rwd|tqHfpi#JTMGoxBPLJ8z#)QkII;i<(v&h2<1 zc^4|{yj^^1aB6XVjX2m;gfne%ndEbtUWXrd@d5C`E^fEQSK?lHR~7uQi!TxbOU2Ji z;Fu|uX>X2gz%@3Q2kT*lAE96 z1LZ3gXnhJfAGw#0AW0AH!;OZ;?{F)g7lQJ4crl!MhY!@t`#QHd_1Bu_#NE`owCzq9 zx{qhWs(n0D-tB~!_VLo_#8Pivk(kcVm!e&nQ_Fao#}Qce46a$4pW%ZB zUv*f^y_L=ur!)z-1!@|KmU+EJB}N>XTI*NU1px4V(@4;MDiZ0bT}!5Arl|Ql{h}&xaQe@>p?F=F@|?8gjPa)N0$0vhhF*Lcia_ zW8pt7+)ZMk@mUlx|FfLI#AnejYj~C?!IRIT4xD+G7r9c=6EkutiZH5;XJBCRbI972 z&++^qls@h4=Xin)R}b;b(01n-9BdJukn@TYB7Xle0WkAP;it_#+cZyqd3p@I>!5lgy&S$pcI9;#fcLnS0|lu!qj6tu2-5UK^J^k zk)D<%opZv5W7w>vnsCF`S9S>sv7T#q6&n=nHTN5%k%;~ z_BxM-y4SfYIHOChuLD5y>)5vwuj6WvY2Urh&&%+^U-(=t`3;^(ps)=slM8NdL-qco z4Zr){*~V{&)h7_;nG<{feiH7~3I2EDj2GgCP2*d@tl^Rv?X|afUXUZ%DAK>AT8ke_ zj6KD#$firs{u-LT;q822bgbby;E*PbF>H^>?JgG|1ee-i$Z75li3;SknYzUGxY`Cw zPV-!Atbo-6dI)>uG>>!|$04pm!k4G{$U)9xoT|dZG1n5^0x9sda^rkPxK2ZF@4Aj* zfMfYPXo9+_*jQIL6+42bUy}CmsUgW;JilKT2pyTwg66n3!kzD;nLqU|YV9_7aUU=H zZQVPr3gt63YvZ3rJ%*O|(ET^c(wbe``|qJW8IXviivx4eH47eYn62HeL#}W$W^Lu0{JS From f59b4ce449238442f35a2076a61d61c493e6f5fe Mon Sep 17 00:00:00 2001 From: Alexandru Vasile Date: Thu, 4 Sep 2025 21:14:06 +0000 Subject: [PATCH 55/67] revive: Force Subxt to use version 15 for metadata fetching subxt metadata --url ws://localhost:9944 --version 15 > revive_chain.metadata Signed-off-by: Alexandru Vasile --- .../frame/revive/rpc/revive_chain.metadata | Bin 711710 -> 702006 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/substrate/frame/revive/rpc/revive_chain.metadata b/substrate/frame/revive/rpc/revive_chain.metadata index 2a7bdae7e1d5244cfac4458528b1aed1cdadc9ec..c1e3f18698657f1a3cd6dd8e3310dd99dd56607a 100644 GIT binary patch delta 21114 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 o*wqG3NcbHbX&`8?y316&h($ delta 31297 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%0DaViIVDenCv;d=$AD#i!nC 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 F{|Px_Eh_*3 From 975db1ec99b15ebf605663cf40ee497616bd0885 Mon Sep 17 00:00:00 2001 From: Alexandru Vasile Date: Thu, 4 Sep 2025 21:21:41 +0000 Subject: [PATCH 56/67] rpc: Substitute transaction signed object Signed-off-by: Alexandru Vasile --- substrate/frame/revive/rpc/src/receipt_extractor.rs | 6 +++--- substrate/frame/revive/rpc/src/subxt_client.rs | 4 ++++ 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/substrate/frame/revive/rpc/src/receipt_extractor.rs b/substrate/frame/revive/rpc/src/receipt_extractor.rs index 0e5273d4f7501..c6ee9abe0e28a 100644 --- a/substrate/frame/revive/rpc/src/receipt_extractor.rs +++ b/substrate/frame/revive/rpc/src/receipt_extractor.rs @@ -112,10 +112,10 @@ impl ReceiptExtractor { .inspect_err( |err| log::debug!(target: LOG_TARGET, "TransactionFeePaid not found in events for block {block_number}\n{err:?}") )?; - let transaction_hash = H256(keccak_256(&call.payload)); - let signed_tx = - TransactionSigned::decode(&call.payload).map_err(|_| ClientError::TxDecodingFailed)?; + let signed_tx = call.signed_transaction; + let transaction_hash = H256(keccak_256(&signed_tx.signed_payload())); + let from = signed_tx.recover_eth_address().map_err(|_| { log::error!(target: LOG_TARGET, "Failed to recover eth address from signed tx"); ClientError::RecoverEthAddressFailed diff --git a/substrate/frame/revive/rpc/src/subxt_client.rs b/substrate/frame/revive/rpc/src/subxt_client.rs index 08d9343797e31..f82635f206823 100644 --- a/substrate/frame/revive/rpc/src/subxt_client.rs +++ b/substrate/frame/revive/rpc/src/subxt_client.rs @@ -47,6 +47,10 @@ pub use subxt::config::PolkadotConfig as SrcChainConfig; path = "pallet_revive::evm::api::rpc_types_gen::GenericTransaction", with = "::subxt::utils::Static<::pallet_revive::evm::GenericTransaction>" ), + substitute_type( + path = "pallet_revive::evm::api::rpc_types_gen::TransactionSigned", + with = "::subxt::utils::Static<::pallet_revive::evm::TransactionSigned>" + ), substitute_type( path = "pallet_revive::primitives::EthTransactInfo", with = "::subxt::utils::Static<::pallet_revive::EthTransactInfo>" From 3867acd1d0de6b231a2198c748add5a4c7cf8ea3 Mon Sep 17 00:00:00 2001 From: Alexandru Vasile Date: Thu, 4 Sep 2025 21:51:30 +0000 Subject: [PATCH 57/67] revive/rpc: Adjust send_raw_transaction to use signed transactions Signed-off-by: Alexandru Vasile --- substrate/frame/revive/rpc/src/apis/execution_apis.rs | 2 +- substrate/frame/revive/rpc/src/example.rs | 4 +--- substrate/frame/revive/rpc/src/lib.rs | 10 +++++----- substrate/frame/revive/rpc/src/receipt_extractor.rs | 4 ++-- 4 files changed, 9 insertions(+), 11 deletions(-) diff --git a/substrate/frame/revive/rpc/src/apis/execution_apis.rs b/substrate/frame/revive/rpc/src/apis/execution_apis.rs index 9ef03a8334698..b762cfcd4d3c6 100644 --- a/substrate/frame/revive/rpc/src/apis/execution_apis.rs +++ b/substrate/frame/revive/rpc/src/apis/execution_apis.rs @@ -153,7 +153,7 @@ pub trait EthRpc { /// Submits a raw transaction. For EIP-4844 transactions, the raw form must be the network form. /// This means it includes the blobs, KZG commitments, and KZG proofs. #[method(name = "eth_sendRawTransaction")] - async fn send_raw_transaction(&self, transaction: Bytes) -> RpcResult; + async fn send_raw_transaction(&self, transaction: TransactionSigned) -> RpcResult; /// Signs and submits a transaction. #[method(name = "eth_sendTransaction")] diff --git a/substrate/frame/revive/rpc/src/example.rs b/substrate/frame/revive/rpc/src/example.rs index f97003b65816e..7fcb31ed300fe 100644 --- a/substrate/frame/revive/rpc/src/example.rs +++ b/substrate/frame/revive/rpc/src/example.rs @@ -175,10 +175,8 @@ impl TransactionBuilder { mutate(&mut unsigned_tx); let signed_tx = signer.sign_transaction(unsigned_tx.into()); - let bytes = signed_tx.signed_payload(); - let hash = client - .send_raw_transaction(bytes.into()) + .send_raw_transaction(signed_tx.clone()) .await .with_context(|| "send_raw_transaction failed")?; diff --git a/substrate/frame/revive/rpc/src/lib.rs b/substrate/frame/revive/rpc/src/lib.rs index 3cdb55f6f081a..01bc89a03b66b 100644 --- a/substrate/frame/revive/rpc/src/lib.rs +++ b/substrate/frame/revive/rpc/src/lib.rs @@ -161,9 +161,9 @@ impl EthRpcServer for EthRpcServerImpl { Ok(dry_run.data.into()) } - async fn send_raw_transaction(&self, transaction: Bytes) -> RpcResult { - let hash = H256(keccak_256(&transaction.0)); - let call = subxt_client::tx().revive().eth_transact(transaction.0); + async fn send_raw_transaction(&self, transaction: TransactionSigned) -> RpcResult { + let hash = H256(keccak_256(&transaction.signed_payload())); + let call = subxt_client::tx().revive().eth_transact(subxt::utils::Static(transaction)); self.client.submit(call).await.map_err(|err| { log::debug!(target: LOG_TARGET, "submit call failed: {err:?}"); err @@ -205,8 +205,8 @@ impl EthRpcServer for EthRpcServerImpl { } let tx = transaction.try_into_unsigned().map_err(|_| EthRpcError::InvalidTransaction)?; - let payload = account.sign_transaction(tx).signed_payload(); - self.send_raw_transaction(Bytes(payload)).await + let payload = account.sign_transaction(tx); + self.send_raw_transaction(payload).await } async fn get_block_by_hash( diff --git a/substrate/frame/revive/rpc/src/receipt_extractor.rs b/substrate/frame/revive/rpc/src/receipt_extractor.rs index c6ee9abe0e28a..e542c65e175e5 100644 --- a/substrate/frame/revive/rpc/src/receipt_extractor.rs +++ b/substrate/frame/revive/rpc/src/receipt_extractor.rs @@ -123,7 +123,7 @@ impl ReceiptExtractor { let base_gas_price = (self.fetch_gas_price)(block_hash).await?; let tx_info = - GenericTransaction::from_signed(signed_tx.clone(), base_gas_price, Some(from)); + GenericTransaction::from_signed(signed_tx.0.clone(), base_gas_price, Some(from)); let gas_price = tx_info.gas_price.unwrap_or_default(); let gas_used = U256::from(tx_fees.tip.saturating_add(tx_fees.actual_fee)) .saturating_mul(self.native_to_eth_ratio.into()) @@ -178,7 +178,7 @@ impl ReceiptExtractor { transaction_index.into(), tx_info.r#type.unwrap_or_default(), ); - Ok((signed_tx, receipt)) + Ok((signed_tx.0, receipt)) } /// Extract receipts from block. From b536660e8112b6dfa115350b61ba40ac9dfa1de0 Mon Sep 17 00:00:00 2001 From: Alexandru Vasile Date: Thu, 4 Sep 2025 22:43:22 +0000 Subject: [PATCH 58/67] revive: Fix cargo formatting Signed-off-by: Alexandru Vasile --- substrate/frame/revive/Cargo.toml | 2 -- 1 file changed, 2 deletions(-) diff --git a/substrate/frame/revive/Cargo.toml b/substrate/frame/revive/Cargo.toml index 8eb7cf0b67fd5..f40fb0b94d0df 100644 --- a/substrate/frame/revive/Cargo.toml +++ b/substrate/frame/revive/Cargo.toml @@ -20,8 +20,6 @@ targets = ["x86_64-unknown-linux-gnu"] alloy-consensus = { workspace = true, default-features = false } alloy-core = { workspace = true, features = ["sol-types", "rlp"] } alloy-rlp = { version = "0.3.12", default-features = false } - - codec = { features = ["derive", "max-encoded-len"], workspace = true } derive_more = { workspace = true, features = ["from", "try_into"] } environmental = { workspace = true } From b43568abe589d7efa6fe59957caed38737aa6052 Mon Sep 17 00:00:00 2001 From: Alexandru Vasile Date: Fri, 5 Sep 2025 17:30:37 +0000 Subject: [PATCH 59/67] revive: Add manual RLP encoding for logs Signed-off-by: Alexandru Vasile --- substrate/frame/revive/src/evm/block_hash.rs | 50 ++++++++++++-------- substrate/frame/revive/src/lib.rs | 4 +- 2 files changed, 33 insertions(+), 21 deletions(-) diff --git a/substrate/frame/revive/src/evm/block_hash.rs b/substrate/frame/revive/src/evm/block_hash.rs index 233610322f359..821a555629b93 100644 --- a/substrate/frame/revive/src/evm/block_hash.rs +++ b/substrate/frame/revive/src/evm/block_hash.rs @@ -23,8 +23,7 @@ use crate::evm::{ use alloc::{vec, vec::Vec}; use alloy_consensus::private::alloy_trie::{HashBuilder, Nibbles}; -use alloy_core::primitives::{bytes::BufMut, Bloom, FixedBytes, Log, B256}; -use alloy_rlp::Encodable; +use alloy_core::primitives::{bytes::BufMut, Bloom, FixedBytes, B256}; use codec::{Decode, Encode}; use frame_support::weights::Weight; use scale_info::TypeInfo; @@ -365,14 +364,31 @@ impl AccumulateReceipt { /// Add the log into the accumulated receipt. /// /// This accrues the log bloom and keeps track of the RLP encoding of the log. - pub fn add_log(&mut self, log: EventLog) { - let log = Log::new_unchecked( - log.contract.0.into(), - log.topics.into_iter().map(|h| FixedBytes::from(h.0)).collect::>(), - log.data.into(), - ); - self.bloom.accrue_log(&log); - log.encode(&mut self.encoding); + pub fn add_log(&mut self, contract: H160, data: &[u8], topics: &[H256]) { + // Contract address is using 20 bytes, topics are using 32 bytes each. + let payload_length = 20 + data.len() + topics.len() * 32; + alloy_rlp::Header { list: true, payload_length }.encode(&mut self.encoding); + + alloy_rlp::Encodable::encode(&contract.0, &mut self.encoding); + // Encode the topics as a list + alloy_rlp::Header { list: true, payload_length: topics.len() * 32 } + .encode(&mut self.encoding); + for topic in topics { + alloy_rlp::Encodable::encode(&topic.0, &mut self.encoding); + } + alloy_rlp::Encodable::encode(&data, &mut self.encoding); + + // self.address.encode(out); + // self.data.topics.encode(out); + // self.data.data.encode(out); + + // let log = Log::new_unchecked( + // log.contract.0.into(), + // log.topics.into_iter().map(|h| FixedBytes::from(h.0)).collect::>(), + // log.data.into(), + // ); + // self.bloom.accrue_log(&log); + // log.encode(&mut self.encoding); } /// Finalize the accumulated receipt and return the RLP encoded bytes. @@ -726,14 +742,10 @@ mod test { panic!("Transaction and receipt index do not match"); } - let logs: Vec = receipt_info + let logs: Vec<_> = receipt_info .logs .into_iter() - .map(|log| EventLog { - contract: log.address.into(), - data: log.data.unwrap_or_default().0, - topics: log.topics, - }) + .map(|log| (log.address, log.data.unwrap_or_default().0, log.topics)) .collect(); ( @@ -751,10 +763,10 @@ mod test { let mut log_size = 0; let mut accumulate_receipt = AccumulateReceipt::new(); - for log in &logs { - let current_size = log.data.len() + log.topics.len() * 32 + 20; + for (address, data, topics) in &logs { + let current_size = data.len() + topics.len() * 32 + 20; log_size += current_size; - accumulate_receipt.add_log(log.clone()); + accumulate_receipt.add_log(address, data, topics); } incremental_block.process_transaction( diff --git a/substrate/frame/revive/src/lib.rs b/substrate/frame/revive/src/lib.rs index 67ec4e3cad965..b4c09260ee781 100644 --- a/substrate/frame/revive/src/lib.rs +++ b/substrate/frame/revive/src/lib.rs @@ -130,7 +130,7 @@ const SENTINEL: u32 = u32::MAX; const LOG_TARGET: &str = "runtime::revive"; pub(crate) mod eth_block_storage { - use crate::{evm::block_hash::AccumulateReceipt, EventLog, H160, H256}; + use crate::{evm::block_hash::AccumulateReceipt, H160, H256}; use alloc::vec::Vec; use alloy_core::primitives::Bloom; use environmental::environmental; @@ -150,7 +150,7 @@ pub(crate) mod eth_block_storage { /// This method does nothing if called from outside of the ethereum context. pub fn capture_ethereum_log(contract: H160, data: &[u8], topics: &[H256]) { receipt::with(|receipt| { - receipt.add_log(EventLog { contract, data: data.to_vec(), topics: topics.to_vec() }); + receipt.add_log(contract, data, topics); }); } From 7ca4f68aa3fd3bb2f218c67ff995d23bcb48cac7 Mon Sep 17 00:00:00 2001 From: Alexandru Vasile Date: Fri, 5 Sep 2025 20:17:48 +0000 Subject: [PATCH 60/67] revive: Implement manual LogsBloom and log encoding Signed-off-by: Alexandru Vasile --- substrate/frame/revive/src/evm/block_hash.rs | 118 ++++++++++++++----- substrate/frame/revive/src/exec.rs | 2 +- substrate/frame/revive/src/lib.rs | 10 +- 3 files changed, 95 insertions(+), 35 deletions(-) diff --git a/substrate/frame/revive/src/evm/block_hash.rs b/substrate/frame/revive/src/evm/block_hash.rs index 821a555629b93..69df89b028317 100644 --- a/substrate/frame/revive/src/evm/block_hash.rs +++ b/substrate/frame/revive/src/evm/block_hash.rs @@ -23,7 +23,7 @@ use crate::evm::{ use alloc::{vec, vec::Vec}; use alloy_consensus::private::alloy_trie::{HashBuilder, Nibbles}; -use alloy_core::primitives::{bytes::BufMut, Bloom, FixedBytes, B256}; +use alloy_core::primitives::{bytes::BufMut, B256}; use codec::{Decode, Encode}; use frame_support::weights::Weight; use scale_info::TypeInfo; @@ -352,49 +352,107 @@ pub struct AccumulateReceipt { /// The RLP bytes where the logs are accumulated. pub encoding: Vec, /// The bloom filter collected from accumulating logs. - pub bloom: Bloom, + pub bloom: LogsBloom, +} + +/// Bloom log filter compatible with Ethereum implementation. +/// +/// This structure avoids conversions between substrate to alloy types +/// to optimally compute the bloom. +#[derive(Clone, Copy)] +pub struct LogsBloom { + /// The bloom bytes used to store logs. + pub bloom: [u8; BLOOM_SIZE_BYTES], +} + +impl Default for LogsBloom { + fn default() -> Self { + Self::new() + } +} + +impl LogsBloom { + /// Constructs a new [`LogsBloom`]. + pub const fn new() -> Self { + Self { bloom: [0u8; BLOOM_SIZE_BYTES] } + } + + /// Ingests a raw log (event) into the bloom filter. + pub fn accrue_log(&mut self, contract: &H160, topics: &[H256]) { + Self::m3_2048(&mut self.bloom, contract.as_ref()); + + for topic in topics { + Self::m3_2048(&mut self.bloom, topic.as_ref()); + } + } + + /// Accrues the input into the bloom filter. + pub fn accrue_bloom(&mut self, other: &Self) { + for i in 0..BLOOM_SIZE_BYTES { + self.bloom[i] |= other.bloom[i]; + } + } + + /// Specialized Bloom filter that sets three bits out of 2048, given an + /// arbitrary byte sequence. + /// + /// See Section 4.3.1 "Transaction Receipt" of the + /// [Ethereum Yellow Paper][ref] (page 6). + /// + /// [ref]: https://ethereum.github.io/yellowpaper/paper.pdf + fn m3_2048(bloom: &mut [u8; 256], bytes: &[u8]) { + let hash = keccak_256(bytes); + for i in [0, 2, 4] { + let bit = (hash[i + 1] as usize + ((hash[i] as usize) << 8)) & 0x7FF; + bloom[256 - 1 - bit / 8] |= 1 << (bit % 8); + } + } } impl AccumulateReceipt { /// Constructs a new [`AccumulateReceipt`]. pub const fn new() -> Self { - Self { encoding: Vec::new(), bloom: Bloom(FixedBytes::ZERO) } + Self { encoding: Vec::new(), bloom: LogsBloom::new() } } /// Add the log into the accumulated receipt. /// /// This accrues the log bloom and keeps track of the RLP encoding of the log. - pub fn add_log(&mut self, contract: H160, data: &[u8], topics: &[H256]) { - // Contract address is using 20 bytes, topics are using 32 bytes each. - let payload_length = 20 + data.len() + topics.len() * 32; - alloy_rlp::Header { list: true, payload_length }.encode(&mut self.encoding); + pub fn add_log(&mut self, contract: &H160, data: &[u8], topics: &[H256]) { + // Accrue the log bloom. + self.bloom.accrue_log(contract, topics); + + // Determine the length of the log RLP encoding. + let mut topics_len = 0; + for topic in topics { + // Topics are represented by 32 bytes. However, their encoding + // can produce different lengths depending on their value. + topics_len += alloy_rlp::Encodable::length(&topic.0); + } + // Account for the size of the list header. + let topics_list_header_length = topics_len + alloy_rlp::length_of_length(topics_len); + // Compute the total payload length of the log. + let payload_length = alloy_rlp::Encodable::length(&contract.0) + + alloy_rlp::Encodable::length(&data) + + topics_list_header_length; + + let header = alloy_rlp::Header { list: true, payload_length }; + + header.encode(&mut self.encoding); alloy_rlp::Encodable::encode(&contract.0, &mut self.encoding); // Encode the topics as a list - alloy_rlp::Header { list: true, payload_length: topics.len() * 32 } - .encode(&mut self.encoding); + alloy_rlp::Header { list: true, payload_length: topics_len }.encode(&mut self.encoding); for topic in topics { alloy_rlp::Encodable::encode(&topic.0, &mut self.encoding); } alloy_rlp::Encodable::encode(&data, &mut self.encoding); - - // self.address.encode(out); - // self.data.topics.encode(out); - // self.data.data.encode(out); - - // let log = Log::new_unchecked( - // log.contract.0.into(), - // log.topics.into_iter().map(|h| FixedBytes::from(h.0)).collect::>(), - // log.data.into(), - // ); - // self.bloom.accrue_log(&log); - // log.encode(&mut self.encoding); } /// Finalize the accumulated receipt and return the RLP encoded bytes. pub fn encoded_receipt( encoded_logs: Vec, - bloom: Bloom, + bloom: LogsBloom, status: bool, gas: u64, transaction_type: Vec, @@ -406,7 +464,7 @@ impl AccumulateReceipt { list: true, payload_length: alloy_rlp::Encodable::length(&status) + alloy_rlp::Encodable::length(&gas) + - alloy_rlp::Encodable::length(&bloom.0) + + alloy_rlp::Encodable::length(&bloom.bloom) + list_header_length, }; @@ -414,7 +472,7 @@ impl AccumulateReceipt { header.encode(&mut encoded); alloy_rlp::Encodable::encode(&status, &mut encoded); alloy_rlp::Encodable::encode(&gas, &mut encoded); - alloy_rlp::Encodable::encode(&bloom.0, &mut encoded); + alloy_rlp::Encodable::encode(&bloom.bloom, &mut encoded); let logs_header = alloy_rlp::Header { list: true, payload_length: logs_length }; logs_header.encode(&mut encoded); @@ -462,7 +520,7 @@ pub struct EthereumBlockBuilder { gas_used: U256, pub(crate) tx_hashes: Vec, - logs_bloom: Bloom, + logs_bloom: LogsBloom, gas_info: Vec, } @@ -474,7 +532,7 @@ impl EthereumBlockBuilder { receipts_root_builder: None, gas_used: U256::zero(), tx_hashes: Vec::new(), - logs_bloom: Bloom(FixedBytes::ZERO), + logs_bloom: LogsBloom::new(), gas_info: Vec::new(), } } @@ -486,7 +544,7 @@ impl EthereumBlockBuilder { receipts_root_builder: self.receipts_root_builder.map(|b| b.to_ir()), gas_used: self.gas_used, tx_hashes: self.tx_hashes, - logs_bloom: (*self.logs_bloom.data()).into(), + logs_bloom: self.logs_bloom.bloom, gas_info: self.gas_info, } } @@ -502,7 +560,7 @@ impl EthereumBlockBuilder { .map(|b| IncrementalHashBuilder::from_ir(b)), gas_used: ir.gas_used, tx_hashes: ir.tx_hashes, - logs_bloom: Bloom(FixedBytes::from_slice(&ir.logs_bloom)), + logs_bloom: LogsBloom { bloom: ir.logs_bloom }, gas_info: ir.gas_info, } } @@ -519,7 +577,7 @@ impl EthereumBlockBuilder { success: bool, gas_used: Weight, encoded_logs: Vec, - receipt_bloom: Bloom, + receipt_bloom: LogsBloom, ) { let tx_hash = H256(keccak_256(&transaction_encoded)); self.tx_hashes.push(tx_hash); @@ -573,7 +631,7 @@ impl EthereumBlockBuilder { gas_used: self.gas_used, - logs_bloom: (*self.logs_bloom.data()).into(), + logs_bloom: self.logs_bloom.bloom.into(), transactions: HashesOrTransactionInfos::Hashes(tx_hashes), ..Default::default() diff --git a/substrate/frame/revive/src/exec.rs b/substrate/frame/revive/src/exec.rs index 9fde661bcb384..e8893378e9845 100644 --- a/substrate/frame/revive/src/exec.rs +++ b/substrate/frame/revive/src/exec.rs @@ -2030,7 +2030,7 @@ where }); // Capture the log only if it is generated by an Ethereum transaction. - eth_block_storage::capture_ethereum_log(contract, &data, &topics); + eth_block_storage::capture_ethereum_log(&contract, &data, &topics); Contracts::::deposit_event(Event::ContractEmitted { contract, data, topics }); } diff --git a/substrate/frame/revive/src/lib.rs b/substrate/frame/revive/src/lib.rs index b4c09260ee781..9c1e462afc656 100644 --- a/substrate/frame/revive/src/lib.rs +++ b/substrate/frame/revive/src/lib.rs @@ -130,9 +130,11 @@ const SENTINEL: u32 = u32::MAX; const LOG_TARGET: &str = "runtime::revive"; pub(crate) mod eth_block_storage { - use crate::{evm::block_hash::AccumulateReceipt, H160, H256}; + use crate::{ + evm::block_hash::{AccumulateReceipt, LogsBloom}, + H160, H256, + }; use alloc::vec::Vec; - use alloy_core::primitives::Bloom; use environmental::environmental; /// The maximum number of block hashes to keep in the history. @@ -148,7 +150,7 @@ pub(crate) mod eth_block_storage { /// Capture the Ethereum log for the current transaction. /// /// This method does nothing if called from outside of the ethereum context. - pub fn capture_ethereum_log(contract: H160, data: &[u8], topics: &[H256]) { + pub fn capture_ethereum_log(contract: &H160, data: &[u8], topics: &[H256]) { receipt::with(|receipt| { receipt.add_log(contract, data, topics); }); @@ -158,7 +160,7 @@ pub(crate) mod eth_block_storage { /// /// This method returns `None` if and only if the function is called /// from outside of the ethereum context. - pub fn get_receipt_details() -> Option<(Vec, Bloom)> { + pub fn get_receipt_details() -> Option<(Vec, LogsBloom)> { receipt::with(|receipt| { let encoding = core::mem::take(&mut receipt.encoding); let bloom = core::mem::take(&mut receipt.bloom); From f7da8682b7b693da584a0761aefd1676fe3c68db Mon Sep 17 00:00:00 2001 From: Alexandru Vasile Date: Fri, 5 Sep 2025 20:22:54 +0000 Subject: [PATCH 61/67] revive: Remove event log struct Signed-off-by: Alexandru Vasile --- substrate/frame/revive/src/evm/block_hash.rs | 16 ---------------- substrate/frame/revive/src/lib.rs | 2 +- substrate/frame/revive/src/tests/block_hash.rs | 14 +++++--------- 3 files changed, 6 insertions(+), 26 deletions(-) diff --git a/substrate/frame/revive/src/evm/block_hash.rs b/substrate/frame/revive/src/evm/block_hash.rs index 69df89b028317..6e74aa87ea1d4 100644 --- a/substrate/frame/revive/src/evm/block_hash.rs +++ b/substrate/frame/revive/src/evm/block_hash.rs @@ -29,20 +29,6 @@ use frame_support::weights::Weight; use scale_info::TypeInfo; use sp_core::{keccak_256, H160, H256, U256}; -/// The log emitted by executing the ethereum transaction. -/// -/// This is needed to compute the receipt bloom hash. -#[derive(Encode, Decode, TypeInfo, Clone, Debug)] -pub struct EventLog { - /// The contract that emitted the event. - pub contract: H160, - /// Data supplied by the contract. Metadata generated during contract compilation - /// is needed to decode it. - pub data: Vec, - /// A list of topics used to index the event. - pub topics: Vec, -} - /// Details needed to reconstruct the receipt info in the RPC /// layer without losing accuracy. #[derive(Encode, Decode, TypeInfo, Clone, Debug, PartialEq, Eq)] @@ -431,14 +417,12 @@ impl AccumulateReceipt { } // Account for the size of the list header. let topics_list_header_length = topics_len + alloy_rlp::length_of_length(topics_len); - // Compute the total payload length of the log. let payload_length = alloy_rlp::Encodable::length(&contract.0) + alloy_rlp::Encodable::length(&data) + topics_list_header_length; let header = alloy_rlp::Header { list: true, payload_length }; - header.encode(&mut self.encoding); alloy_rlp::Encodable::encode(&contract.0, &mut self.encoding); // Encode the topics as a list diff --git a/substrate/frame/revive/src/lib.rs b/substrate/frame/revive/src/lib.rs index 9c1e462afc656..6497371796fa3 100644 --- a/substrate/frame/revive/src/lib.rs +++ b/substrate/frame/revive/src/lib.rs @@ -45,7 +45,7 @@ pub mod weights; use crate::{ evm::{ - block_hash::{EthereumBlockBuilder, EthereumBlockBuilderIR, EventLog, ReceiptGasInfo}, + block_hash::{EthereumBlockBuilder, EthereumBlockBuilderIR, ReceiptGasInfo}, runtime::GAS_PRICE, CallTracer, GasEncoder, GenericTransaction, PrestateTracer, Trace, Tracer, TracerType, TransactionSigned, TYPE_EIP1559, diff --git a/substrate/frame/revive/src/tests/block_hash.rs b/substrate/frame/revive/src/tests/block_hash.rs index cb486346cca0e..a5ac940a9e994 100644 --- a/substrate/frame/revive/src/tests/block_hash.rs +++ b/substrate/frame/revive/src/tests/block_hash.rs @@ -18,11 +18,11 @@ //! The pallet-revive ETH block hash specific integration test suite. use crate::{ - evm::{block_hash::EventLog, Block}, + evm::Block, test_utils::{builder::Contract, deposit_limit, ALICE}, tests::{assert_ok, builder, Contracts, ExtBuilder, RuntimeOrigin, Test}, BalanceWithDust, Code, Config, EthBlock, EthBlockBuilderIR, EthereumBlock, - EthereumBlockBuilder, Pallet, ReceiptGasInfo, ReceiptInfoData, TransactionSigned, H256, + EthereumBlockBuilder, Pallet, ReceiptGasInfo, ReceiptInfoData, TransactionSigned, }; use frame_support::traits::{fungible::Mutate, Hooks}; @@ -143,14 +143,10 @@ fn events_are_captured() { let expected_tx_root = Block::compute_trie_root(&expected_payloads); const EXPECTED_GAS: u64 = 6345452; - // Convert the EventLog into the AlloyLog to ensure - // the default address remains stable. - let event_log = - EventLog { data: vec![1, 2, 3, 4], topics: vec![H256::repeat_byte(42)], contract }; let logs = vec![AlloyLog::new_unchecked( - event_log.contract.0.into(), - event_log.topics.into_iter().map(|h| FixedBytes::from(h.0)).collect::>(), - event_log.data.into(), + contract.0.into(), + vec![FixedBytes::from([42u8; 32])], + vec![1, 2, 3, 4].into(), )]; let receipt = alloy_consensus::Receipt { status: true.into(), From dcd9341a630378af2b306f2b0daf6c8fdb092a78 Mon Sep 17 00:00:00 2001 From: Alexandru Vasile Date: Fri, 5 Sep 2025 22:38:37 +0000 Subject: [PATCH 62/67] revive: Ensure dry run uses proper gas to report usage Signed-off-by: Alexandru Vasile --- substrate/frame/revive/src/lib.rs | 24 +++++++++++++++++++----- 1 file changed, 19 insertions(+), 5 deletions(-) diff --git a/substrate/frame/revive/src/lib.rs b/substrate/frame/revive/src/lib.rs index 6497371796fa3..d87df9edd8e77 100644 --- a/substrate/frame/revive/src/lib.rs +++ b/substrate/frame/revive/src/lib.rs @@ -1415,6 +1415,13 @@ where tx.r#type = Some(TYPE_EIP1559.into()); } + let Ok(unsigned) = tx.clone().try_into_unsigned() else { + return Err(EthTransactError::Message("Failed to convert to unsigned tx".into())); + }; + const DUMMY_SIGNATURE: [u8; 65] = [1u8; 65]; + let dummy_signed = unsigned.with_signature(DUMMY_SIGNATURE); + let encoded_dummy_payload = dummy_signed.signed_payload(); + // Convert the value to the native balance type. let value = tx.value.unwrap_or_default(); let input = tx.input.clone().to_vec(); @@ -1506,7 +1513,7 @@ where // Since this is a dry run, we don't need to pass the signed transaction // payload. Instead, use a dummy value. The signed transaction // will be provided by the user when the tx is submitted. - transaction_encoded: TransactionSigned::default().signed_payload(), + transaction_encoded: encoded_dummy_payload, } .into(); (result, dispatch_call) @@ -1578,7 +1585,7 @@ where // Since this is a dry run, we don't need to pass the signed transaction // payload. Instead, use a dummy value. The signed transaction // will be provided by the user when the tx is submitted. - transaction_encoded: TransactionSigned::default().signed_payload(), + transaction_encoded: encoded_dummy_payload, } .into(); (result, dispatch_call) @@ -1589,8 +1596,7 @@ where return Err(EthTransactError::Message("Invalid transaction".into())); } - let eth_transact_call = - crate::Call::::eth_transact { signed_transaction: TransactionSigned::default() }; + let eth_transact_call = crate::Call::::eth_transact { signed_transaction: dummy_signed }; let fee = tx_fee(eth_transact_call.into(), dispatch_call); let raw_gas = Self::evm_fee_to_gas(fee); let eth_gas = @@ -1668,12 +1674,20 @@ where ::RuntimeCall: Dispatchable, { + use sp_runtime::SaturatedConversion; + let max_block_weight = T::BlockWeights::get() .get(DispatchClass::Normal) .max_total .unwrap_or_else(|| T::BlockWeights::get().max_block); - Self::evm_gas_from_weight(max_block_weight) + // Length to fee conversion of 5 MiB tx size: + // pallet_transaction_payment::Pallet::::length_to_fee(5 * 1024 * 1024); + let length_fee: u64 = 52428800000000000 + 6 * 10 ^ 9; + // 519.999.999.188 + let balance: BalanceOf = BalanceOf::::saturated_from(length_fee); + + Self::evm_gas_from_weight(max_block_weight).saturating_add(Self::evm_fee_to_gas(balance)) } /// Get the gas price. From 3801510a8e40d1513504c6e54c4bb173b8f4c98c Mon Sep 17 00:00:00 2001 From: Alexandru Vasile Date: Tue, 16 Sep 2025 12:29:59 +0000 Subject: [PATCH 63/67] Revert "revive/rpc: Adjust send_raw_transaction to use signed transactions" This reverts commit 3867acd1d0de6b231a2198c748add5a4c7cf8ea3. --- substrate/frame/revive/rpc/src/apis/execution_apis.rs | 2 +- substrate/frame/revive/rpc/src/example.rs | 4 +++- substrate/frame/revive/rpc/src/lib.rs | 10 +++++----- substrate/frame/revive/rpc/src/receipt_extractor.rs | 4 ++-- 4 files changed, 11 insertions(+), 9 deletions(-) diff --git a/substrate/frame/revive/rpc/src/apis/execution_apis.rs b/substrate/frame/revive/rpc/src/apis/execution_apis.rs index b762cfcd4d3c6..9ef03a8334698 100644 --- a/substrate/frame/revive/rpc/src/apis/execution_apis.rs +++ b/substrate/frame/revive/rpc/src/apis/execution_apis.rs @@ -153,7 +153,7 @@ pub trait EthRpc { /// Submits a raw transaction. For EIP-4844 transactions, the raw form must be the network form. /// This means it includes the blobs, KZG commitments, and KZG proofs. #[method(name = "eth_sendRawTransaction")] - async fn send_raw_transaction(&self, transaction: TransactionSigned) -> RpcResult; + async fn send_raw_transaction(&self, transaction: Bytes) -> RpcResult; /// Signs and submits a transaction. #[method(name = "eth_sendTransaction")] diff --git a/substrate/frame/revive/rpc/src/example.rs b/substrate/frame/revive/rpc/src/example.rs index 7fcb31ed300fe..f97003b65816e 100644 --- a/substrate/frame/revive/rpc/src/example.rs +++ b/substrate/frame/revive/rpc/src/example.rs @@ -175,8 +175,10 @@ impl TransactionBuilder { mutate(&mut unsigned_tx); let signed_tx = signer.sign_transaction(unsigned_tx.into()); + let bytes = signed_tx.signed_payload(); + let hash = client - .send_raw_transaction(signed_tx.clone()) + .send_raw_transaction(bytes.into()) .await .with_context(|| "send_raw_transaction failed")?; diff --git a/substrate/frame/revive/rpc/src/lib.rs b/substrate/frame/revive/rpc/src/lib.rs index 01bc89a03b66b..3cdb55f6f081a 100644 --- a/substrate/frame/revive/rpc/src/lib.rs +++ b/substrate/frame/revive/rpc/src/lib.rs @@ -161,9 +161,9 @@ impl EthRpcServer for EthRpcServerImpl { Ok(dry_run.data.into()) } - async fn send_raw_transaction(&self, transaction: TransactionSigned) -> RpcResult { - let hash = H256(keccak_256(&transaction.signed_payload())); - let call = subxt_client::tx().revive().eth_transact(subxt::utils::Static(transaction)); + async fn send_raw_transaction(&self, transaction: Bytes) -> RpcResult { + let hash = H256(keccak_256(&transaction.0)); + let call = subxt_client::tx().revive().eth_transact(transaction.0); self.client.submit(call).await.map_err(|err| { log::debug!(target: LOG_TARGET, "submit call failed: {err:?}"); err @@ -205,8 +205,8 @@ impl EthRpcServer for EthRpcServerImpl { } let tx = transaction.try_into_unsigned().map_err(|_| EthRpcError::InvalidTransaction)?; - let payload = account.sign_transaction(tx); - self.send_raw_transaction(payload).await + let payload = account.sign_transaction(tx).signed_payload(); + self.send_raw_transaction(Bytes(payload)).await } async fn get_block_by_hash( diff --git a/substrate/frame/revive/rpc/src/receipt_extractor.rs b/substrate/frame/revive/rpc/src/receipt_extractor.rs index e542c65e175e5..c6ee9abe0e28a 100644 --- a/substrate/frame/revive/rpc/src/receipt_extractor.rs +++ b/substrate/frame/revive/rpc/src/receipt_extractor.rs @@ -123,7 +123,7 @@ impl ReceiptExtractor { let base_gas_price = (self.fetch_gas_price)(block_hash).await?; let tx_info = - GenericTransaction::from_signed(signed_tx.0.clone(), base_gas_price, Some(from)); + GenericTransaction::from_signed(signed_tx.clone(), base_gas_price, Some(from)); let gas_price = tx_info.gas_price.unwrap_or_default(); let gas_used = U256::from(tx_fees.tip.saturating_add(tx_fees.actual_fee)) .saturating_mul(self.native_to_eth_ratio.into()) @@ -178,7 +178,7 @@ impl ReceiptExtractor { transaction_index.into(), tx_info.r#type.unwrap_or_default(), ); - Ok((signed_tx.0, receipt)) + Ok((signed_tx, receipt)) } /// Extract receipts from block. From 209a248821b280eab3eb8dfc272c7adf716e2e17 Mon Sep 17 00:00:00 2001 From: Alexandru Vasile Date: Wed, 17 Sep 2025 09:14:12 +0000 Subject: [PATCH 64/67] pvm: Bound the number of emitted events to 512 per call Signed-off-by: Alexandru Vasile --- substrate/frame/revive/src/lib.rs | 2 ++ substrate/frame/revive/src/limits.rs | 7 +++++++ substrate/frame/revive/src/vm/pvm.rs | 12 +++++++++++- substrate/frame/revive/src/vm/pvm/env.rs | 5 +++++ 4 files changed, 25 insertions(+), 1 deletion(-) diff --git a/substrate/frame/revive/src/lib.rs b/substrate/frame/revive/src/lib.rs index d87df9edd8e77..4a74239773f58 100644 --- a/substrate/frame/revive/src/lib.rs +++ b/substrate/frame/revive/src/lib.rs @@ -527,6 +527,8 @@ pub mod pallet { CallDataTooLarge = 0x30, /// The return data exceeds [`limits::CALLDATA_BYTES`]. ReturnDataTooLarge = 0x31, + /// The amount of emitted events exceeds [`limits::NUM_EMITTED_EVENTS`]. + TooManyEmittedEvents = 0x32, } /// A reason for the pallet revive placing a hold on funds. diff --git a/substrate/frame/revive/src/limits.rs b/substrate/frame/revive/src/limits.rs index 1a88f73749f17..7f04536d88d2e 100644 --- a/substrate/frame/revive/src/limits.rs +++ b/substrate/frame/revive/src/limits.rs @@ -48,6 +48,13 @@ pub const CALL_STACK_DEPTH: u32 = 25; /// We set it to the same limit that ethereum has. It is unlikely to change. pub const NUM_EVENT_TOPICS: u32 = 4; +/// The maximum number of events a call to [`crate::SyscallDoc::deposit_event`] can emit. +/// +/// It is unlikely that a single contract call needs to emit more than 512 events. +/// This limit is in place to prevent a single contract call from filling up the memory +/// with events. +pub const NUM_EMITTED_EVENTS: u32 = 512; + /// Maximum size of events (including topics) and storage values. pub const PAYLOAD_BYTES: u32 = 416; diff --git a/substrate/frame/revive/src/vm/pvm.rs b/substrate/frame/revive/src/vm/pvm.rs index b0a2ed8264b24..cd652e45991fe 100644 --- a/substrate/frame/revive/src/vm/pvm.rs +++ b/substrate/frame/revive/src/vm/pvm.rs @@ -325,11 +325,21 @@ pub struct Runtime<'a, E: Ext, M: ?Sized> { ext: &'a mut E, input_data: Option>, _phantom_data: PhantomData, + /// The number of emitted events. + /// + /// When this reaches the maximum allowed number of events, no further events + /// can be emitted, and the transaction will fail. + emitted_events: u32, } impl<'a, E: Ext, M: ?Sized + Memory> Runtime<'a, E, M> { pub fn new(ext: &'a mut E, input_data: Vec) -> Self { - Self { ext, input_data: Some(input_data), _phantom_data: Default::default() } + Self { + ext, + input_data: Some(input_data), + _phantom_data: Default::default(), + emitted_events: 0, + } } /// Get a mutable reference to the inner `Ext`. diff --git a/substrate/frame/revive/src/vm/pvm/env.rs b/substrate/frame/revive/src/vm/pvm/env.rs index 0255670a4f529..56dcef18cc377 100644 --- a/substrate/frame/revive/src/vm/pvm/env.rs +++ b/substrate/frame/revive/src/vm/pvm/env.rs @@ -721,6 +721,11 @@ pub mod env { ) -> Result<(), TrapReason> { self.charge_gas(RuntimeCosts::DepositEvent { num_topic, len: data_len })?; + self.emitted_events += 1; + if self.emitted_events > limits::NUM_EMITTED_EVENTS { + return Err(Error::::TooManyEmittedEvents.into()); + } + if num_topic > limits::NUM_EVENT_TOPICS { return Err(Error::::TooManyTopics.into()); } From 16cbc1cbd03726dca319ce279b16e496ef654073 Mon Sep 17 00:00:00 2001 From: Alexandru Vasile Date: Wed, 17 Sep 2025 09:56:50 +0000 Subject: [PATCH 65/67] revive/rpc: Ensure raw tx turns bytes into signed tx Signed-off-by: Alexandru Vasile --- substrate/frame/revive/rpc/src/lib.rs | 11 ++++++++++- substrate/frame/revive/rpc/src/receipt_extractor.rs | 2 +- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/substrate/frame/revive/rpc/src/lib.rs b/substrate/frame/revive/rpc/src/lib.rs index 3cdb55f6f081a..ebe7dc7fc476a 100644 --- a/substrate/frame/revive/rpc/src/lib.rs +++ b/substrate/frame/revive/rpc/src/lib.rs @@ -163,7 +163,16 @@ impl EthRpcServer for EthRpcServerImpl { async fn send_raw_transaction(&self, transaction: Bytes) -> RpcResult { let hash = H256(keccak_256(&transaction.0)); - let call = subxt_client::tx().revive().eth_transact(transaction.0); + + let transaction = match TransactionSigned::decode(&transaction.0) { + Ok(tx) => tx, + Err(err) => { + log::debug!(target: LOG_TARGET, "Failed to decode transaction: {err:?}"); + return Err(EthRpcError::RlpError(err).into()); + }, + }; + + let call = subxt_client::tx().revive().eth_transact(subxt::utils::Static(transaction)); self.client.submit(call).await.map_err(|err| { log::debug!(target: LOG_TARGET, "submit call failed: {err:?}"); err diff --git a/substrate/frame/revive/rpc/src/receipt_extractor.rs b/substrate/frame/revive/rpc/src/receipt_extractor.rs index c6ee9abe0e28a..46bee0d63fcf7 100644 --- a/substrate/frame/revive/rpc/src/receipt_extractor.rs +++ b/substrate/frame/revive/rpc/src/receipt_extractor.rs @@ -113,7 +113,7 @@ impl ReceiptExtractor { |err| log::debug!(target: LOG_TARGET, "TransactionFeePaid not found in events for block {block_number}\n{err:?}") )?; - let signed_tx = call.signed_transaction; + let signed_tx = call.signed_transaction.0; let transaction_hash = H256(keccak_256(&signed_tx.signed_payload())); let from = signed_tx.recover_eth_address().map_err(|_| { From 208c552926363476a51521ff60e5a4af63cbbdaf Mon Sep 17 00:00:00 2001 From: Alexandru Vasile Date: Wed, 17 Sep 2025 10:11:26 +0000 Subject: [PATCH 66/67] revive: Update substrate chain metadata Signed-off-by: Alexandru Vasile --- .../frame/revive/rpc/revive_chain.metadata | Bin 702006 -> 702100 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/substrate/frame/revive/rpc/revive_chain.metadata b/substrate/frame/revive/rpc/revive_chain.metadata index c1e3f18698657f1a3cd6dd8e3310dd99dd56607a..80b246edc77f5d41854899b36f2032c109eb4374 100644 GIT binary patch delta 138 zcmdn?Mr+Djt%erH7N!>F7M2#)7Pc1lEgVcnjC-~-8*%sxMFoW9=ldq+Rl4S8mXxHX zxR#~nl@v1=u?RATWTYx2=H{2?l_=z=DWpQ=6;imqh3iEj0Ny$;L;wH) delta 52 zcmbR8R%_cEt%erH7N!>F7M2#)7Pc1lEgVcnj61e78*%sxO%D=dS8BiH!U4pb+b_9r H9V!F>=dKbf From 48b1cebf7ece3662438795b0f420d662b1170543 Mon Sep 17 00:00:00 2001 From: Alexandru Vasile Date: Wed, 17 Sep 2025 10:13:33 +0000 Subject: [PATCH 67/67] revive: Fix clippy Signed-off-by: Alexandru Vasile --- substrate/frame/revive/src/lib.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/substrate/frame/revive/src/lib.rs b/substrate/frame/revive/src/lib.rs index 4a74239773f58..c35c559ec5a1a 100644 --- a/substrate/frame/revive/src/lib.rs +++ b/substrate/frame/revive/src/lib.rs @@ -1685,7 +1685,7 @@ where // Length to fee conversion of 5 MiB tx size: // pallet_transaction_payment::Pallet::::length_to_fee(5 * 1024 * 1024); - let length_fee: u64 = 52428800000000000 + 6 * 10 ^ 9; + let length_fee: u64 = 52_428_800_000_000_000 + 6 * 1_000_000_000; // 519.999.999.188 let balance: BalanceOf = BalanceOf::::saturated_from(length_fee);