use arrow::datatypes::{DataType, Field, Schema};
pub fn block() -> Schema {
Schema::new(vec![
Field::new("number", DataType::UInt64, false),
Field::new("hash", DataType::Binary, false),
Field::new("parent_hash", DataType::Binary, false),
Field::new("nonce", DataType::Binary, true),
Field::new("sha3_uncles", DataType::Binary, false),
Field::new("logs_bloom", DataType::Binary, false),
Field::new("transactions_root", DataType::Binary, false),
Field::new("state_root", DataType::Binary, false),
Field::new("receipts_root", DataType::Binary, false),
Field::new("miner", DataType::Binary, false),
Field::new("difficulty", DataType::Decimal256(76, 0), true),
Field::new("total_difficulty", DataType::Decimal256(76, 0), true),
Field::new("extra_data", DataType::Binary, false),
Field::new("size", DataType::Decimal256(76, 0), false),
Field::new("gas_limit", DataType::Decimal256(76, 0), false),
Field::new("gas_used", DataType::Decimal256(76, 0), false),
Field::new("timestamp", DataType::Decimal256(76, 0), false),
Field::new("uncles", DataType::Binary, true),
Field::new("base_fee_per_gas", DataType::Decimal256(76, 0), true),
Field::new("blob_gas_used", DataType::Decimal256(76, 0), true),
Field::new("excess_blob_gas", DataType::Decimal256(76, 0), true),
Field::new("parent_beacon_block_root", DataType::Binary, true),
Field::new("withdrawals_root", DataType::Binary, true),
Field::new("withdrawals", DataType::Binary, true),
Field::new("l1_block_number", DataType::UInt64, true),
Field::new("send_count", DataType::Decimal256(76, 0), true),
Field::new("send_root", DataType::Binary, true),
Field::new("mix_hash", DataType::Binary, true),
])
}
pub fn transaction() -> Schema {
Schema::new(vec![
Field::new("block_hash", DataType::Binary, false),
Field::new("block_number", DataType::UInt64, false),
Field::new("from", DataType::Binary, true),
Field::new("gas", DataType::Decimal256(76, 0), false),
Field::new("gas_price", DataType::Decimal256(76, 0), true),
Field::new("hash", DataType::Binary, false),
Field::new("input", DataType::Binary, false),
Field::new("nonce", DataType::Decimal256(76, 0), false),
Field::new("to", DataType::Binary, true),
Field::new("transaction_index", DataType::UInt64, false),
Field::new("value", DataType::Decimal256(76, 0), false),
Field::new("v", DataType::Decimal256(76, 0), true),
Field::new("r", DataType::Decimal256(76, 0), true),
Field::new("s", DataType::Decimal256(76, 0), true),
Field::new(
"max_priority_fee_per_gas",
DataType::Decimal256(76, 0),
true,
),
Field::new("max_fee_per_gas", DataType::Decimal256(76, 0), true),
Field::new("chain_id", DataType::Decimal256(76, 0), true),
Field::new("cumulative_gas_used", DataType::Decimal256(76, 0), false),
Field::new("effective_gas_price", DataType::Decimal256(76, 0), false),
Field::new("gas_used", DataType::Decimal256(76, 0), false),
Field::new("contract_address", DataType::Binary, true),
Field::new("logs_bloom", DataType::Binary, false),
Field::new("type", DataType::UInt8, true),
Field::new("root", DataType::Binary, true),
Field::new("status", DataType::UInt8, true),
Field::new("sighash", DataType::Binary, true),
Field::new("y_parity", DataType::Decimal256(76, 0), true),
Field::new("access_list", DataType::Binary, true),
Field::new("l1_fee", DataType::Decimal256(76, 0), true),
Field::new("l1_gas_price", DataType::Decimal256(76, 0), true),
Field::new("l1_gas_used", DataType::Decimal256(76, 0), true),
Field::new("l1_fee_scalar", DataType::Decimal256(76, 0), true),
Field::new("gas_used_for_l1", DataType::Decimal256(76, 0), true),
Field::new("max_fee_per_blob_gas", DataType::Decimal256(76, 0), true),
Field::new("blob_versioned_hashes", DataType::Binary, true),
Field::new("deposit_nonce", DataType::Decimal256(76, 0), true),
Field::new("blob_gas_price", DataType::Decimal256(76, 0), true),
Field::new("deposit_receipt_version", DataType::Decimal256(76, 0), true),
Field::new("blob_gas_used", DataType::Decimal256(76, 0), true),
Field::new("l1_base_fee_scalar", DataType::Decimal256(76, 0), true),
Field::new("l1_blob_base_fee", DataType::Decimal256(76, 0), true),
Field::new("l1_blob_base_fee_scalar", DataType::Decimal256(76, 0), true),
Field::new("l1_block_number", DataType::Decimal256(76, 0), true),
Field::new("mint", DataType::Decimal256(76, 0), true),
Field::new("source_hash", DataType::Binary, true),
])
}
pub fn log() -> Schema {
Schema::new(vec![
Field::new("removed", DataType::Boolean, true),
Field::new("log_index", DataType::UInt64, false),
Field::new("transaction_index", DataType::UInt64, false),
Field::new("transaction_hash", DataType::Binary, false),
Field::new("block_hash", DataType::Binary, false),
Field::new("block_number", DataType::UInt64, false),
Field::new("address", DataType::Binary, false),
Field::new("data", DataType::Binary, false),
Field::new("topic0", DataType::Binary, true),
Field::new("topic1", DataType::Binary, true),
Field::new("topic2", DataType::Binary, true),
Field::new("topic3", DataType::Binary, true),
])
}
pub fn trace() -> Schema {
Schema::new(vec![
Field::new("from", DataType::Binary, true),
Field::new("to", DataType::Binary, true),
Field::new("call_type", DataType::Utf8View, true),
Field::new("gas", DataType::Decimal256(76, 0), true),
Field::new("input", DataType::Binary, true),
Field::new("init", DataType::Binary, true),
Field::new("value", DataType::Decimal256(76, 0), true),
Field::new("author", DataType::Binary, true),
Field::new("reward_type", DataType::Utf8View, true),
Field::new("block_hash", DataType::Binary, false),
Field::new("block_number", DataType::UInt64, false),
Field::new("address", DataType::Binary, true),
Field::new("code", DataType::Binary, true),
Field::new("gas_used", DataType::Decimal256(76, 0), true),
Field::new("output", DataType::Binary, true),
Field::new("subtraces", DataType::UInt64, true),
Field::new("trace_address", DataType::Binary, true),
Field::new("transaction_hash", DataType::Binary, true),
Field::new("transaction_position", DataType::UInt64, true),
Field::new("type", DataType::Utf8View, true),
Field::new("error", DataType::Utf8View, true),
Field::new("sighash", DataType::Binary, true),
Field::new("action_address", DataType::Binary, true),
Field::new("balance", DataType::Decimal256(76, 0), true),
Field::new("refund_address", DataType::Binary, true),
])
}