Skip to content

Commit

Permalink
Merge pull request #9 from blocktorch-xyz/block-1429-create-op-batch-…
Browse files Browse the repository at this point in the history
…inbox-substreams

Create OP batch inbox transactions module
  • Loading branch information
catalyst17 committed Jan 23, 2024
2 parents e62d0a0 + c853420 commit 8c0ac82
Show file tree
Hide file tree
Showing 10 changed files with 123 additions and 28 deletions.
2 changes: 1 addition & 1 deletion Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[package]
name = "blocktorch_substreams"
version = "0.1.3"
version = "0.1.4"
description = "Blocktorch substreams for oracles, account abstraction and more"
edition = "2021"
repository = "https://github.com/blocktorch-xyz/blocktorch-substreams"
Expand Down
4 changes: 2 additions & 2 deletions Makefile
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
-include .env
export

START_BLOCK ?= 4051031
STOP_BLOCK ?= 0
START_BLOCK ?= 19028181
STOP_BLOCK ?= 19028182

.PHONY: build
build:
Expand Down
4 changes: 4 additions & 0 deletions proto/combined_data.proto
Original file line number Diff line number Diff line change
Expand Up @@ -9,11 +9,15 @@ import "nitro_rollup.proto";
import "op_rollup.proto";
import "zk_evm_rollup.proto";

import "op_batch_inbox_call_data.proto";

message CombinedData {
repeated AccountAbstractionTransaction accountAbstractionTransactions = 1;
repeated ChronicleTransaction chronicleTransactions = 2;

repeated NitroRollup nitroRollups = 3;
repeated OPRollup opRollups = 4;
repeated ZkEvmRollup zkEvmRollups = 5;

repeated OpBatchInboxCallData list_of_op_batch_inbox_call_data = 6;
}
14 changes: 14 additions & 0 deletions proto/op_batch_inbox_call_data.proto
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
syntax = "proto3";

package eth.blocktorch.v1;

message ListOfOpBatchInboxCallData {
repeated OpBatchInboxCallData data = 1;
}

message OpBatchInboxCallData {
string tx_hash = 1;
string batcher_address = 2;
string batch_inbox_address = 3;
string call_data = 4;
}
1 change: 1 addition & 0 deletions src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ mod map_filter_chronicle_transactions;
mod map_filter_aa_transactions;
mod map_combine_transactions;
mod map_combine_data;
mod map_filter_op_batch_inbox_transactions;
mod pb;
mod abi;

Expand Down
8 changes: 5 additions & 3 deletions src/map_combine_data.rs
Original file line number Diff line number Diff line change
@@ -1,20 +1,22 @@
use crate::pb::eth::blocktorch::v1::{CombinedData, AccountAbstractionTransactions, ChronicleTransactions, NitroRollups, OpRollups, ZkEvmRollups};
use crate::pb::eth::blocktorch::v1::{CombinedData, AccountAbstractionTransactions, ChronicleTransactions, NitroRollups, OpRollups, ZkEvmRollups, ListOfOpBatchInboxCallData};

#[substreams::handlers::map]
fn map_combine_data(
aa_trxs: AccountAbstractionTransactions,
chronicle_trxs: ChronicleTransactions,
nitro_rollups: NitroRollups,
op_rollups: OpRollups,
zk_evm_rollups: ZkEvmRollups
zk_evm_rollups: ZkEvmRollups,
list_of_calldata: ListOfOpBatchInboxCallData
) -> Result<CombinedData, Vec<substreams::errors::Error>> {
Ok(
CombinedData {
account_abstraction_transactions: aa_trxs.transactions,
chronicle_transactions: chronicle_trxs.transactions,
nitro_rollups: nitro_rollups.rollups,
op_rollups: op_rollups.rollups,
zk_evm_rollups: zk_evm_rollups.rollups
zk_evm_rollups: zk_evm_rollups.rollups,
list_of_op_batch_inbox_call_data: list_of_calldata.data
}
)
}
37 changes: 37 additions & 0 deletions src/map_filter_op_batch_inbox_transactions.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
use crate::pb::eth::blocktorch::v1::{OpBatchInboxCallData, ListOfOpBatchInboxCallData};
use serde::Deserialize;
use substreams::Hex;
use substreams_ethereum::pb::eth::v2::Block;

#[derive(Debug, Deserialize)]
struct Params {
op_batch_inbox: String
}

#[substreams::handlers::map]
fn map_filter_op_batch_inbox_transactions(params: String, blk: Block) -> Result<ListOfOpBatchInboxCallData, Vec<substreams::errors::Error>> {
// Parse the query string parameters safely
let query: Params = match serde_qs::from_str(&params) {
Ok(query) => query,
Err(_) => return Err(vec![substreams::errors::Error::msg("Failed to parse query parameters")]),
};

// Decode the op_batch_inbox address
let op_batch_inbox_address = match Hex::decode(&query.op_batch_inbox) {
Ok(addr) => addr,
Err(_) => return Err(vec![substreams::errors::Error::msg("Failed to decode op_batch_inbox address")]),
};

let data: Vec<OpBatchInboxCallData> = blk
.transaction_traces.iter()
.filter(|tx| tx.to == op_batch_inbox_address)
.map(|tx| OpBatchInboxCallData {
tx_hash: Hex::encode(&tx.hash),
batcher_address: Hex::encode(&tx.from),
batch_inbox_address: Hex::encode(&tx.to),
call_data: Hex::encode(&tx.input)
})
.collect();

Ok(ListOfOpBatchInboxCallData { data })
}
48 changes: 34 additions & 14 deletions src/pb/eth.blocktorch.v1.rs
Original file line number Diff line number Diff line change
Expand Up @@ -83,6 +83,14 @@ pub struct NitroRollup {
}
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct CombinedTransactions {
#[prost(message, repeated, tag="1")]
pub account_abstraction_transactions: ::prost::alloc::vec::Vec<AccountAbstractionTransaction>,
#[prost(message, repeated, tag="2")]
pub chronicle_transactions: ::prost::alloc::vec::Vec<ChronicleTransaction>,
}
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct OpRollups {
#[prost(message, repeated, tag="1")]
pub rollups: ::prost::alloc::vec::Vec<OpRollup>,
Expand Down Expand Up @@ -159,34 +167,46 @@ pub struct ZkEvmRollup {
}
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct CombinedData {
pub struct CombinedRollups {
#[prost(message, repeated, tag="1")]
pub account_abstraction_transactions: ::prost::alloc::vec::Vec<AccountAbstractionTransaction>,
#[prost(message, repeated, tag="2")]
pub chronicle_transactions: ::prost::alloc::vec::Vec<ChronicleTransaction>,
#[prost(message, repeated, tag="3")]
pub nitro_rollups: ::prost::alloc::vec::Vec<NitroRollup>,
#[prost(message, repeated, tag="4")]
#[prost(message, repeated, tag="2")]
pub op_rollups: ::prost::alloc::vec::Vec<OpRollup>,
#[prost(message, repeated, tag="5")]
#[prost(message, repeated, tag="3")]
pub zk_evm_rollups: ::prost::alloc::vec::Vec<ZkEvmRollup>,
}
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct CombinedRollups {
pub struct ListOfOpBatchInboxCallData {
#[prost(message, repeated, tag="1")]
pub nitro_rollups: ::prost::alloc::vec::Vec<NitroRollup>,
#[prost(message, repeated, tag="2")]
pub op_rollups: ::prost::alloc::vec::Vec<OpRollup>,
#[prost(message, repeated, tag="3")]
pub zk_evm_rollups: ::prost::alloc::vec::Vec<ZkEvmRollup>,
pub data: ::prost::alloc::vec::Vec<OpBatchInboxCallData>,
}
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct CombinedTransactions {
pub struct OpBatchInboxCallData {
#[prost(string, tag="1")]
pub tx_hash: ::prost::alloc::string::String,
#[prost(string, tag="2")]
pub batcher_address: ::prost::alloc::string::String,
#[prost(string, tag="3")]
pub batch_inbox_address: ::prost::alloc::string::String,
#[prost(string, tag="4")]
pub call_data: ::prost::alloc::string::String,
}
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct CombinedData {
#[prost(message, repeated, tag="1")]
pub account_abstraction_transactions: ::prost::alloc::vec::Vec<AccountAbstractionTransaction>,
#[prost(message, repeated, tag="2")]
pub chronicle_transactions: ::prost::alloc::vec::Vec<ChronicleTransaction>,
#[prost(message, repeated, tag="3")]
pub nitro_rollups: ::prost::alloc::vec::Vec<NitroRollup>,
#[prost(message, repeated, tag="4")]
pub op_rollups: ::prost::alloc::vec::Vec<OpRollup>,
#[prost(message, repeated, tag="5")]
pub zk_evm_rollups: ::prost::alloc::vec::Vec<ZkEvmRollup>,
#[prost(message, repeated, tag="6")]
pub list_of_op_batch_inbox_call_data: ::prost::alloc::vec::Vec<OpBatchInboxCallData>,
}
// @@protoc_insertion_point(module)
31 changes: 24 additions & 7 deletions substreams.yaml
Original file line number Diff line number Diff line change
@@ -1,17 +1,18 @@
specVersion: v0.1.0
package:
name: "blocktorch_substreams"
version: v0.1.3
version: v0.1.4

protobuf:
files:
- zk_evm_rollup.proto
- op_rollup.proto
- nitro_rollup.proto
- combined_rollups.proto
- chronicle_transaction.proto
- aa_transaction.proto
- chronicle_transaction.proto
- nitro_rollup.proto
- combined_transactions.proto
- op_rollup.proto
- zk_evm_rollup.proto
- combined_rollups.proto
- op_batch_inbox_call_data.proto
- combined_data.proto
importPaths:
- ./proto
Expand All @@ -22,6 +23,14 @@ binaries:
file: ./target/wasm32-unknown-unknown/release/substreams.wasm

modules:
- name: map_filter_op_batch_inbox_transactions
kind: map
inputs:
- params: string
- source: sf.ethereum.type.v2.Block
output:
type: proto:eth.blocktorch.v1.ListOfOpBatchInboxCallData

- name: map_combine_data
kind: map
inputs:
Expand All @@ -30,6 +39,7 @@ modules:
- map: map_index_nitro_rollup_creations
- map: map_index_op_rollup_creations
- map: map_index_zk_evm_rollup_creations
- map: map_filter_op_batch_inbox_transactions
output:
type: proto:eth.blocktorch.v1.CombinedData

Expand Down Expand Up @@ -83,4 +93,11 @@ modules:
- map: map_filter_aa_transactions
- map: map_filter_chronicle_transactions
output:
type: proto:eth.blocktorch.v1.CombinedTransactions
type: proto:eth.blocktorch.v1.CombinedTransactions

network: mainnet

networks:
mainnet:
params:
map_filter_op_batch_inbox_transactions: "op_batch_inbox=ff00000000000000000000000000000000000010"

0 comments on commit 8c0ac82

Please sign in to comment.