blast-models/models/silver/core/silver__created_contracts.sql
drethereum 13ba135a6c
AN-5335-v2/blast-standardization (#79)
* new columns ymls and docs

* new column in silver logs

* refs to core fact tables

* ymls and new columns

* minor updates

* columns

* docs

* updates for native transfer

* updates

* deprecation notices

* native transfers table

* core column changes and docs

* full_decoded_log changes

* merge

* misc updates for deprecating columns

* tx and trace status

* misc updates

* remove comments

* remove trace_address from native_transfers

* timestamps for native

* docs

* token transfers

* missing_decoding macro

* l1 fee precise

* removed trace address column from silver native transfers

* deprecation date

* ez decoded_event_logs

* standard pred
2025-02-12 13:59:21 -07:00

67 lines
1.8 KiB
SQL

{{ config (
materialized = "incremental",
unique_key = "created_contract_address",
merge_exclude_columns = ["inserted_timestamp"],
post_hook = "ALTER TABLE {{ this }} ADD SEARCH OPTIMIZATION ON EQUALITY(block_timestamp, tx_hash, created_contract_address, creator_address), SUBSTRING(created_contract_address, creator_address)",
tags = ['non_realtime']
) }}
SELECT
block_number,
block_timestamp,
tx_hash,
to_address AS created_contract_address,
from_address AS creator_address,
input AS created_contract_input,
modified_timestamp AS _inserted_timestamp,
{{ dbt_utils.generate_surrogate_key(
['to_address']
) }} AS created_contracts_id,
SYSDATE() AS inserted_timestamp,
SYSDATE() AS modified_timestamp,
'{{ invocation_id }}' AS _invocation_id
FROM
{{ ref('core__fact_traces') }}
WHERE
TYPE ILIKE 'create%'
AND to_address IS NOT NULL
AND input IS NOT NULL
AND input != '0x'
AND tx_succeeded
AND trace_succeeded
{% if is_incremental() %}
AND _inserted_timestamp >= (
SELECT
MAX(_inserted_timestamp) - INTERVAL '24 hours'
FROM
{{ this }}
)
{% endif %}
qualify(ROW_NUMBER() over(PARTITION BY created_contract_address
ORDER BY
_inserted_timestamp DESC)) = 1
UNION ALL
SELECT
0 AS block_number,
'1970-01-01 00:00:00' AS block_timestamp,
'GENESIS' AS tx_hash,
contract_address AS created_contract_address,
'GENESIS' AS creator_address,
NULL AS created_contract_input,
SYSDATE() AS _inserted_timestamp,
{{ dbt_utils.generate_surrogate_key(
['contract_address']
) }} AS created_contracts_id,
SYSDATE() AS inserted_timestamp,
SYSDATE() AS modified_timestamp,
'{{ invocation_id }}' AS _invocation_id
FROM
{{ ref('silver__genesis_contracts_backfill') }}
{% if is_incremental() %}
WHERE
1 = 2
{% endif %}