mirror of
https://github.com/hl-archive-node/nanoreth.git
synced 2025-12-06 19:09:54 +00:00
feat: improve exex examples' validation (#8116)
This commit is contained in:
@ -3,7 +3,7 @@ use futures::Future;
|
|||||||
use reth_exex::{ExExContext, ExExEvent};
|
use reth_exex::{ExExContext, ExExEvent};
|
||||||
use reth_node_api::FullNodeComponents;
|
use reth_node_api::FullNodeComponents;
|
||||||
use reth_node_ethereum::EthereumNode;
|
use reth_node_ethereum::EthereumNode;
|
||||||
use reth_primitives::{Log, SealedBlockWithSenders, TransactionSigned};
|
use reth_primitives::{address, Address, Log, SealedBlockWithSenders, TransactionSigned};
|
||||||
use reth_provider::Chain;
|
use reth_provider::Chain;
|
||||||
use reth_tracing::tracing::info;
|
use reth_tracing::tracing::info;
|
||||||
use rusqlite::Connection;
|
use rusqlite::Connection;
|
||||||
@ -11,6 +11,15 @@ use rusqlite::Connection;
|
|||||||
sol!(L1StandardBridge, "l1_standard_bridge_abi.json");
|
sol!(L1StandardBridge, "l1_standard_bridge_abi.json");
|
||||||
use crate::L1StandardBridge::{ETHBridgeFinalized, ETHBridgeInitiated, L1StandardBridgeEvents};
|
use crate::L1StandardBridge::{ETHBridgeFinalized, ETHBridgeInitiated, L1StandardBridgeEvents};
|
||||||
|
|
||||||
|
const OP_BRIDGES: [Address; 6] = [
|
||||||
|
address!("3154Cf16ccdb4C6d922629664174b904d80F2C35"),
|
||||||
|
address!("3a05E5d33d7Ab3864D53aaEc93c8301C1Fa49115"),
|
||||||
|
address!("697402166Fbf2F22E970df8a6486Ef171dbfc524"),
|
||||||
|
address!("99C9fc46f92E8a1c0deC1b1747d010903E884bE1"),
|
||||||
|
address!("735aDBbE72226BD52e818E7181953f42E3b0FF21"),
|
||||||
|
address!("3B95bC951EE0f553ba487327278cAc44f29715E5"),
|
||||||
|
];
|
||||||
|
|
||||||
/// Initializes the ExEx.
|
/// Initializes the ExEx.
|
||||||
///
|
///
|
||||||
/// Opens up a SQLite database and creates the tables (if they don't exist).
|
/// Opens up a SQLite database and creates the tables (if they don't exist).
|
||||||
@ -213,8 +222,14 @@ fn decode_chain_into_events(
|
|||||||
.zip(receipts.iter().flatten())
|
.zip(receipts.iter().flatten())
|
||||||
.map(move |(tx, receipt)| (block, tx, receipt))
|
.map(move |(tx, receipt)| (block, tx, receipt))
|
||||||
})
|
})
|
||||||
// Get all logs
|
// Get all logs from expected bridge contracts
|
||||||
.flat_map(|(block, tx, receipt)| receipt.logs.iter().map(move |log| (block, tx, log)))
|
.flat_map(|(block, tx, receipt)| {
|
||||||
|
receipt
|
||||||
|
.logs
|
||||||
|
.iter()
|
||||||
|
.filter(|log| OP_BRIDGES.contains(&log.address))
|
||||||
|
.map(move |log| (block, tx, log))
|
||||||
|
})
|
||||||
// Decode and filter bridge events
|
// Decode and filter bridge events
|
||||||
.filter_map(|(block, tx, log)| {
|
.filter_map(|(block, tx, log)| {
|
||||||
L1StandardBridgeEvents::decode_raw_log(log.topics(), &log.data.data, true)
|
L1StandardBridgeEvents::decode_raw_log(log.topics(), &log.data.data, true)
|
||||||
|
|||||||
@ -243,10 +243,14 @@ fn decode_chain_into_rollup_events(
|
|||||||
.zip(receipts.iter().flatten())
|
.zip(receipts.iter().flatten())
|
||||||
.map(move |(tx, receipt)| (block, tx, receipt))
|
.map(move |(tx, receipt)| (block, tx, receipt))
|
||||||
})
|
})
|
||||||
// Filter only transactions to the rollup contract
|
// Get all logs from rollup contract
|
||||||
.filter(|(_, tx, _)| tx.to() == Some(ROLLUP_CONTRACT_ADDRESS))
|
.flat_map(|(block, tx, receipt)| {
|
||||||
// Get all logs
|
receipt
|
||||||
.flat_map(|(block, tx, receipt)| receipt.logs.iter().map(move |log| (block, tx, log)))
|
.logs
|
||||||
|
.iter()
|
||||||
|
.filter(|log| log.address == ROLLUP_CONTRACT_ADDRESS)
|
||||||
|
.map(move |log| (block, tx, log))
|
||||||
|
})
|
||||||
// Decode and filter rollup events
|
// Decode and filter rollup events
|
||||||
.filter_map(|(block, tx, log)| {
|
.filter_map(|(block, tx, log)| {
|
||||||
RollupContractEvents::decode_raw_log(log.topics(), &log.data.data, true)
|
RollupContractEvents::decode_raw_log(log.topics(), &log.data.data, true)
|
||||||
|
|||||||
Reference in New Issue
Block a user