upgrades (#27)

* upgrades

* adds unconfirmed blocks test
This commit is contained in:
Austin 2024-06-03 12:47:40 -04:00 committed by GitHub
parent 44d1c08d41
commit 9a6ac07aa5
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
20 changed files with 583 additions and 13 deletions

View File

@ -0,0 +1,9 @@
{{ config (
materialized = 'view',
tags = ['full_evm_test']
) }}
SELECT
*
FROM
{{ ref('silver_evm__confirmed_blocks') }}

View File

@ -0,0 +1,34 @@
version: 2
models:
- name: test_silver_evm__confirmed_blocks_full
tests:
- dbt_utils.unique_combination_of_columns:
combination_of_columns:
- TX_HASH
columns:
- name: BLOCK_NUMBER
tests:
- not_null
- dbt_expectations.expect_column_values_to_be_in_type_list:
column_type_list:
- NUMBER
- name: BLOCK_HASH
tests:
- not_null
- dbt_expectations.expect_column_values_to_match_regex:
regex: 0[xX][0-9a-fA-F]+
- name: TX_HASH
tests:
- not_null
- dbt_expectations.expect_column_values_to_match_regex:
regex: 0[xX][0-9a-fA-F]+
- name: _INSERTED_TIMESTAMP
tests:
- not_null
- dbt_expectations.expect_row_values_to_have_recent_data:
datepart: day
interval: 1
- dbt_expectations.expect_column_values_to_be_in_type_list:
column_type_list:
- TIMESTAMP_NTZ
- TIMESTAMP_LTZ

View File

@ -0,0 +1,23 @@
{{ config (
materialized = 'view',
tags = ['recent_evm_test']
) }}
WITH last_3_days AS (
SELECT
block_number
FROM
{{ ref("_evm_block_lookback") }}
)
SELECT
*
FROM
{{ ref('silver_evm__confirmed_blocks') }}
WHERE
block_number >= (
SELECT
block_number
FROM
last_3_days
)

View File

@ -0,0 +1,34 @@
version: 2
models:
- name: test_silver_evm__confirmed_blocks_recent
tests:
- dbt_utils.unique_combination_of_columns:
combination_of_columns:
- TX_HASH
columns:
- name: BLOCK_NUMBER
tests:
- not_null
- dbt_expectations.expect_column_values_to_be_in_type_list:
column_type_list:
- NUMBER
- name: BLOCK_HASH
tests:
- not_null
- dbt_expectations.expect_column_values_to_match_regex:
regex: 0[xX][0-9a-fA-F]+
- name: TX_HASH
tests:
- not_null
- dbt_expectations.expect_column_values_to_match_regex:
regex: 0[xX][0-9a-fA-F]+
- name: _INSERTED_TIMESTAMP
tests:
- not_null
- dbt_expectations.expect_row_values_to_have_recent_data:
datepart: hour
interval: 3
- dbt_expectations.expect_column_values_to_be_in_type_list:
column_type_list:
- TIMESTAMP_NTZ
- TIMESTAMP_LTZ

View File

@ -5,11 +5,6 @@ models:
- dbt_utils.unique_combination_of_columns:
combination_of_columns:
- TX_HASH
- fsc_utils.sequence_gaps:
partition_by:
- BLOCK_NUMBER
column_name: POSITION
where: BLOCK_TIMESTAMP < CURRENT_DATE - 1
columns:
- name: BLOCK_NUMBER
tests:

View File

@ -5,10 +5,6 @@ models:
- dbt_utils.unique_combination_of_columns:
combination_of_columns:
- TX_HASH
- fsc_utils.sequence_gaps:
partition_by:
- BLOCK_NUMBER
column_name: POSITION
columns:
- name: BLOCK_NUMBER
tests:

View File

@ -0,0 +1,83 @@
{{ config (
materialized = "view",
post_hook = fsc_utils.if_data_call_function_v2(
func = 'streamline.udf_bulk_rest_api_v2',
target = "{{this.schema}}.{{this.identifier}}",
params ={ "external_table" :"evm_blocks",
"sql_limit" :"25000",
"producer_batch_size" :"100000",
"worker_batch_size" :"10000",
"sql_source" :"{{this.identifier}}" }
),
tags = ['streamline_core_evm_history']
) }}
WITH last_3_days AS (
SELECT
block_number
FROM
{{ ref("_evm_block_lookback") }}
),
to_do AS (
SELECT
block_number
FROM
{{ ref("streamline__evm_blocks") }}
WHERE
(
block_number < (
SELECT
block_number
FROM
last_3_days
)
)
AND block_number IS NOT NULL
EXCEPT
SELECT
block_number
FROM
{{ ref("streamline__complete_evm_blocks") }}
WHERE
block_number < (
SELECT
block_number
FROM
last_3_days
)
),
ready_blocks AS (
SELECT
block_number
FROM
to_do
)
SELECT
block_number,
ROUND(
block_number,
-3
) :: INT AS partition_key,
{{ target.database }}.live.udf_api(
'POST',
'{Service}/{Authentication}',
OBJECT_CONSTRUCT(
'Content-Type',
'application/json'
),
OBJECT_CONSTRUCT(
'id',
block_number :: STRING,
'jsonrpc',
'2.0',
'method',
'eth_getBlockByNumber',
'params',
ARRAY_CONSTRUCT(utils.udf_int_to_hex(block_number), FALSE)),
'Vault/prod/sei/quicknode/mainnet'
) AS request
FROM
ready_blocks
ORDER BY
block_number DESC

View File

@ -0,0 +1,92 @@
{{ config (
materialized = "view",
post_hook = fsc_utils.if_data_call_function_v2(
func = 'streamline.udf_bulk_rest_api_v2',
target = "{{this.schema}}.{{this.identifier}}",
params ={ "external_table" :"evm_confirm_blocks",
"sql_limit" :"25000",
"producer_batch_size" :"10000",
"worker_batch_size" :"5000",
"sql_source" :"{{this.identifier}}" }
),
tags = ['streamline_core_evm_history']
) }}
WITH last_3_days AS (
SELECT
block_number
FROM
{{ ref("_evm_block_lookback") }}
),
look_back AS (
SELECT
block_number
FROM
{{ ref("_max_evm_block_by_hour") }}
qualify ROW_NUMBER() over (
ORDER BY
block_number DESC
) = 6
),
to_do AS (
SELECT
block_number
FROM
{{ ref("streamline__evm_blocks") }}
WHERE
block_number IS NOT NULL
AND block_number < (
SELECT
block_number
FROM
last_3_days
)
EXCEPT
SELECT
block_number
FROM
{{ ref("streamline__complete_evm_confirmed_blocks") }}
WHERE
block_number IS NOT NULL
AND block_number < (
SELECT
block_number
FROM
last_3_days
)
),
ready_blocks AS (
SELECT
block_number
FROM
to_do
)
SELECT
block_number,
ROUND(
block_number,
-3
) :: INT AS partition_key,
{{ target.database }}.live.udf_api(
'POST',
'{Service}/{Authentication}',
OBJECT_CONSTRUCT(
'Content-Type',
'application/json'
),
OBJECT_CONSTRUCT(
'id',
block_number :: STRING,
'jsonrpc',
'2.0',
'method',
'eth_getBlockByNumber',
'params',
ARRAY_CONSTRUCT(utils.udf_int_to_hex(block_number), FALSE)),
'Vault/prod/sei/quicknode/mainnet'
) AS request
FROM
ready_blocks
ORDER BY
block_number ASC

View File

@ -0,0 +1,84 @@
{{ config (
materialized = "view",
post_hook = fsc_utils.if_data_call_function_v2(
func = 'streamline.udf_bulk_rest_api_v2',
target = "{{this.schema}}.{{this.identifier}}",
params ={ "external_table" :"evm_receipts",
"sql_limit" :"25000",
"producer_batch_size" :"100000",
"worker_batch_size" :"10000",
"sql_source" :"{{this.identifier}}",
"exploded_key": tojson(["result"]) }
),
tags = ['streamline_core_evm_history']
) }}
WITH last_3_days AS (
SELECT
block_number
FROM
{{ ref("_evm_block_lookback") }}
),
to_do AS (
SELECT
block_number
FROM
{{ ref("streamline__evm_blocks") }}
WHERE
(
block_number < (
SELECT
block_number
FROM
last_3_days
)
)
AND block_number IS NOT NULL
EXCEPT
SELECT
block_number
FROM
{{ ref("streamline__complete_evm_receipts") }}
WHERE
block_number < (
SELECT
block_number
FROM
last_3_days
)
),
ready_blocks AS (
SELECT
block_number
FROM
to_do
)
SELECT
block_number,
ROUND(
block_number,
-3
) :: INT AS partition_key,
{{ target.database }}.live.udf_api(
'POST',
'{Service}/{Authentication}',
OBJECT_CONSTRUCT(
'Content-Type',
'application/json'
),
OBJECT_CONSTRUCT(
'id',
block_number :: STRING,
'jsonrpc',
'2.0',
'method',
'eth_getBlockReceipts',
'params',
ARRAY_CONSTRUCT(utils.udf_int_to_hex(block_number))),
'Vault/prod/sei/quicknode/mainnet'
) AS request
FROM
ready_blocks
ORDER BY
block_number DESC

View File

@ -0,0 +1,85 @@
{{ config (
materialized = "view",
post_hook = fsc_utils.if_data_call_function_v2(
func = 'streamline.udf_bulk_rest_api_v2',
target = "{{this.schema}}.{{this.identifier}}",
params ={ "external_table" :"evm_traces",
"sql_limit" :"25000",
"producer_batch_size" :"1000",
"worker_batch_size" :"100",
"sql_source" :"{{this.identifier}}",
"exploded_key": tojson(["result"]) }
),
tags = ['streamline_core_evm_history']
) }}
WITH last_3_days AS (
SELECT
block_number
FROM
{{ ref("_evm_block_lookback") }}
),
to_do AS (
SELECT
block_number
FROM
{{ ref("streamline__evm_blocks") }}
WHERE
(
block_number < (
SELECT
block_number
FROM
last_3_days
)
)
AND block_number IS NOT NULL
EXCEPT
SELECT
block_number
FROM
{{ ref("streamline__complete_evm_traces") }}
WHERE
block_number < (
SELECT
block_number
FROM
last_3_days
)
),
ready_blocks AS (
SELECT
block_number
FROM
to_do
)
SELECT
block_number,
ROUND(
block_number,
-3
) :: INT AS partition_key,
{{ target.database }}.live.udf_api(
'POST',
'{Service}/{Authentication}',
OBJECT_CONSTRUCT(
'Content-Type',
'application/json'
),
OBJECT_CONSTRUCT(
'id',
block_number :: STRING,
'jsonrpc',
'2.0',
'method',
'debug_traceBlockByNumber',
'params',
ARRAY_CONSTRUCT(utils.udf_int_to_hex(block_number), OBJECT_CONSTRUCT('tracer', 'callTracer', 'timeout', '30s'))
),
'Vault/prod/sei/quicknode/mainnet'
) AS request
FROM
ready_blocks
ORDER BY
block_number DESC

View File

@ -0,0 +1,84 @@
{{ config (
materialized = "view",
post_hook = fsc_utils.if_data_call_function_v2(
func = 'streamline.udf_bulk_rest_api_v2',
target = "{{this.schema}}.{{this.identifier}}",
params ={ "external_table" :"evm_transactions",
"sql_limit" :"25000",
"producer_batch_size" :"100000",
"worker_batch_size" :"10000",
"sql_source" :"{{this.identifier}}",
"exploded_key": tojson(["result.transactions"]) }
),
tags = ['streamline_core_evm_history']
) }}
WITH last_3_days AS (
SELECT
block_number
FROM
{{ ref("_evm_block_lookback") }}
),
to_do AS (
SELECT
block_number
FROM
{{ ref("streamline__evm_blocks") }}
WHERE
(
block_number < (
SELECT
block_number
FROM
last_3_days
)
)
AND block_number IS NOT NULL
EXCEPT
SELECT
block_number
FROM
{{ ref("streamline__complete_evm_transactions") }}
WHERE
block_number < (
SELECT
block_number
FROM
last_3_days
)
),
ready_blocks AS (
SELECT
block_number
FROM
to_do
)
SELECT
block_number,
ROUND(
block_number,
-3
) :: INT AS partition_key,
{{ target.database }}.live.udf_api(
'POST',
'{Service}/{Authentication}',
OBJECT_CONSTRUCT(
'Content-Type',
'application/json'
),
OBJECT_CONSTRUCT(
'id',
block_number :: STRING,
'jsonrpc',
'2.0',
'method',
'eth_getBlockByNumber',
'params',
ARRAY_CONSTRUCT(utils.udf_int_to_hex(block_number), TRUE)),
'Vault/prod/sei/quicknode/mainnet'
) AS request
FROM
ready_blocks
ORDER BY
block_number DESC

View File

@ -13,15 +13,11 @@
) }}
WITH last_3_days AS (
{#
SELECT
block_number
FROM
{{ ref("_evm_block_lookback") }}
#}
SELECT
79123881 AS block_number
),
look_back AS (
SELECT

View File

@ -63,6 +63,11 @@ ready_blocks AS (
block_number
FROM
{{ ref("_missing_receipts") }}
UNION
SELECT
block_number
FROM
{{ ref("_unconfirmed_blocks") }}
)
SELECT
block_number,

View File

@ -63,6 +63,11 @@ ready_blocks AS (
block_number
FROM
{{ ref("_missing_traces") }}
UNION
SELECT
block_number
FROM
{{ ref("_unconfirmed_blocks") }}
)
SELECT
block_number,

View File

@ -63,6 +63,11 @@ ready_blocks AS (
block_number
FROM
{{ ref("_missing_receipts") }}
UNION
SELECT
block_number
FROM
{{ ref("_unconfirmed_blocks") }}
)
SELECT
block_number,

View File

@ -0,0 +1,34 @@
{{ config (
materialized = "ephemeral"
) }}
WITH lookback AS (
SELECT
block_number
FROM
{{ ref("_evm_block_lookback") }}
)
SELECT
DISTINCT cb.block_number AS block_number
FROM
{{ ref("silver_evm__confirmed_blocks") }}
cb
LEFT JOIN {{ ref("silver_evm__transactions") }}
txs USING (
block_number,
block_hash,
tx_hash
)
WHERE
txs.tx_hash IS NULL
AND cb.block_number >= (
SELECT
block_number
FROM
lookback
)
AND cb._inserted_timestamp >= DATEADD('hour', -84, SYSDATE())
AND (
txs._inserted_timestamp >= DATEADD('hour', -84, SYSDATE())
OR txs._inserted_timestamp IS NULL)

View File

@ -0,0 +1 @@
{{ missing_confirmed_txs(ref("test_silver_evm__confirmed_blocks_full"), ref("test_silver_evm__transactions_full")) }}

View File

@ -0,0 +1,2 @@
-- depends_on: {{ ref('test_silver_evm__transactions_full') }}
{{ missing_txs(ref("test_silver_evm__receipts_full")) }}

View File

@ -0,0 +1,2 @@
-- depends_on: {{ ref('test_silver_evm__transactions_full') }}
{{ missing_txs(ref("test_silver_evm__traces_full")) }}

View File

@ -0,0 +1 @@
{{ missing_confirmed_txs(ref("test_silver_evm__confirmed_blocks_recent"), ref("test_silver_evm__transactions_recent")) }}