diff --git a/Cargo.toml b/Cargo.toml index f1a82c5..8581caa 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -4,7 +4,7 @@ resolver = "2" [workspace.package] edition = "2021" -version = "0.1.1" +version = "0.1.2" [workspace.dependencies] substreams = "0.5" diff --git a/blocks/evm/src/balance_changes.rs b/blocks/evm/src/balance_changes.rs index 4d879dc..aba23ac 100644 --- a/blocks/evm/src/balance_changes.rs +++ b/blocks/evm/src/balance_changes.rs @@ -46,8 +46,8 @@ pub fn insert_block_balance_changes(tables: &mut DatabaseChanges, clock: &Clock, // https://github.com/streamingfast/firehose-ethereum/blob/1bcb32a8eb3e43347972b6b5c9b1fcc4a08c751e/proto/sf/ethereum/type/v2/type.proto#L658 pub fn insert_balance_change(row: &mut TableChange, balance_change: &BalanceChange) { let address = bytes_to_hex(balance_change.address.clone()); - let new_value = optional_bigint_to_string(balance_change.new_value.clone()); - let old_value = optional_bigint_to_string(balance_change.old_value.clone()); + let new_value = optional_bigint_to_string(balance_change.new_value.clone(), "0"); + let old_value = optional_bigint_to_string(balance_change.old_value.clone(), "0"); let delta_value = optional_bigint_to_decimal(balance_change.new_value.clone()) - optional_bigint_to_decimal(balance_change.old_value.clone()); let ordinal = balance_change.ordinal; let reason_code = balance_change.reason; diff --git a/blocks/evm/src/blocks.rs b/blocks/evm/src/blocks.rs index 84c5586..18ba711 100644 --- a/blocks/evm/src/blocks.rs +++ b/blocks/evm/src/blocks.rs @@ -24,14 +24,16 @@ pub fn insert_blocks(tables: &mut DatabaseChanges, clock: &Clock, block: &Block) let extra_data_utf8 = String::from_utf8(header.extra_data).unwrap_or_default(); let gas_limit = header.gas_limit; let gas_used = header.gas_used; - let withdrawals_root = bytes_to_hex(header.withdrawals_root); - let parent_beacon_root = bytes_to_hex(header.parent_beacon_root); - let difficulty = optional_bigint_to_string(header.difficulty); - let total_difficulty = optional_bigint_to_string(header.total_difficulty.clone()); // UInt256 - let base_fee_per_gas = optional_bigint_to_string(header.base_fee_per_gas); // UInt256 - let excess_blob_gas = optional_u64_to_string(header.excess_blob_gas); // uint64 - let blob_gas_used = optional_u64_to_string(header.blob_gas_used); // uint64 + let difficulty = optional_bigint_to_string(header.difficulty, "0"); // UInt64 + let total_difficulty = optional_bigint_to_string(header.total_difficulty.clone(), "0"); // UInt256 + + // forks + let withdrawals_root = bytes_to_hex(header.withdrawals_root); // EIP-4895 (Shangai Fork) + let parent_beacon_root = bytes_to_hex(header.parent_beacon_root); // EIP-4788 (Dencun Fork) + let base_fee_per_gas = optional_bigint_to_string(header.base_fee_per_gas, ""); // UInt256 - EIP-1559 (London Fork) + let excess_blob_gas = optional_u64_to_string(header.excess_blob_gas, ""); // UInt64 - EIP-4844 (Dencun Fork) + let blob_gas_used = optional_u64_to_string(header.blob_gas_used, ""); // UInt64 - EIP-4844 (Dencun Fork) // blocks let keys = blocks_keys(&clock, true); diff --git a/blocks/evm/src/traces.rs b/blocks/evm/src/traces.rs index bad4194..7db9dd8 100644 --- a/blocks/evm/src/traces.rs +++ b/blocks/evm/src/traces.rs @@ -50,7 +50,7 @@ pub fn insert_trace(tables: &mut DatabaseChanges, clock: &Clock, call: &Call, tr let status_failed = call.status_failed; let status_reverted = call.status_reverted; let suicide = call.suicide; // or `selfdestruct`? - let value = optional_bigint_to_string(call.value.clone()); // UInt256 + let value = optional_bigint_to_string(call.value.clone(), "0"); // UInt256 let keys = traces_keys(&clock, &tx_hash, &tx_index, &index); let row = tables diff --git a/blocks/evm/src/transactions.rs b/blocks/evm/src/transactions.rs index 0673f39..f834f58 100644 --- a/blocks/evm/src/transactions.rs +++ b/blocks/evm/src/transactions.rs @@ -54,9 +54,9 @@ pub fn insert_transaction(tables: &mut DatabaseChanges, clock: &Clock, transacti let from = bytes_to_hex(transaction.from.clone()); // EVM Address let to = bytes_to_hex(transaction.to.clone()); // EVM Address let nonce = transaction.nonce; - let gas_price = optional_bigint_to_string(transaction.gas_price.clone()); // UInt256 + let gas_price = optional_bigint_to_string(transaction.gas_price.clone(), "0"); // UInt256 let gas_limit = transaction.gas_limit; - let value = optional_bigint_to_string(transaction.value.clone()); // UInt256 + let value = optional_bigint_to_string(transaction.value.clone(), "0"); // UInt256 let input = bytes_to_hex(transaction.input.clone()); let v = bytes_to_hex(transaction.v.clone()); let r = bytes_to_hex(transaction.r.clone()); @@ -64,8 +64,8 @@ pub fn insert_transaction(tables: &mut DatabaseChanges, clock: &Clock, transacti let gas_used = transaction.gas_used; let r#type = transaction_type_to_string(transaction.r#type); let type_code = transaction.r#type; - let max_fee_per_gas = optional_bigint_to_string(transaction.max_fee_per_gas.clone()); // UInt256 - let max_priority_fee_per_gas = optional_bigint_to_string(transaction.max_priority_fee_per_gas.clone()); // UInt256 + let max_fee_per_gas = optional_bigint_to_string(transaction.max_fee_per_gas.clone(), "0"); // UInt256 + let max_priority_fee_per_gas = optional_bigint_to_string(transaction.max_priority_fee_per_gas.clone(), "0"); // UInt256 let return_data = bytes_to_hex(transaction.return_data.clone()); // TO-CHECK: empty on ETH let public_key = bytes_to_hex(transaction.public_key.clone()); // TO-CHECK: empty on ETH let begin_ordinal = transaction.begin_ordinal; diff --git a/blocks/evm/substreams.yaml b/blocks/evm/substreams.yaml index 82547a1..c0bf62b 100644 --- a/blocks/evm/substreams.yaml +++ b/blocks/evm/substreams.yaml @@ -1,7 +1,7 @@ specVersion: v0.1.0 package: name: raw_blocks_evm - version: v0.1.1 + version: v0.1.2 url: https://github.com/pinax-network/substreams-raw-blocks doc: Raw Blocks for EVM diff --git a/common/src/utils.rs b/common/src/utils.rs index 8b01a4d..b4157bf 100644 --- a/common/src/utils.rs +++ b/common/src/utils.rs @@ -18,10 +18,10 @@ pub fn bytes_to_hex(bytes: Vec) -> String { } } -pub fn optional_bigint_to_string(value: Option) -> String { +pub fn optional_bigint_to_string(value: Option, default: &str) -> String { match value { Some(bigint) => bigint.with_decimal(0).to_string(), - None => "".to_string(), + None => default.to_string(), } } @@ -39,10 +39,10 @@ pub fn optional_bigint_to_hex(value: Option) -> String { } } -pub fn optional_u64_to_string(value: Option) -> String { +pub fn optional_u64_to_string(value: Option, default: &str) -> String { match value { Some(uint) => uint.to_string(), - None => "".to_string(), + None => default.to_string(), } }