diff --git a/crates/query/fixtures/ethereum/queries/trace_call_type/query.json b/crates/query/fixtures/ethereum/queries/trace_call_type/query.json new file mode 100644 index 0000000..4d9b96b --- /dev/null +++ b/crates/query/fixtures/ethereum/queries/trace_call_type/query.json @@ -0,0 +1,25 @@ +{ + "type": "evm", + "fromBlock": 17881390, + "toBlock": 17881870, + "fields": { + "trace": { + "callFrom": true, + "callType": true, + "transactionIndex": true, + "traceAddress": true, + "type": true + }, + "block": { + "number": true, + "hash": true, + "parentHash": true + } + }, + "traces": [ + { + "callFrom": ["0x58df81babdf15276e761808e872a3838cbecbcf9"], + "callType": ["staticcall"] + } + ] +} \ No newline at end of file diff --git a/crates/query/fixtures/ethereum/queries/trace_call_type/result.json b/crates/query/fixtures/ethereum/queries/trace_call_type/result.json new file mode 100644 index 0000000..c0b284e --- /dev/null +++ b/crates/query/fixtures/ethereum/queries/trace_call_type/result.json @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:542a37a1fca0ed0c472a50bc4a05fc99b2ec0b4464adea6fdb81e57b7c2b86b5 +size 578038 diff --git a/crates/query/fixtures/ethereum/queries/trace_value_non_zero/query.json b/crates/query/fixtures/ethereum/queries/trace_value_non_zero/query.json new file mode 100644 index 0000000..56c1acb --- /dev/null +++ b/crates/query/fixtures/ethereum/queries/trace_value_non_zero/query.json @@ -0,0 +1,38 @@ +{ + "type": "evm", + "fromBlock": 17881390, + "toBlock": 17881870, + "fields": { + "trace": { + "callType": true, + "callSighash": true, + "callValue": true, + "createResultAddress": true, + "createValue": true, + "suicideRefundAddress": true, + "suicideBalance": true, + "rewardValue": true, + "transactionIndex": true, + "traceAddress": true, + "type": true + }, + "block": { + "number": true, + "hash": true, + "parentHash": true + } + }, + "traces": [ + { + "createValueNonZero": true + }, + { + "callType": ["call"], + "callSighash": ["0x3598d8ab"], + "callValueNonZero": true + }, + { + "suicideBalanceNonZero": true + } + ] +} \ No newline at end of file diff --git a/crates/query/fixtures/ethereum/queries/trace_value_non_zero/result.json b/crates/query/fixtures/ethereum/queries/trace_value_non_zero/result.json new file mode 100644 index 0000000..6303410 --- /dev/null +++ b/crates/query/fixtures/ethereum/queries/trace_value_non_zero/result.json @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:02c2c84a41eec2e10ec66ee53628660a9b067694d07abd165fb076492889742c +size 33225 diff --git a/crates/query/src/query/eth.rs b/crates/query/src/query/eth.rs index b67d9e8..943be07 100644 --- a/crates/query/src/query/eth.rs +++ b/crates/query/src/query/eth.rs @@ -571,12 +571,17 @@ request! { pub r#type: Option>, pub create_from: Option>, pub create_result_address: Option>, + pub create_value_non_zero: bool, pub call_from: Option>, pub call_to: Option>, pub call_sighash: Option>, + pub call_type: Option>, + pub call_value_non_zero: bool, pub suicide_address: Option>, pub suicide_refund_address: Option>, + pub suicide_balance_non_zero: bool, pub reward_author: Option>, + pub reward_value_non_zero: bool, pub transaction: bool, pub transaction_logs: bool, pub subtraces: bool, @@ -592,12 +597,25 @@ impl TraceRequest { p.col_in_list("call_from", to_lowercase_list(&self.call_from)); p.col_in_list("call_to", to_lowercase_list(&self.call_to)); p.col_in_list("call_sighash", to_lowercase_list(&self.call_sighash)); + p.col_in_list("call_type", self.call_type.as_deref()); p.col_in_list("suicide_address", to_lowercase_list(&self.suicide_address)); p.col_in_list( "suicide_refund_address", to_lowercase_list(&self.suicide_refund_address) ); p.col_in_list("reward_author", to_lowercase_list(&self.reward_author)); + if self.call_value_non_zero { + p.col_gt_eq("call_value", Some("0x1")); + } + if self.create_value_non_zero { + p.col_gt_eq("create_value", Some("0x1")); + } + if self.suicide_balance_non_zero { + p.col_gt_eq("suicide_balance", Some("0x1")); + } + if self.reward_value_non_zero { + p.col_gt_eq("reward_value", Some("0x1")); + } } fn relations(&self, scan: &mut ScanBuilder) {