From 607fe3747a9fefb050ebb1ef2089118ee7906bc3 Mon Sep 17 00:00:00 2001 From: Huang Geyang Date: Fri, 29 Nov 2024 01:19:34 +0800 Subject: [PATCH 1/7] Init boba chain --- .../daily_spellbook/models/evms/evms_info.sql | 4 +- .../tokens/models/prices/boba/_schema.yml | 29 ++++ .../models/prices/boba/prices_boba_tokens.sql | 28 ++++ .../tokens/models/prices/prices_tokens.sql | 2 + .../models/prices/prices_trusted_tokens.sql | 7 + .../tokens/models/tokens/boba/_schema.yml | 21 +++ .../models/tokens/boba/tokens_boba_erc20.sql | 21 +++ .../tokens/models/tokens/tokens_erc20.sql | 2 + .../_base_sources/evm/boba_base_sources.yml | 158 ++++++++++++++++++ sources/_base_sources/evm/boba_docs_block.md | 75 +++++++++ 10 files changed, 345 insertions(+), 2 deletions(-) create mode 100644 dbt_subprojects/tokens/models/prices/boba/_schema.yml create mode 100644 dbt_subprojects/tokens/models/prices/boba/prices_boba_tokens.sql create mode 100644 dbt_subprojects/tokens/models/tokens/boba/_schema.yml create mode 100644 dbt_subprojects/tokens/models/tokens/boba/tokens_boba_erc20.sql create mode 100644 sources/_base_sources/evm/boba_base_sources.yml create mode 100644 sources/_base_sources/evm/boba_docs_block.md diff --git a/dbt_subprojects/daily_spellbook/models/evms/evms_info.sql b/dbt_subprojects/daily_spellbook/models/evms/evms_info.sql index dcb86d95584..f9063d5c36e 100644 --- a/dbt_subprojects/daily_spellbook/models/evms/evms_info.sql +++ b/dbt_subprojects/daily_spellbook/models/evms/evms_info.sql @@ -8,6 +8,7 @@ , "base" , "blast" , "bnb" + , "boba" , "celo" , "ethereum" , "fantom" @@ -63,7 +64,7 @@ FROM ( , (1101, 'zkevm', 'Polygon zkEVM', 'Layer 2', 'ZK Rollup', 'ETH', 0x4f9a0e7fd2bf6067db6994cf12e4495df938e6e9, 'https://zkevm.polygonscan.com/', timestamp '2023-03-24 05:30', 'Polygon', 'Ethereum', 'Ethereum', true) , (1088, 'metis_andromeda', 'Metis Andromeda', NULL, NULL, NULL, NULL, 'https://andromeda-explorer.metis.io/', timestamp '2021-11-18 22:19', 'Optimistic Virtual Machine', 'Ethereum', 'Ethereum', false) , (59144, 'linea', 'Linea', 'Layer 2', 'ZK Rollup', 'ETH', 0xe5d7c2a44ffddf6b295a15c148167daaaf5cf34f, 'https://lineascan.build/', timestamp '2023-07-06 13:15', NULL, 'Ethereum Blobs', 'Ethereum', true) - , (288, 'boba', 'Boba Network', 'Layer 2', 'Optimistic Rollup', 'ETH', NULL, 'https://bobascan.com/', timestamp '2021-10-28 05:03', 'Optimistic Virtual Machine', 'Ethereum', 'Ethereum', false) + , (288, 'boba', 'Boba Network', 'Layer 2', 'Optimistic Rollup', 'ETH', 0xdeaddeaddeaddeaddeaddeaddeaddeaddead0000, 'https://bobascan.com/', timestamp '2021-09-20 00:00', 'OP Stack', 'Ethereum', 'Ethereum', true) , (7700, 'canto', 'Canto', 'Layer 2', NULL, 'ETH', NULL, 'https://evm.explorer.canto.io/', timestamp '2022-07-26 19:27', NULL, 'Ethereum', 'Ethereum', false) , (420, 'optimism_goerli', 'Optimism Goerli', 'Testnet', 'Optimistic Rollup', 'GTH', 0x4200000000000000000000000000000000000006, 'https://optimism-goerli.blockscout.com/', timestamp '2022-06-09 16:55', 'OP Stack', 'Goerli', 'Goerli', false) , (1313161554, 'aurora', 'Aurora', 'Layer 2', NULL, 'ETH', 0xC9BdeEd33CD01541e1eeD10f90519d2C06Fe3feB, 'https://explorer.aurora.dev/', timestamp '2020-07-21 21:50:11', NULL, NULL, NULL, false) @@ -91,4 +92,3 @@ FROM ( , (42170, 'nova', 'Arbitrum Nova', 'Layer 2', 'Optimistic Rollup', 'ETH', 0x722e8bdd2ce80a4422e880164f2079488e115365, 'https://nova-explorer.arbitrum.io/', timestamp '2022-06-25 04:01', 'Arbitrum', 'Ethereum', 'Ethereum', true) , (2020, 'ronin', 'Ronin', 'Layer 1', null, 'RON', 0xe514d9deb7966c8be0ca922de8a064264ea6bcd4, 'https://app.roninchain.com/', timestamp '2021-01-25 10:49', NULL, NULL, NULL, true) ) AS temp_table (chain_id, blockchain, name, chain_type, rollup_type, native_token_symbol, wrapped_native_token_address, explorer_link, first_block_time, codebase, data_availability, settlement, is_on_dune) - diff --git a/dbt_subprojects/tokens/models/prices/boba/_schema.yml b/dbt_subprojects/tokens/models/prices/boba/_schema.yml new file mode 100644 index 00000000000..1a0a161aad8 --- /dev/null +++ b/dbt_subprojects/tokens/models/prices/boba/_schema.yml @@ -0,0 +1,29 @@ +version: 2 + +models: + - name: prices_boba_tokens + meta: + blockchain: boba + sector: prices + contributors: hosuke + config: + tags: ['prices', 'tokens', 'usd', 'boba'] + description: "Price tokens on Boba Network EVM chain" + data_tests: + - dbt_utils.unique_combination_of_columns: + combination_of_columns: + - contract_address + columns: + - name: token_id + description: "Id of the token at coinpaprika. This id is required to pull the price feed data. NOTE: Not all tokens are listed at coinpaprika - consider using price data from DEX sources in this case or submit a listing request at coinpaprika." + - name: blockchain + description: "Native blockchain of the token, if any" + data_tests: + - accepted_values: + values: [ "boba" ] + - name: contract_address + description: "Contract address of the token, if any" + - name: symbol + description: "Token symbol" + - name: decimals + description: "Number of decimals for the token contract" diff --git a/dbt_subprojects/tokens/models/prices/boba/prices_boba_tokens.sql b/dbt_subprojects/tokens/models/prices/boba/prices_boba_tokens.sql new file mode 100644 index 00000000000..8480d16c5c2 --- /dev/null +++ b/dbt_subprojects/tokens/models/prices/boba/prices_boba_tokens.sql @@ -0,0 +1,28 @@ +{% set blockchain = 'boba' %} + +{{ config( + schema = 'prices_' + blockchain, + alias = 'tokens', + materialized = 'table', + file_format = 'delta', + tags = ['static'] + ) +}} + +SELECT + token_id + , '{{ blockchain }}' as blockchain + , symbol + , contract_address + , decimals +FROM +( + VALUES + ('usdt-tether', 'USDT', 0x5DE1677344D3Cb0D7D465c10b72A8f60699C062d, 6) + , ('usdc-usd-coin', 'USDC', 0x66a2A913e447d6b4BF33EFbec43aAeF87890FBbc, 6) + , ('eth-ethereum', 'WETH', 0xdeaddeaddeaddeaddeaddeaddeaddeaddead0000, 18) + , ('boba-boba-network', 'BOBA', 0xa18bF3994C0Cc6E3b63ac420308E5383f53120D7, 18) + , ('dai-dai', 'DAI', 0xf74195Bb8a5cf652411867c5C2C5b8C2a402be35, 18) + , ('frax-frax', 'FRAX', 0x7562F525106F5d54E891e005867Bf489B5988CD9, 18) + , ('bnb-binance-coin', 'BNB', 0x68ac1623ACf9eB9F88b65B5F229fE3e2c0d5789E, 18) +) as temp (token_id, symbol, contract_address, decimals) diff --git a/dbt_subprojects/tokens/models/prices/prices_tokens.sql b/dbt_subprojects/tokens/models/prices/prices_tokens.sql index 665f2adde64..9fa9d762641 100644 --- a/dbt_subprojects/tokens/models/prices/prices_tokens.sql +++ b/dbt_subprojects/tokens/models/prices/prices_tokens.sql @@ -11,6 +11,7 @@ , "bitcoin" , "blast" , "bnb" + , "boba" , "cardano" , "celo" , "ethereum" @@ -64,6 +65,7 @@ ref('prices_native_tokens') ,ref('prices_kaia_tokens') ,ref('prices_tron_tokens') ,ref('prices_ronin_tokens') +,ref('prices_boba_tokens') ] %} diff --git a/dbt_subprojects/tokens/models/prices/prices_trusted_tokens.sql b/dbt_subprojects/tokens/models/prices/prices_trusted_tokens.sql index 37ad50a9faa..613aca4cf83 100644 --- a/dbt_subprojects/tokens/models/prices/prices_trusted_tokens.sql +++ b/dbt_subprojects/tokens/models/prices/prices_trusted_tokens.sql @@ -47,6 +47,13 @@ WITH trusted_tokens AS ( , ('bnb', 0x2170ed0880ac9a755fd29b2688956bd959f933f8) , ('bnb', 0x7130d2a12b9bcbfae4f2634d864a1ee1ce3ead9c) , ('bnb', 0x1af3f329e8be154074d8769d1ffa4ee058b1dbc3) + , ('boba', 0x5DE1677344D3Cb0D7D465c10b72A8f60699C062d) + , ('boba', 0x66a2A913e447d6b4BF33EFbec43aAeF87890FBbc) + , ('boba', 0xdeaddeaddeaddeaddeaddeaddeaddeaddead0000) + , ('boba', 0xa18bF3994C0Cc6E3b63ac420308E5383f53120D7) + , ('boba', 0xf74195Bb8a5cf652411867c5C2C5b8C2a402be35) + , ('boba', 0x7562F525106F5d54E891e005867Bf489B5988CD9) + , ('boba', 0x68ac1623ACf9eB9F88b65B5F229fE3e2c0d5789E) , ('celo', 0x765de816845861e75a25fca122bb6898b8b1282a) , ('celo', 0x471ece3750da237f93b8e339c536989b8978a438) , ('celo', 0xceba9300f2b948710d2653dd7b07f33a8b32118c) diff --git a/dbt_subprojects/tokens/models/tokens/boba/_schema.yml b/dbt_subprojects/tokens/models/tokens/boba/_schema.yml new file mode 100644 index 00000000000..61083aa8444 --- /dev/null +++ b/dbt_subprojects/tokens/models/tokens/boba/_schema.yml @@ -0,0 +1,21 @@ +version: 2 + +models: + - name: tokens_boba_erc20 + meta: + blockchain: boba + sector: tokens + project: erc20 + contributors: hosuke + config: + tags: ['table', 'erc20', 'boba'] + description: "ERC20 Token Addresses, Symbols and Decimals on Boba Network" + columns: + - name: contract_address + description: "ERC20 token contract address" + data_tests: + - unique + - name: symbol + description: "ERC20 token symbol" + - name: decimals + description: "Number of decimals, refers to how divisible an ERC20 token can be" diff --git a/dbt_subprojects/tokens/models/tokens/boba/tokens_boba_erc20.sql b/dbt_subprojects/tokens/models/tokens/boba/tokens_boba_erc20.sql new file mode 100644 index 00000000000..4d812cedd8e --- /dev/null +++ b/dbt_subprojects/tokens/models/tokens/boba/tokens_boba_erc20.sql @@ -0,0 +1,21 @@ +{{ + config( + schema = 'tokens_boba' + ,alias = 'erc20' + ,tags = ['static'] + ,materialized = 'table' + ) +}} + +SELECT + contract_address + , symbol + , decimals +FROM (VALUES + (0xa18bf3994c0cc6e3b63ac420308e5383f53120d7, 'BOBA', 18) + , (0xdeaddeaddeaddeaddeaddeaddeaddeaddead0000, 'ETH', 18) + , (0x66a2a913e447d6b4bf33efbec43aaef87890fbbc, 'USDC', 6) + , (0x5de1677344d3cb0d7d465c10b72a8f60699c062d, 'USDT', 6) + , (0xf74195bb8a5cf652411867c5c2c5b8c2a402be35, 'DAI', 18) + , (0xd203de32170130082896b4111edf825a4774c18e, 'WETH', 18) +) as temp (contract_address, symbol, decimals) diff --git a/dbt_subprojects/tokens/models/tokens/tokens_erc20.sql b/dbt_subprojects/tokens/models/tokens/tokens_erc20.sql index c50255ecaf7..4371252253b 100644 --- a/dbt_subprojects/tokens/models/tokens/tokens_erc20.sql +++ b/dbt_subprojects/tokens/models/tokens/tokens_erc20.sql @@ -10,6 +10,7 @@ ,"base" ,"blast" ,"bnb" + ,"boba" ,"celo" ,"ethereum" ,"fantom" @@ -71,6 +72,7 @@ ,'tokens_tron': {'blockchain': 'tron', 'model': ref('tokens_tron_erc20')} ,'tokens_ronin': {'blockchain': 'ronin', 'model': ref('tokens_ronin_erc20')} ,'tokens_bob': {'blockchain': 'bob', 'model': ref('tokens_bob_erc20')} + ,'tokens_boba': {'blockchain': 'boba', 'model': ref('tokens_boba_erc20')} } %} with automated_source as ( diff --git a/sources/_base_sources/evm/boba_base_sources.yml b/sources/_base_sources/evm/boba_base_sources.yml new file mode 100644 index 00000000000..c0877ed87ef --- /dev/null +++ b/sources/_base_sources/evm/boba_base_sources.yml @@ -0,0 +1,158 @@ +version: 2 + +sources: + # Boba Tables + - name: boba + description: "raw tables for the chain" + + tables: + - name: transactions + meta: + docs_slug: /evm/boba/raw/transactions + short_description: The transactions table contains detailed information about transactions on the network. + description: '{{ doc("boba_transactions_doc") }}' + + columns: + - &block_date + name: block_date + description: "The UTC date of the block in which this transaction was included" + - &block_time + name: block_time + description: "The exact UTC timestamp when the block containing this transaction was added to the chain" + - &block_number + name: block_number + description: "The number of the block containing this transaction" + - &block_hash + name: block_hash + description: "The hash of the block containing this transaction" + - name: index + description: "The index position of the transaction within its block" + - name: hash + description: "The transaction hash" + - name: from + description: "The sending address" + - name: to + description: "The receiving address" + - name: value + description: "The value transferred in wei" + - name: gas_limit + description: "The maximum amount of gas units that can be consumed by the transaction" + - name: gas_price + description: "The price per unit of gas in wei" + - name: gas_used + description: "The actual amount of gas used for the transaction" + - name: nonce + description: "The number of transactions sent from this address before this one" + - name: success + description: "Whether the transaction was successful (1) or failed (0)" + + - name: traces + meta: + docs_slug: /evm/boba/raw/traces + short_description: The traces table contains information about traces on the network. + description: '{{ doc("boba_traces_doc") }}' + + columns: + - *block_number + - *block_time + - name: tx_hash + description: "The hash of the transaction this trace belongs to" + - name: from + description: "Address where the trace call originated from" + - name: to + description: "Address where the trace call was made to" + - name: value + description: "Value transferred in the trace in wei" + - name: gas + description: "Gas provided for the trace call" + - name: input + description: "The data sent along with the trace call" + - name: output + description: "The data returned from the trace call" + - name: type + description: "The type of trace (call, create, suicide, reward)" + - name: error + description: "Error message if the trace failed" + + - name: logs + meta: + docs_slug: /evm/boba/raw/logs + short_description: The `boba.logs` table contains information about event logs emitted by smart contracts on the boba blockchain. + description: '{{ doc("boba_logs_doc") }}' + + columns: + - *block_number + - *block_time + - name: tx_hash + description: "The hash of the transaction that emitted this log" + - name: contract_address + description: "The address of the contract that emitted this log" + - name: topic0 + description: "The first topic (typically the event signature)" + - name: topic1 + description: "The second topic (if any)" + - name: topic2 + description: "The third topic (if any)" + - name: topic3 + description: "The fourth topic (if any)" + - name: data + description: "The data field of the log" + - name: index + description: "The index of the log within its transaction" + + - name: contracts + meta: + docs_slug: /evm/boba/raw/contracts + short_description: The `boba.contracts` table tracks decoded contracts on boba, including associated metadata such as namespace, name, address, ABI. + description: '{{ doc("boba_contracts_doc") }}' + + columns: + - name: address + description: "The contract address" + - name: bytecode + description: "The contract bytecode" + - name: name + description: "The name of the contract" + - name: namespace + description: "The namespace the contract belongs to" + - name: abi + description: "The contract ABI" + + # ERC Transfer Tables + - name: erc20_boba + description: "Transfer events for ERC20 tokens on boba" + tables: + - name: evt_transfer + columns: + - *block_number + - *block_time + - name: contract_address + description: "The address of the ERC20 token contract" + - name: from + description: "Address tokens are transferred from" + - name: to + description: "Address tokens are transferred to" + - name: value + description: "Amount of tokens transferred" + + - name: erc1155_boba + description: "events related to ERC1155 tokens" + tables: + - name: evt_transfersingle + meta: + short_description: "Single transfer events for ERC1155 tokens" + columns: + - *block_number + - *block_time + - name: contract_address + description: "The address of the ERC1155 token contract" + - name: operator + description: "Address approved to make the transfer" + - name: from + description: "Address tokens are transferred from" + - name: to + description: "Address tokens are transferred to" + - name: id + description: "ID of the token" + - name: value + description: "Amount of tokens transferred" diff --git a/sources/_base_sources/evm/boba_docs_block.md b/sources/_base_sources/evm/boba_docs_block.md new file mode 100644 index 00000000000..7f2eccbc9a2 --- /dev/null +++ b/sources/_base_sources/evm/boba_docs_block.md @@ -0,0 +1,75 @@ +{% docs boba_transactions_doc %} + +The `boba.transactions` table contains detailed information about transactions on the boba blockchain. It includes: + +- Block information: number, timestamp, hash +- Transaction details: hash, from_address, to_address, value +- Gas data: gas_price, gas_limit, gas_used +- Status: success or failure +- Input data for contract interactions +- Nonce +- Transaction type + +This table is used for analyzing transaction patterns, gas usage, value transfers, and overall network activity on boba. + +{% enddocs %} + +{% docs boba_traces_doc %} + +The `boba.traces` table contains records of execution steps for transactions on the boba blockchain. Each trace represents an atomic operation that modifies the state of the Ethereum Virtual Machine (EVM). Key components include: + +- Transaction hash +- Block number and timestamp +- From and to addresses +- Value transferred +- Input data +- Call type (e.g., CALL, DELEGATECALL, CREATE) +- Gas information +- Error messages (if any) + +This table is essential for: +- Analyzing internal transactions +- Debugging smart contract interactions +- Tracking value flows through complex transactions +- Understanding contract creation and deployment + +{% enddocs %} + +{% docs boba_logs_doc %} + +The `boba.logs` table contains information about event logs emitted by smart contracts on the boba blockchain. It includes: + +- Block information: number, timestamp +- Transaction hash +- Contract address (emitting the event) +- Topic0 (event signature) +- Additional topics (indexed parameters) +- Data field (non-indexed parameters) +- Log index + +This table is crucial for: +- Tracking on-chain events +- Monitoring contract activity +- Analyzing token transfers +- Following protocol-specific events + +{% enddocs %} + +{% docs boba_contracts_doc %} + +The `boba.contracts` table tracks decoded contracts on boba, including: + +- Contract address +- Bytecode +- Contract name +- Namespace +- ABI +- Creation details + +This table is used for: +- Contract verification +- Smart contract analysis +- Protocol research +- Development and debugging + +{% enddocs %} From 1c8668d95fe8e78d9c596c7a23ff86b058449822 Mon Sep 17 00:00:00 2001 From: Huang Geyang Date: Fri, 29 Nov 2024 01:21:58 +0800 Subject: [PATCH 2/7] Fix evm info: --- dbt_subprojects/daily_spellbook/models/evms/evms_info.sql | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dbt_subprojects/daily_spellbook/models/evms/evms_info.sql b/dbt_subprojects/daily_spellbook/models/evms/evms_info.sql index f9063d5c36e..991164f9456 100644 --- a/dbt_subprojects/daily_spellbook/models/evms/evms_info.sql +++ b/dbt_subprojects/daily_spellbook/models/evms/evms_info.sql @@ -64,7 +64,7 @@ FROM ( , (1101, 'zkevm', 'Polygon zkEVM', 'Layer 2', 'ZK Rollup', 'ETH', 0x4f9a0e7fd2bf6067db6994cf12e4495df938e6e9, 'https://zkevm.polygonscan.com/', timestamp '2023-03-24 05:30', 'Polygon', 'Ethereum', 'Ethereum', true) , (1088, 'metis_andromeda', 'Metis Andromeda', NULL, NULL, NULL, NULL, 'https://andromeda-explorer.metis.io/', timestamp '2021-11-18 22:19', 'Optimistic Virtual Machine', 'Ethereum', 'Ethereum', false) , (59144, 'linea', 'Linea', 'Layer 2', 'ZK Rollup', 'ETH', 0xe5d7c2a44ffddf6b295a15c148167daaaf5cf34f, 'https://lineascan.build/', timestamp '2023-07-06 13:15', NULL, 'Ethereum Blobs', 'Ethereum', true) - , (288, 'boba', 'Boba Network', 'Layer 2', 'Optimistic Rollup', 'ETH', 0xdeaddeaddeaddeaddeaddeaddeaddeaddead0000, 'https://bobascan.com/', timestamp '2021-09-20 00:00', 'OP Stack', 'Ethereum', 'Ethereum', true) + , (288, 'boba', 'Boba Network', 'Layer 2', 'Optimistic Rollup', 'ETH', 0x4200000000000000000000000000000000000006, 'https://bobascan.com/', timestamp '2021-10-28 05:03', 'OP Stack', 'Ethereum', 'Ethereum', true) , (7700, 'canto', 'Canto', 'Layer 2', NULL, 'ETH', NULL, 'https://evm.explorer.canto.io/', timestamp '2022-07-26 19:27', NULL, 'Ethereum', 'Ethereum', false) , (420, 'optimism_goerli', 'Optimism Goerli', 'Testnet', 'Optimistic Rollup', 'GTH', 0x4200000000000000000000000000000000000006, 'https://optimism-goerli.blockscout.com/', timestamp '2022-06-09 16:55', 'OP Stack', 'Goerli', 'Goerli', false) , (1313161554, 'aurora', 'Aurora', 'Layer 2', NULL, 'ETH', 0xC9BdeEd33CD01541e1eeD10f90519d2C06Fe3feB, 'https://explorer.aurora.dev/', timestamp '2020-07-21 21:50:11', NULL, NULL, NULL, false) From d5ae4768e544e3604b8fb9cfd8d44b0d4c26b554 Mon Sep 17 00:00:00 2001 From: Huang Geyang Date: Fri, 29 Nov 2024 01:25:43 +0800 Subject: [PATCH 3/7] Add native token --- dbt_subprojects/tokens/models/prices/prices_native_tokens.sql | 1 + dbt_subprojects/tokens/models/tokens/_schema.yml | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/dbt_subprojects/tokens/models/prices/prices_native_tokens.sql b/dbt_subprojects/tokens/models/prices/prices_native_tokens.sql index f86c6a37a71..978c1669a8c 100644 --- a/dbt_subprojects/tokens/models/prices/prices_native_tokens.sql +++ b/dbt_subprojects/tokens/models/prices/prices_native_tokens.sql @@ -25,6 +25,7 @@ FROM ('avax-avalanche', null, 'AVAX', null, null), ('bch-bitcoin-cash', null, 'BCH', null, null), ('bnb-binance-coin', null, 'BNB', null, null), + ('boba-boba-network', null, 'BOBA', null, null), ('bsv-bitcoin-sv', null, 'BSV', null, null), ('btc-bitcoin', null, 'BTC', null, null), ('celo-celo', null, 'CELO', null, null), diff --git a/dbt_subprojects/tokens/models/tokens/_schema.yml b/dbt_subprojects/tokens/models/tokens/_schema.yml index 5b5784747a1..bb64ce8a7d8 100644 --- a/dbt_subprojects/tokens/models/tokens/_schema.yml +++ b/dbt_subprojects/tokens/models/tokens/_schema.yml @@ -3,11 +3,11 @@ version: 2 models: - name: tokens_erc20 meta: - blockchain: arbitrum, avalanche_c, bnb, ethereum, gnosis, mantle, optimism, fantom, polygon, base, blast, sepolia, sei, nova, worldchain, kaia, ronin + blockchain: arbitrum, avalanche_c, bnb, ethereum, gnosis, mantle, optimism, fantom, polygon, base, blast, sepolia, sei, nova, worldchain, kaia, ronin, boba sector: tokens contributors: hildobby, 0xManny, dot2dotseurat, soispoke, mtitus6, wuligy, angus_1, Henrystats, viniabussafi, jeff-dude, rantum, hosuke config: - tags: ['tokens','erc20', 'arbitrum', 'avalanche_c', 'bnb', 'ethereum', 'gnosis', 'mantle', 'optimism', 'fantom', 'base', 'blast', 'sei', 'nova', 'linea', 'worldchain', 'kaia', 'ronin'] + tags: ['tokens','erc20', 'arbitrum', 'avalanche_c', 'bnb', 'ethereum', 'gnosis', 'mantle', 'optimism', 'fantom', 'base', 'blast', 'sei', 'nova', 'linea', 'worldchain', 'kaia', 'ronin', 'boba'] description: > Crosschain ERC20 tokens data_tests: From 6ee246e2cae8f276846b30459cf36f664bae09d1 Mon Sep 17 00:00:00 2001 From: Huang Geyang Date: Fri, 29 Nov 2024 01:27:47 +0800 Subject: [PATCH 4/7] Update token checker --- scripts/token_checker.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/scripts/token_checker.py b/scripts/token_checker.py index 8f0c4f1cfcf..16da52aaacc 100644 --- a/scripts/token_checker.py +++ b/scripts/token_checker.py @@ -32,7 +32,8 @@ def __init__(self): "zkevm": "eth-ethereum", "ronin": "ron-ronin-token", "cardano": "ada-cardano", - "tron": "trx-tron" + "tron": "trx-tron", + "boba": "eth-ethereum" } self.tokens_by_id = self.get_tokens() self.contracts_by_chain = self.get_contracts() From 0550a5ef25d856546c1c198460dff5f51e177eeb Mon Sep 17 00:00:00 2001 From: Huang Geyang Date: Fri, 29 Nov 2024 13:20:10 +0800 Subject: [PATCH 5/7] Remove not existed transfers sources --- .../_base_sources/evm/boba_base_sources.yml | 39 ------------------- 1 file changed, 39 deletions(-) diff --git a/sources/_base_sources/evm/boba_base_sources.yml b/sources/_base_sources/evm/boba_base_sources.yml index c0877ed87ef..fa5d37f3e50 100644 --- a/sources/_base_sources/evm/boba_base_sources.yml +++ b/sources/_base_sources/evm/boba_base_sources.yml @@ -117,42 +117,3 @@ sources: description: "The namespace the contract belongs to" - name: abi description: "The contract ABI" - - # ERC Transfer Tables - - name: erc20_boba - description: "Transfer events for ERC20 tokens on boba" - tables: - - name: evt_transfer - columns: - - *block_number - - *block_time - - name: contract_address - description: "The address of the ERC20 token contract" - - name: from - description: "Address tokens are transferred from" - - name: to - description: "Address tokens are transferred to" - - name: value - description: "Amount of tokens transferred" - - - name: erc1155_boba - description: "events related to ERC1155 tokens" - tables: - - name: evt_transfersingle - meta: - short_description: "Single transfer events for ERC1155 tokens" - columns: - - *block_number - - *block_time - - name: contract_address - description: "The address of the ERC1155 token contract" - - name: operator - description: "Address approved to make the transfer" - - name: from - description: "Address tokens are transferred from" - - name: to - description: "Address tokens are transferred to" - - name: id - description: "ID of the token" - - name: value - description: "Amount of tokens transferred" From a398af96d1497a7cbb0f5d707f840dfdaff4ffca Mon Sep 17 00:00:00 2001 From: Huang Geyang Date: Tue, 3 Dec 2024 22:07:53 +0800 Subject: [PATCH 6/7] Match raw data schema --- .../_base_sources/evm/boba_base_sources.yml | 334 ++++++++++++++---- 1 file changed, 275 insertions(+), 59 deletions(-) diff --git a/sources/_base_sources/evm/boba_base_sources.yml b/sources/_base_sources/evm/boba_base_sources.yml index fa5d37f3e50..4d9ab561dd0 100644 --- a/sources/_base_sources/evm/boba_base_sources.yml +++ b/sources/_base_sources/evm/boba_base_sources.yml @@ -13,107 +13,323 @@ sources: description: '{{ doc("boba_transactions_doc") }}' columns: - - &block_date - name: block_date - description: "The UTC date of the block in which this transaction was included" - - &block_time - name: block_time + - name: block_time description: "The exact UTC timestamp when the block containing this transaction was added to the chain" - - &block_number - name: block_number - description: "The number of the block containing this transaction" - - &block_hash - name: block_hash - description: "The hash of the block containing this transaction" - - name: index - description: "The index position of the transaction within its block" - - name: hash - description: "The transaction hash" - - name: from - description: "The sending address" - - name: to - description: "The receiving address" + - name: block_number + description: "The sequential number of the block containing this transaction" - name: value - description: "The value transferred in wei" + description: "Amount of ETH sent from sender to recipient (if any), measured in wei (1 ETH = 10^18 wei)" - name: gas_limit - description: "The maximum amount of gas units that can be consumed by the transaction" + description: "Maximum number of gas units this transaction can consume" - name: gas_price - description: "The price per unit of gas in wei" + description: "Price per unit of gas for this transaction, denominated in wei (1 gwei = 10^9 wei)" - name: gas_used - description: "The actual amount of gas used for the transaction" + description: "Actual amount of gas units consumed by this transaction's execution" + - name: max_fee_per_gas + description: "Maximum total amount per gas unit the initiator is willing to pay, including boba fee and priority fee" + - name: max_priority_fee_per_gas + description: "Maximum additional fee per gas unit the initiator is willing to pay as a tip to validators" + - name: priority_fee_per_gas + description: "Actual priority fee per gas paid to validators" - name: nonce - description: "The number of transactions sent from this address before this one" + description: "Sequential number representing the count of transactions sent from the sender's address" + - name: index + description: "Position of this transaction within its containing block" - name: success - description: "Whether the transaction was successful (1) or failed (0)" + description: "Boolean flag indicating whether the transaction executed successfully (true) or failed (false)" + - name: from + description: "Address of the account that initiated and signed this transaction" + - name: to + description: "Address of the recipient account or contract for this transaction" + - name: block_hash + description: "Unique 256-bit identifier (hash) of the block containing this transaction" + - name: data + description: "Input data for the transaction, which may include function calls or contract interaction data" + - name: hash + description: "Unique 256-bit identifier (hash) of this specific transaction" + - name: type + description: "Type of transaction (e.g., legacy, EIP-1559) indicating its structure and fee mechanism" + - name: access_list + description: "List of addresses and storage keys the transaction plans to access, used for gas optimization in EIP-2930 transactions" + - name: chain_id + description: "Chain identifier for the network" + - name: block_date + description: "The UTC date of the block in which this transaction was included" + - name: l1_gas_used + description: "The gas used on Ethereum L1 to publish this L2 transaction" + - name: l1_gas_price + description: "Gas price on the L1 at the time of L2 transaction submission" + - name: l1_fee + description: "L1 Fees that the network pays to submit L2 transactions to Ethereum L1" + - name: l1_fee_scalar + description: "Scalar value used to calculate L1 fee, covering potential changes in L1 gas price and network costs" + - name: l1_block_number + description: "Block number on the L1 where this L2 transaction was batch submitted" + - name: l1_timestamp + description: "The timestamp when the L2 transaction was batched and confirmed on the L1" + - name: l1_tx_origin + description: "L1 transaction origin address for L2 transactions that were initiated on L1" - name: traces meta: docs_slug: /evm/boba/raw/traces short_description: The traces table contains information about traces on the network. description: '{{ doc("boba_traces_doc") }}' - columns: - - *block_number - - *block_time + - name: block_time + description: "The exact UTC timestamp when the block containing this transaction was added to the chain" + - name: block_number + description: "The sequential number of the block containing this transaction" + - name: value + description: "Amount of ETH sent from sender to recipient (if any), measured in wei (1 ETH = 10^18 wei)" + - name: gas + description: "Amount of gas allocated for this trace's execution (including gas used by child traces)" + - name: gas_used + description: "Actual amount of gas consumed by this trace's execution" + - name: block_hash + description: "Unique 256-bit identifier (hash) of the block containing this transaction" + - name: success + description: "Boolean flag indicating whether this specific trace was executed successfully (true) or reverted (false)" + - name: tx_index + description: "Position of the parent transaction within its containing block" + - name: tx_from + description: "Address that initiated the parent transaction" + - name: tx_to + description: "Recipient address of the parent transaction" + - name: sub_traces + description: "Number of child traces spawned by this trace during execution" + - name: error + description: "Error message or code if the trace execution failed" + - name: tx_success + description: "Boolean flag indicating whether the parent transaction of this trace was successful" - name: tx_hash - description: "The hash of the transaction this trace belongs to" + description: "Unique 256-bit identifier (hash) of the parent transaction" - name: from - description: "Address where the trace call originated from" + description: "Address that sent this trace" - name: to - description: "Address where the trace call was made to" - - name: value - description: "Value transferred in the trace in wei" - - name: gas - description: "Gas provided for the trace call" + description: "Address that received this trace" + - name: trace_address + description: "Array indicating the exact position of this trace within the trace tree of the transaction" + - name: type + description: "Type of trace (e.g., call, create, suicide) indicating the nature of the operation" + - name: address + description: "If this trace is a contract creation, this is the address of the deployed contract" + - name: code + description: "If this trace is a contract creation, this is the deployed bytecode of contract" + - name: call_type + description: "Type of call made in this trace (e.g., call, delegatecall, staticcall)" - name: input - description: "The data sent along with the trace call" + description: "Call data provided to this trace, often containing function signatures and parameters" - name: output - description: "The data returned from the trace call" - - name: type - description: "The type of trace (call, create, suicide, reward)" - - name: error - description: "Error message if the trace failed" + description: "Data returned by this trace after execution" + - name: refund_address + description: "Address designated to receive any gas refund from this trace" + - name: revert_reason + description: "Reason for reversion if the trace was reverted" + - name: block_date + description: "The UTC date of the block in which this transaction was included" + + - name: traces_decoded + meta: + docs_slug: /evm/boba/decoded/traces_decoded + short_description: The `boba.traces_decoded` table contains decoded traces, including additional information based on submitted smart contracts and their ABIs. + description: '{{ doc("boba_traces_decoded_doc") }}' + columns: + - name: block_date + description: "The UTC date of the block in which this transaction was included" + - name: block_time + description: "The exact UTC timestamp when the block containing this transaction was added to the chain" + - name: block_number + description: "The sequential number of the block containing this transaction" + - name: namespace + description: "Categorical grouping or project name associated with the contract" + - name: contract_name + description: "Human-readable name of the smart contract involved in this trace" + - name: to + description: "Address of the contract or account receiving this trace" + - name: trace_address + description: "Array indicating the exact position of this trace within the trace tree of the transaction" + - name: tx_hash + description: "Unique 256-bit identifier (hash) of the parent transaction" + - name: tx_from + description: "Address that initiated the parent transaction" + - name: tx_to + description: "Recipient address of the parent transaction" + - name: signature + description: "Function signature hash" + - name: function_name + description: "Name of the specific contract function called in this trace" - name: logs meta: docs_slug: /evm/boba/raw/logs short_description: The `boba.logs` table contains information about event logs emitted by smart contracts on the boba blockchain. description: '{{ doc("boba_logs_doc") }}' - columns: - - *block_number - - *block_time + - name: block_date + description: "The UTC date of the block in which this transaction was included" + - name: block_time + description: "The exact UTC timestamp when the block containing this transaction was added to the chain" + - name: block_number + description: "The sequential number of the block containing this transaction" + - name: block_hash + description: "Unique 256-bit identifier (hash) of the block containing this transaction" + - name: tx_index + description: "Position of the parent transaction within its containing block" - name: tx_hash - description: "The hash of the transaction that emitted this log" + description: "Unique 256-bit identifier (hash) of the parent transaction" - name: contract_address - description: "The address of the contract that emitted this log" + description: "Address of the smart contract that emitted this log" - name: topic0 - description: "The first topic (typically the event signature)" + description: "First 32-byte topic, typically containing the event signature hash" - name: topic1 - description: "The second topic (if any)" + description: "Second 32-byte topic, often containing indexed event parameters" - name: topic2 - description: "The third topic (if any)" + description: "Third 32-byte topic, often containing indexed event parameters" - name: topic3 - description: "The fourth topic (if any)" + description: "Fourth 32-byte topic, often containing indexed event parameters" - name: data - description: "The data field of the log" + description: "ABI-encoded data of the log, containing non-indexed event parameters" + - name: index + description: "Position of this log within the block" + - name: tx_from + description: "Address that initiated the transaction which created this log" + - name: tx_to + description: "Recipient address of the transaction which created this log" + + - name: logs_decoded + meta: + docs_slug: /evm/boba/decoded/logs_decoded + short_description: The `boba.logs_decoded` table contains a subset of all logs for which Dune has the ABI. + description: '{{ doc("boba_logs_decoded_doc") }}' + columns: + - name: block_date + description: "The UTC date of the block in which this transaction was included" + - name: block_time + description: "The exact UTC timestamp when the block containing this transaction was added to the chain" + - name: block_number + description: "The sequential number of the block containing this transaction" + - name: namespace + description: "Categorical grouping or project name associated with the contract" + - name: contract_name + description: "Human-readable name of the smart contract" + - name: contract_address + description: "Address of the smart contract that emitted this log" + - name: tx_hash + description: "Unique 256-bit identifier (hash) of the parent transaction" + - name: tx_from + description: "Address that initiated the transaction which created this log" + - name: tx_to + description: "Recipient address of the transaction which created this log" - name: index - description: "The index of the log within its transaction" + description: "Position of this log within the block" + - name: signature + description: "Event signature hash" + - name: event_name + description: "Human-readable name of the event" - name: contracts meta: docs_slug: /evm/boba/raw/contracts - short_description: The `boba.contracts` table tracks decoded contracts on boba, including associated metadata such as namespace, name, address, ABI. + short_description: The `boba.contracts` table tracks decoded contracts on boba, including associated metadata such as namespace, name, address, ABI. It is populated manually by the Dune Community via [contract decoding submissions](https://dune.com/contracts/new). description: '{{ doc("boba_contracts_doc") }}' - columns: - name: address - description: "The contract address" + description: "Unique address of the contract on the blockchain" - name: bytecode - description: "The contract bytecode" + description: "Compiled bytecode of the contract" - name: name - description: "The name of the contract" + description: "Human-readable name of the contract" - name: namespace - description: "The namespace the contract belongs to" + description: "Project or protocol name associated with the contract" - name: abi - description: "The contract ABI" + description: "JSON representation of the contract's Application Binary Interface" + - name: created_at + description: "Timestamp when this contract entry was created in the table" + + - name: contracts_submitted + meta: + docs_slug: /evm/boba/decoded/contracts_submitted + short_description: The `boba.contracts_submitted` table contains information about contracts submitted for decoding. + description: '{{ doc("boba_contracts_submitted_doc") }}' + columns: + - name: address + description: "Address of the submitted contract" + - name: namespace + description: "Project or protocol name associated with the contract" + - name: name + description: "Name of the submitted contract" + - name: submitted_at + description: "Timestamp when the contract was submitted for decoding" + - name: submitted_by + description: "Address or identifier of the user who submitted the contract" + + - name: creation_traces + meta: + docs_slug: /evm/boba/raw/creation_traces + short_description: The `boba.creation_traces` table contains information about contract creation traces. + description: '{{ doc("boba_creation_traces_doc") }}' + columns: + - name: block_date + description: "The UTC date of the block in which this transaction was included" + - name: block_time + description: "The exact UTC timestamp when the block containing this transaction was added to the chain" + - name: block_number + description: "The sequential number of the block containing this transaction" + - name: tx_hash + description: "Unique 256-bit identifier (hash) of the parent transaction" + - name: address + description: "Address of the created contract" + - name: from + description: "Address that created the contract" + - name: code + description: "Contract bytecode" + - name: success + description: "Whether the contract creation was successful" + - name: block_month + description: "The month of the block date" + + - name: blocks + meta: + docs_slug: /evm/boba/raw/blocks + short_description: The `boba.blocks` table contains information about blocks on the boba blockchain. + description: '{{ doc("boba_blocks_doc") }}' + columns: + - name: block_date + description: "The UTC date of the block in which this transaction was included" + - name: block_time + description: "The exact UTC timestamp when the block containing this transaction was added to the chain" + - name: block_number + description: "The sequential number of the block containing this transaction" + - name: block_hash + description: "Unique 256-bit identifier (hash) of the block containing this transaction" + - name: parent_hash + description: "Hash of the parent block" + - name: nonce + description: "Block nonce value" + - name: difficulty + description: "Block mining difficulty" + - name: gas_limit + description: "Maximum gas allowed in this block" + - name: gas_used + description: "Total gas used by all transactions in this block" + - name: miner + description: "Address of the miner/validator who produced this block" + - name: size + description: "Size of the block in bytes" + - name: total_difficulty + description: "Total chain difficulty up to this block" + - name: base_fee_per_gas + description: "Base fee per gas in this block (EIP-1559)" + - name: state_root + description: "Root hash of the state trie after this block" + - name: transactions_root + description: "Root hash of the transactions trie of this block" + - name: receipts_root + description: "Root hash of the receipts trie of this block" + - name: blob_gas_used + description: "Total blob gas used in this block" + - name: excess_blob_gas + description: "Excess blob gas in this block" + - name: parent_beacon_block_root + description: "Root hash of the parent beacon block" From 5c8ad9c6e175e952b59a7cbf13df298192d1f195 Mon Sep 17 00:00:00 2001 From: Huang Geyang Date: Tue, 3 Dec 2024 22:12:08 +0800 Subject: [PATCH 7/7] Rewrite boba docs block --- sources/_base_sources/evm/boba_docs_block.md | 137 +++++++++++++++---- 1 file changed, 112 insertions(+), 25 deletions(-) diff --git a/sources/_base_sources/evm/boba_docs_block.md b/sources/_base_sources/evm/boba_docs_block.md index 7f2eccbc9a2..90a77a0192c 100644 --- a/sources/_base_sources/evm/boba_docs_block.md +++ b/sources/_base_sources/evm/boba_docs_block.md @@ -1,75 +1,162 @@ {% docs boba_transactions_doc %} -The `boba.transactions` table contains detailed information about transactions on the boba blockchain. It includes: +The `boba.transactions` table contains detailed information about transactions on the Boba blockchain. It includes: - Block information: number, timestamp, hash - Transaction details: hash, from_address, to_address, value -- Gas data: gas_price, gas_limit, gas_used +- Gas data: gas_price, gas_limit, gas_used, max_fee_per_gas, priority_fee_per_gas +- L1 data: l1_gas_used, l1_gas_price, l1_fee, l1_block_number, l1_timestamp - Status: success or failure - Input data for contract interactions -- Nonce -- Transaction type +- Nonce and chain_id +- Transaction type and access list -This table is used for analyzing transaction patterns, gas usage, value transfers, and overall network activity on boba. +This table is used for analyzing transaction patterns, gas usage, value transfers, L1-L2 interactions, and overall network activity on Boba. {% enddocs %} {% docs boba_traces_doc %} -The `boba.traces` table contains records of execution steps for transactions on the boba blockchain. Each trace represents an atomic operation that modifies the state of the Ethereum Virtual Machine (EVM). Key components include: +The `boba.traces` table contains records of execution steps for transactions on the Boba blockchain. Each trace represents an atomic operation that modifies the state of the Ethereum Virtual Machine (EVM). Key components include: -- Transaction hash -- Block number and timestamp +- Transaction hash and block information - From and to addresses - Value transferred -- Input data +- Gas metrics (gas, gas_used) +- Input and output data - Call type (e.g., CALL, DELEGATECALL, CREATE) -- Gas information -- Error messages (if any) +- Error information and revert reasons +- Trace address for nested calls +- L1-L2 specific information This table is essential for: - Analyzing internal transactions - Debugging smart contract interactions - Tracking value flows through complex transactions - Understanding contract creation and deployment +- Monitoring L1-L2 message passing + +{% enddocs %} + +{% docs boba_traces_decoded_doc %} + +The `boba.traces_decoded` table contains a subset of decoded traces from the Boba blockchain dependent on submitted smart contracts and their ABIs. It includes: + +- Block information and transaction details +- Contract name and namespace +- Decoded function names and signatures +- Trace address for execution path tracking +- Transaction origin and destination +- Function parameters (when available) + +This table is used for high level analysis of smart contract interactions. For fully decoded function calls and parameters, refer to protocol-specific decoded tables. {% enddocs %} {% docs boba_logs_doc %} -The `boba.logs` table contains information about event logs emitted by smart contracts on the boba blockchain. It includes: +The `boba.logs` table contains event logs emitted by smart contracts on the Boba blockchain. It includes: -- Block information: number, timestamp -- Transaction hash +- Block information: number, timestamp, hash +- Transaction details: hash, index, from, to - Contract address (emitting the event) - Topic0 (event signature) - Additional topics (indexed parameters) - Data field (non-indexed parameters) -- Log index +- Log index and transaction index This table is crucial for: - Tracking on-chain events - Monitoring contract activity - Analyzing token transfers - Following protocol-specific events +- Understanding L1-L2 interactions + +{% enddocs %} + +{% docs boba_logs_decoded_doc %} + +The `boba.logs_decoded` table contains a subset of decoded logs from the Boba blockchain dependent on submitted smart contracts and their ABIs. It includes: + +- Block and transaction information +- Contract details (name, namespace, address) +- Decoded event names and signatures +- Transaction origin and destination +- Event parameters (when available) + +This table is used for high level analysis of smart contract events. For fully decoded events and parameters, refer to protocol-specific decoded tables. + +{% enddocs %} + +{% docs boba_blocks_doc %} + +The `boba.blocks` table contains information about Boba blocks. It provides essential data about each block in the Boba blockchain, including: + +- Block identifiers and timestamps +- Gas metrics and size +- Consensus information (difficulty, nonce) +- State roots and receipts +- L2-specific block data +- Parent block information + +This table is fundamental for analyzing: +- Blockchain structure and growth +- Block production rates +- Network performance +- L1-L2 block relationships +- Chain reorganizations {% enddocs %} {% docs boba_contracts_doc %} -The `boba.contracts` table tracks decoded contracts on boba, including: +The `boba.contracts` table tracks decoded contracts on Boba, including: -- Contract address -- Bytecode -- Contract name -- Namespace -- ABI -- Creation details +- Contract address and bytecode +- Contract name and namespace +- Complete ABI +- Creation timestamp +- Verification status This table is used for: -- Contract verification -- Smart contract analysis -- Protocol research +- Contract verification and analysis +- Protocol research and monitoring - Development and debugging +- Smart contract security analysis + +{% enddocs %} + +{% docs boba_contracts_submitted_doc %} + +The `boba.contracts_submitted` table tracks contracts submitted for decoding on Boba. It includes: + +- Contract address +- Submission metadata (timestamp, submitter) +- Contract name and namespace +- Verification status + +This table helps track the progress of contract verification and community contributions to the Boba ecosystem. + +{% enddocs %} + +{% docs boba_creation_traces_doc %} + +The `boba.creation_traces` table contains data about contract creation events on the Boba blockchain. It includes: + +- Block information and timestamps +- Transaction details +- Creator's address +- Created contract address +- Deployed contract bytecode +- Creation success status +- Gas consumption + +This table is used for: +- Analyzing contract deployment patterns +- Tracking smart contract origins +- Monitoring protocol deployments +- Understanding contract creation costs + +It's essentially a filtered version of the `boba.traces` table where `type = create`. {% enddocs %}