From ea5be9acec6905c76ae1a0b0e4c78ffd11dde263 Mon Sep 17 00:00:00 2001 From: Denis Carriere Date: Sat, 14 Dec 2024 20:37:54 -0500 Subject: [PATCH] update readme --- .gitignore | 2 +- blocks/evm/Makefile | 2 +- blocks/evm/schema.snowflake.sql | 220 -------------------------------- snowflake/ethereum/README.md | 25 +++- 4 files changed, 21 insertions(+), 228 deletions(-) delete mode 100644 blocks/evm/schema.snowflake.sql diff --git a/.gitignore b/.gitignore index 1b8d097..c1d9549 100644 --- a/.gitignore +++ b/.gitignore @@ -829,4 +829,4 @@ adapters/**/*.jsonl *.sublime* # parquet-sink-files state file -*state.yaml +*state*.yaml diff --git a/blocks/evm/Makefile b/blocks/evm/Makefile index 52487da..d28d248 100644 --- a/blocks/evm/Makefile +++ b/blocks/evm/Makefile @@ -26,4 +26,4 @@ parquet: .PHONY: s3 s3: - substreams-sink-files run "$(NETWORK).substreams.pinax.network:443" substreams.yaml map_events "s3://pinax/$(NETWORK)/$(HASH)?region=us-east-1" 0: --encoder parquet --parquet-default-column-compression snappy --file-block-count 100 + substreams-sink-files run "$(NETWORK).substreams.pinax.network:443" substreams.yaml map_events "s3://pinax/$(NETWORK)/$(HASH)?region=us-east-1" 0: --encoder parquet --parquet-default-column-compression snappy --file-block-count 100 --state-store "$(NETWORK).state.yaml" diff --git a/blocks/evm/schema.snowflake.sql b/blocks/evm/schema.snowflake.sql deleted file mode 100644 index 5a419ae..0000000 --- a/blocks/evm/schema.snowflake.sql +++ /dev/null @@ -1,220 +0,0 @@ -CREATE OR REPLACE SECURE VIEW v1_blocks AS -SELECT - -- clock -- - time, - number, - date, - hash, - - -- roots -- - ommers_hash, - logs_bloom, - transactions_root, - state_root, - receipts_root, - withdrawals_root, - parent_beacon_root, - - -- header -- - parent_hash, - nonce, - miner, - difficulty, - ZEROIFNULL(TRY_TO_DECIMAL(hex_encode(total_difficulty_bytes), 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX')) as total_difficulty, - mix_hash, - extra_data, - extra_data_utf8, - gas_limit, - gas_used, - base_fee_per_gas, - - -- blobs -- - blob_gas_used, - excess_blob_gas, - ZEROIFNULL(TRY_TO_DECIMAL(hex_encode(blob_gas_price_bytes), 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX')) as blob_gas_price, - (IFF(blob_transactions[0] ='', [], blob_transactions)) as blob_transactions, - (IFF(blob_hashes[0] ='', [], blob_hashes)) as blob_hashes, - total_blob_transactions, - total_blobs, - - -- counters -- - size, - total_transactions, - successful_transactions, - failed_transactions, - total_balance_changes, - total_withdrawals, - - -- detail level -- - detail_level, - detail_level_code, -FROM "v1.0.0-blocks"; - -CREATE OR REPLACE SECURE VIEW v1_transactions AS -SELECT - -- block -- - block_time, - block_number, - block_hash, - block_date, - - -- block roots -- - transactions_root, - receipts_root, - - -- transaction -- - index, - hash, - "from", - "to", - nonce, - status, - status_code, - success, - ZEROIFNULL(TRY_TO_DECIMAL(hex_encode(gas_price_bytes), 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX')) as gas_price, - gas_limit, - ZEROIFNULL(TRY_TO_DECIMAL(hex_encode(value_bytes), 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX')) as value, - data, - v, - r, - s, - gas_used, - type, - type_code, - ZEROIFNULL(TRY_TO_DECIMAL(hex_encode(max_fee_per_gas_bytes), 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX')) as max_fee_per_gas, - ZEROIFNULL(TRY_TO_DECIMAL(hex_encode(max_priority_fee_per_gas_bytes), 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX')) as max_priority_fee_per_gas, - begin_ordinal, - end_ordinal, - - -- blobs -- - ZEROIFNULL(TRY_TO_DECIMAL(hex_encode(blob_gas_price_bytes), 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX')) as blob_gas_price, - blob_gas_used, - ZEROIFNULL(TRY_TO_DECIMAL(hex_encode(blob_gas_fee_cap_bytes), 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX')) as blob_gas_fee_cap, - (IFF(blob_hashes[0] ='', [], blob_hashes)) as blob_hashes, - - -- transaction receipt -- - cumulative_gas_used, - logs_bloom, - state_root -FROM "v1.0.0-transactions"; - -CREATE OR REPLACE SECURE VIEW v1_traces AS -SELECT - -- block -- - block_time, - block_number, - block_hash, - block_date, - - -- transaction -- - tx_hash, - tx_index, - tx_status, - tx_status_code, - tx_success, - "from", - "to", - - -- traces -- - index, - parent_index, - depth, - caller, - call_type, - call_type_code, - address, - ZEROIFNULL(TRY_TO_DECIMAL(hex_encode(value_bytes), 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX')) as value, - value_bytes, - gas_limit, - gas_consumed, - return_data, - input, - suicide, - failure_reason, - state_reverted, - status_reverted, - status_failed, - executed_code, - begin_ordinal, - end_ordinal, -FROM "v1.0.0-traces"; - -CREATE OR REPLACE SECURE VIEW v1_balance_changes AS -SELECT - -- block -- - block_time, - block_number, - block_hash, - block_date, - - -- transaction -- - tx_hash, - - -- balance change -- - address, - ZEROIFNULL(TRY_TO_DECIMAL(hex_encode(new_balance_bytes), 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX')) as new_balance, - new_balance_bytes, - ZEROIFNULL(TRY_TO_DECIMAL(hex_encode(old_balance_bytes), 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX')) as old_balance, - old_balance_bytes, - ordinal, - reason, - reason_code, -FROM "v1.0.0-balance_changes"; - -CREATE OR REPLACE SECURE VIEW v1_logs AS -SELECT - * -FROM "v1.0.0-logs"; - -CREATE OR REPLACE SECURE VIEW v1_account_creations AS -SELECT - * -FROM "v1.0.0-account_creations"; - -CREATE OR REPLACE SECURE VIEW v1_storage_changes AS -SELECT - * -FROM "v1.0.0-storage_changes"; - -CREATE OR REPLACE SECURE VIEW v1_code_changes AS -SELECT - * -FROM "v1.0.0-code_changes"; - -create or replace TABLE PINAX_DATASETS.ETHEREUM."v1.0.0-transactions" ( - BLOCK_TIME NUMBER(38,0), - BLOCK_NUMBER NUMBER(38,0), - BLOCK_HASH VARCHAR(16777216), - BLOCK_DATE DATE, - TRANSACTIONS_ROOT VARCHAR(16777216), - RECEIPTS_ROOT VARCHAR(16777216), - INDEX NUMBER(38,0), - HASH VARCHAR(16777216), - "from" VARCHAR(16777216), - "to" VARCHAR(16777216), - NONCE NUMBER(38,0), - STATUS VARCHAR(16777216), - STATUS_CODE NUMBER(38,0), - SUCCESS BOOLEAN, - GAS_PRICE_HEX VARCHAR(16777216), - GAS_LIMIT NUMBER(38,0), - VALUE_HEX VARCHAR(16777216), - DATA VARCHAR(16777216), - V VARCHAR(16777216), - R VARCHAR(16777216), - S VARCHAR(16777216), - GAS_USED NUMBER(38,0), - TYPE VARCHAR(16777216), - TYPE_CODE NUMBER(38,0), - MAX_FEE_PER_GAS_HEX VARCHAR(16777216), - MAX_PRIORITY_FEE_PER_GAS_HEX VARCHAR(16777216), - BEGIN_ORDINAL NUMBER(38,0), - END_ORDINAL NUMBER(38,0), - BLOB_GAS_PRICE_HEX VARCHAR(16777216), - BLOB_GAS_USED NUMBER(38,0), - BLOB_GAS_FEE_CAP_HEX VARCHAR(16777216), - BLOB_HASHES ARRAY, - CUMULATIVE_GAS_USED NUMBER(38,0), - LOGS_BLOOM VARCHAR(16777216), - STATE_ROOT VARCHAR(16777216) -); \ No newline at end of file diff --git a/snowflake/ethereum/README.md b/snowflake/ethereum/README.md index 8780510..7fc2575 100644 --- a/snowflake/ethereum/README.md +++ b/snowflake/ethereum/README.md @@ -24,8 +24,8 @@ Try 30 day limited trial access to the dataset on the [Snowflake Data Marketplac SELECT date_trunc('minute', block_time) AS minute, count(distinct "from") AS user -FROM ethereum.transactions -WHERE block_date = '2024-10-01' +FROM eth.transactions +WHERE block_date = '2024-11-01' GROUP BY minute ORDER BY minute ASC; ``` @@ -36,13 +36,26 @@ ORDER BY minute ASC; SELECT "to" AS contract, count(*) AS transactions -FROM ethereum.transactions -WHERE block_date = '2024-10-01' +FROM eth.transactions +WHERE block_date = '2024-11-01' GROUP BY contract ORDER BY transactions DESC LIMIT 10; ``` +**View the first and last block indexed** + +> This query tells you how fresh the data is. + +```sql +SELECT + MIN(number) AS "First block", + MAX(number) AS "Newest block", + COUNT(1) AS "Total number of blocks" +FROM + eth.blocks +``` + **ERC-20 Transfers** ```sql @@ -50,11 +63,11 @@ SELECT block_date, count(*) as total FROM - ethereum.traces + eth.traces WHERE tx_success = true AND SUBSTR(input, 1, 10) IN ('0xa9059cbb', '0x23b872dd') // Transfer and TransferFrom - AND block_date >= '2024-09-01' AND block_date <= '2024-09-07' + AND block_date >= '2024-11-01' AND block_date <= '2024-12-01' GROUP BY block_date ORDER BY block_date ```