mirror of
https://github.com/FlipsideCrypto/fsc-evm.git
synced 2026-02-06 15:26:44 +00:00
merge
This commit is contained in:
commit
50bb0bc8b7
@ -2,6 +2,11 @@ name: dbt_run_template_docs_update
|
||||
|
||||
on:
|
||||
workflow_call:
|
||||
inputs:
|
||||
resource_id:
|
||||
description: 'DDS resource ID to refresh (defaults to repository name if not provided)'
|
||||
required: false
|
||||
type: string
|
||||
|
||||
jobs:
|
||||
run_dbt_jobs_refresh:
|
||||
@ -79,8 +84,19 @@ jobs:
|
||||
run: |
|
||||
git push -f --set-upstream origin docs
|
||||
|
||||
notify-failure:
|
||||
refresh-dds-cache:
|
||||
needs: [run_dbt_jobs_refresh]
|
||||
if: success()
|
||||
uses: FlipsideCrypto/analytics-workflow-templates/.github/workflows/refresh_dds.yml@main
|
||||
with:
|
||||
resource_id: ${{ inputs.resource_id }}
|
||||
api_url: ${{ github.ref == 'refs/heads/main' && 'https://dds-api.fsc-data-platform.io' || 'https://dds-api.fsc-data-platform-stg.io' }}
|
||||
force_refresh: true
|
||||
secrets:
|
||||
DDS_API_KEY: ${{ github.ref == 'refs/heads/main' && secrets.DDS_PROD_API_KEY || secrets.DDS_STG_API_KEY }}
|
||||
|
||||
notify-failure:
|
||||
needs: [run_dbt_jobs_refresh, refresh-dds-cache]
|
||||
if: failure()
|
||||
uses: ./.github/workflows/slack_notify.yml
|
||||
secrets:
|
||||
|
||||
@ -12,8 +12,10 @@ gnosis_vars,gnosis-models,gnosis,true
|
||||
ink_vars,ink-models,ink,true
|
||||
kaia_vars,kaia-models,kaia,false
|
||||
mantle_vars,mantle-models,mantle,false
|
||||
monad_vars,monad-models,monad,true
|
||||
optimism_vars,optimism-models,optimism,true
|
||||
polygon_vars,polygon-models,polygon,true
|
||||
ronin_vars,ronin-models,ronin,false
|
||||
scroll_vars,scroll-models,scroll,false
|
||||
somnia_vars,somnia-models,somnia,true
|
||||
swell_vars,swell-models,swell,false
|
||||
|
@ -50,7 +50,8 @@ WITH source AS (
|
||||
FROM
|
||||
source
|
||||
WHERE
|
||||
(latest_timestamp < threshold_ts
|
||||
latest_timestamp IS NOT NULL
|
||||
AND (latest_timestamp < threshold_ts
|
||||
OR (percent_delta < {{ percent_delta_threshold }} AND percent_delta <> 0))
|
||||
{% if type == 'dex_swaps' %}
|
||||
AND platform NOT IN ('{{ vars.CURATED_DEFI_DEX_SWAPS_RECENCY_EXCLUSION_LIST | join("', '") }}')
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
{% test stablecoins_date_gaps(model, lookback_days=7) %}
|
||||
{% test stablecoins_date_gaps(model, lookback_days=3) %}
|
||||
|
||||
WITH recent_data AS (
|
||||
SELECT
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
{% test stablecoins_is_imputed_false(model, lookback_days=7) %}
|
||||
{% test stablecoins_is_imputed_false(model, lookback_days=3) %}
|
||||
|
||||
WITH active_pairs AS (
|
||||
SELECT DISTINCT
|
||||
|
||||
@ -1,11 +1,26 @@
|
||||
{% macro get_where_subquery(relation) -%}
|
||||
{%- set where = config.get('where') -%}
|
||||
{% macro get_where_subquery(relation, where_override=none) -%}
|
||||
{#
|
||||
Get where clause from config or override parameter.
|
||||
This macro is namespace-agnostic and can be imported into any dbt project.
|
||||
|
||||
Args:
|
||||
relation: The relation (model/table) to query
|
||||
where_override: Optional override for the where clause (useful when config context may vary)
|
||||
#}
|
||||
|
||||
{# Get where clause - prefer override, then config, then none #}
|
||||
{%- if where_override is not none -%}
|
||||
{%- set where = where_override -%}
|
||||
{%- else -%}
|
||||
{%- set where = config.get('where', none) -%}
|
||||
{%- endif -%}
|
||||
|
||||
{%- set interval_vars = namespace(
|
||||
interval_type = none,
|
||||
interval_value = none
|
||||
) -%}
|
||||
|
||||
{# Check for interval variables - these work across all namespaces #}
|
||||
{% set intervals = {
|
||||
'minutes': var('minutes', none),
|
||||
'hours': var('hours', none),
|
||||
@ -22,59 +37,86 @@
|
||||
{% break %}
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
|
||||
{% if 'dbt_expectations_expect_column_values_to_be_in_type_list' in this | string %}
|
||||
|
||||
{% if 'dbt_expectations_expect_column_values_to_be_in_type_list' in this | string %}
|
||||
{% do return(relation) %}
|
||||
{% endif %}
|
||||
|
||||
|
||||
{%- set ts_vars = namespace(
|
||||
timestamp_column = none,
|
||||
filter_condition = none
|
||||
) -%}
|
||||
|
||||
{% if where %}
|
||||
{% if "__timestamp_filter__" in where %}
|
||||
{% set columns = adapter.get_columns_in_relation(relation) %}
|
||||
{% set column_names = columns | map(attribute='name') | list %}
|
||||
{# Build timestamp filter if interval vars are set #}
|
||||
{% if interval_vars.interval_type is not none and interval_vars.interval_value is not none %}
|
||||
{% set columns = adapter.get_columns_in_relation(relation) %}
|
||||
|
||||
{# Search for common timestamp column names in priority order #}
|
||||
{% for column in columns %}
|
||||
{% if column.name == 'MODIFIED_TIMESTAMP' %}
|
||||
{% set ts_vars.timestamp_column = 'MODIFIED_TIMESTAMP' %}
|
||||
{% break %}
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
|
||||
{% if not ts_vars.timestamp_column %}
|
||||
{% for column in columns %}
|
||||
{% if column.name == 'MODIFIED_TIMESTAMP' %}
|
||||
{% set ts_vars.timestamp_column = 'MODIFIED_TIMESTAMP' %}
|
||||
{% if column.name == '_INSERTED_TIMESTAMP' %}
|
||||
{% set ts_vars.timestamp_column = '_INSERTED_TIMESTAMP' %}
|
||||
{% break %}
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
|
||||
{% if not ts_vars.timestamp_column %}
|
||||
{% for column in columns %}
|
||||
{% if column.name == '_INSERTED_TIMESTAMP' %}
|
||||
{% set ts_vars.timestamp_column = '_INSERTED_TIMESTAMP' %}
|
||||
{% break %}
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
{% endif %}
|
||||
|
||||
{% if not ts_vars.timestamp_column %}
|
||||
{% for column in columns %}
|
||||
{% if column.name == 'BLOCK_TIMESTAMP' %}
|
||||
{% set ts_vars.timestamp_column = 'BLOCK_TIMESTAMP' %}
|
||||
{% break %}
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
{% endif %}
|
||||
|
||||
{% if ts_vars.timestamp_column is not none %}
|
||||
{% set ts_vars.filter_condition = ts_vars.timestamp_column ~ " >= dateadd(" ~
|
||||
interval_vars.interval_type ~ ", -" ~
|
||||
interval_vars.interval_value ~ ", current_timestamp())" %}
|
||||
{% set where = where | replace("__timestamp_filter__", ts_vars.filter_condition) %}
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
|
||||
|
||||
{% if not ts_vars.timestamp_column %}
|
||||
{% for column in columns %}
|
||||
{% if column.name == 'BLOCK_TIMESTAMP' %}
|
||||
{% set ts_vars.timestamp_column = 'BLOCK_TIMESTAMP' %}
|
||||
{% break %}
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
{% endif %}
|
||||
|
||||
{% if not ts_vars.timestamp_column %}
|
||||
{% for column in columns %}
|
||||
{% if column.name == 'BLOCK_DATE' %}
|
||||
{% set ts_vars.timestamp_column = 'BLOCK_DATE' %}
|
||||
{% break %}
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
{% endif %}
|
||||
|
||||
{# Build timestamp filter condition if we found a timestamp column #}
|
||||
{% if ts_vars.timestamp_column is not none %}
|
||||
{% set ts_vars.filter_condition = ts_vars.timestamp_column ~ " >= dateadd(" ~
|
||||
interval_vars.interval_type ~ ", -" ~
|
||||
interval_vars.interval_value ~ ", SYSDATE())" %}
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
|
||||
{# Handle where clause with timestamp filtering #}
|
||||
{% if ts_vars.filter_condition is not none %}
|
||||
{# We have a timestamp filter to apply #}
|
||||
{% if where %}
|
||||
{# Combine timestamp filter with existing where using AND #}
|
||||
{% set where = ts_vars.filter_condition ~ " AND (" ~ where ~ ")" %}
|
||||
{% else %}
|
||||
{# No existing where clause, use just the timestamp filter #}
|
||||
{% set where = ts_vars.filter_condition %}
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
|
||||
{# Return filtered relation - always as a subquery for consistency #}
|
||||
{% if where %}
|
||||
{%- set filtered -%}
|
||||
(select * from {{ relation }} where {{ where }}) dbt_subquery
|
||||
(select * from {{ relation }} where {{ where }})
|
||||
{%- endset -%}
|
||||
{% do return(filtered) %}
|
||||
{%- else -%}
|
||||
{% do return(relation) %}
|
||||
{# Return relation as a subquery even when no where clause for consistent behavior #}
|
||||
{%- set filtered -%}
|
||||
(select * from {{ relation }})
|
||||
{%- endset -%}
|
||||
{% do return(filtered) %}
|
||||
{%- endif -%}
|
||||
{%- endmacro %}
|
||||
@ -23,7 +23,7 @@
|
||||
'CURATED_DEFI_LENDING_RECENCY_EXCLUSION_LIST': ['radiant-v2','radiant-v1'],
|
||||
'CURATED_DEFI_DEX_SWAPS_RECENCY_EXCLUSION_LIST': ['hashflow-v1','gmx-v1','woofi-v3','woofi-v1'],
|
||||
'CURATED_DEFI_DEX_LP_ACTIONS_RECENCY_EXCLUSION_LIST': ['trader_joe-v2','kyberswap-v1','kyberswap-v2','zyberswap-v2','fraxswap-v1'],
|
||||
'CURATED_DEFI_BRIDGE_RECENCY_EXCLUSION_LIST': ['hyperliquid-v1','across-v1','multichain-v7','symbiosis-v1','hop-v1'],
|
||||
'CURATED_DEFI_BRIDGE_RECENCY_EXCLUSION_LIST': ['hyperliquid-v1','across-v2','multichain-v7','symbiosis-v1','hop-v1'],
|
||||
'CURATED_DEFI_DEX_SWAPS_CONTRACT_MAPPING': {
|
||||
'uniswap': {
|
||||
'v2': {
|
||||
@ -187,8 +187,8 @@
|
||||
'CURATED_DEFI_DEX_DEXALOT_DEST_CHAIN_ID': 42161,
|
||||
'CURATED_DEFI_BRIDGE_CONTRACT_MAPPING': {
|
||||
'across': {
|
||||
'v1': {
|
||||
'funds_deposited': '0xe35e9842fceaca96570b734083f4a58e8f7c5f2a'
|
||||
'v2': {
|
||||
'funds_deposited': ['0xe35e9842fceaca96570b734083f4a58e8f7c5f2a','0xb88690461ddbab6f04dfad7df66b7725942feb9c']
|
||||
},
|
||||
'v3': {
|
||||
'funds_deposited': '0xe35e9842fceaca96570b734083f4a58e8f7c5f2a'
|
||||
|
||||
@ -33,7 +33,7 @@
|
||||
'CURATED_DEFI_LENDING_RECENCY_EXCLUSION_LIST': ['seamless-v1'],
|
||||
'CURATED_DEFI_DEX_SWAPS_RECENCY_EXCLUSION_LIST': ['woofi-v3','woofi-v1','voodoo-v1'],
|
||||
'CURATED_DEFI_DEX_LP_ACTIONS_RECENCY_EXCLUSION_LIST': ['balancer-v1'],
|
||||
'CURATED_DEFI_BRIDGE_RECENCY_EXCLUSION_LIST': ['symbiosis-v1','hop-v1','across-v1'],
|
||||
'CURATED_DEFI_BRIDGE_RECENCY_EXCLUSION_LIST': ['symbiosis-v1','hop-v1','across-v2'],
|
||||
'CURATED_DEFI_DEX_SWAPS_CONTRACT_MAPPING': {
|
||||
'uniswap': {
|
||||
'v2': {
|
||||
@ -139,7 +139,7 @@
|
||||
'CURATED_DEFI_DEX_DEXALOT_DEST_CHAIN_ID': 8453,
|
||||
'CURATED_DEFI_BRIDGE_CONTRACT_MAPPING': {
|
||||
'across': {
|
||||
'v1': {
|
||||
'v2': {
|
||||
'funds_deposited': '0x09aea4b2242abc8bb4bb78d537a67a245a7bec64'
|
||||
},
|
||||
'v3': {
|
||||
|
||||
@ -60,6 +60,13 @@
|
||||
'token_bridge_swap': '0x432036208d2717394d2614d6697c46df3ed69540'
|
||||
}
|
||||
}
|
||||
},
|
||||
'CURATED_DEFI_LENDING_CONTRACT_MAPPING': {
|
||||
'wefi': {
|
||||
'v1': {
|
||||
'comp_v2_origin_from_address': '0x99a219f4c322993a101258b0a157eacf5b447d68'
|
||||
}
|
||||
}
|
||||
}
|
||||
} %}
|
||||
|
||||
|
||||
@ -166,8 +166,8 @@
|
||||
},
|
||||
'CURATED_DEFI_BRIDGE_CONTRACT_MAPPING': {
|
||||
'across': {
|
||||
'v1': {
|
||||
'funds_deposited': '0x5c7bcd6e7de5423a257d81b442095a1a6ced35c5'
|
||||
'v2': {
|
||||
'funds_deposited': ['0x5c7bcd6e7de5423a257d81b442095a1a6ced35c5','0x4d9079bb4165aeb4084c526a32695dcfd2f77381']
|
||||
},
|
||||
'v3': {
|
||||
'funds_deposited': '0x5c7bcd6e7de5423a257d81b442095a1a6ced35c5'
|
||||
|
||||
@ -4,13 +4,19 @@
|
||||
'GLOBAL_NODE_PROVIDER': 'quicknode',
|
||||
'GLOBAL_NODE_URL': "{URL}",
|
||||
'GLOBAL_NODE_VAULT_PATH': 'Vault/prod/evm/quicknode/monad/mainnet',
|
||||
'GLOBAL_WRAPPED_NATIVE_ASSET_ADDRESS': '0x3a704ad3e4784b935ae029171adcf57ee7988198',
|
||||
'GLOBAL_WRAPPED_NATIVE_ASSET_ADDRESS': '0x3bd359c1119da7da1d913d1c4d2b7c461115433a',
|
||||
'GLOBAL_WRAPPED_NATIVE_ASSET_SYMBOL': 'WMON',
|
||||
'GLOBAL_NATIVE_ASSET_SYMBOL': 'MON',
|
||||
'MAIN_SL_BLOCKS_PER_HOUR': 10000,
|
||||
'MAIN_PRICES_NATIVE_SYMBOLS': 'MON',
|
||||
'CURATED_START_TIMESTAMP': '2025-11-18 00:00:00',
|
||||
'MAIN_PRICES_NATIVE_BLOCKCHAINS': 'monad',
|
||||
'MAIN_PRICES_PROVIDER_PLATFORMS': 'monad',
|
||||
'DECODER_SILVER_CONTRACT_ABIS_EXPLORER_NAME': 'etherscan',
|
||||
'DECODER_SL_CONTRACT_ABIS_EXPLORER_VAULT_PATH': 'Vault/prod/evm/etherscan/pro_plus',
|
||||
'DECODER_SL_CONTRACT_ABIS_EXPLORER_URL': 'https://api.etherscan.io/v2/api?apikey={KEY}&chainid=143&module=contract&action=getabi&address=',
|
||||
'DECODER_SL_CONTRACT_ABIS_EXPLORER_URL_SUFFIX': '&tag=latest',
|
||||
'DECODER_SILVER_CONTRACT_ABIS_ETHERSCAN_ENABLED': true,
|
||||
'MAIN_GHA_STREAMLINE_CHAINHEAD_CRON': '24,54 * * * *',
|
||||
'BALANCES_SL_DAILY_REALTIME_LOOKBACK_DAYS': -2,
|
||||
'CURATED_DEFI_DEX_SWAPS_CONTRACT_MAPPING': {
|
||||
@ -52,6 +58,11 @@
|
||||
}
|
||||
},
|
||||
'CURATED_DEFI_BRIDGE_CONTRACT_MAPPING': {
|
||||
'across': {
|
||||
'v3': {
|
||||
'funds_deposited': '0xd2ecb3afe598b746f8123cae365a598da831a449'
|
||||
}
|
||||
},
|
||||
'layerzero': {
|
||||
'v2': {
|
||||
'bridge': '0x6f475642a6e85809b1c36fa62763669b1b48dd5b'
|
||||
@ -60,7 +71,7 @@
|
||||
'axelar': {
|
||||
'v1': {
|
||||
'gateway': '0xe432150cce91c13a887f7d836923d5597add8e31',
|
||||
'gas_service': '0xbe406f0189a0b4cf3a05c286473d23791dd44cc6'
|
||||
'gas_service': '0x2d5d7d31f671f86c782533cc367f14109a082712'
|
||||
}
|
||||
},
|
||||
'wormhole': {
|
||||
@ -83,6 +94,18 @@
|
||||
'source': '0xef4fb24ad0916217251f553c0596f8edc630eb66'
|
||||
}
|
||||
}
|
||||
},
|
||||
'CURATED_DEFI_LENDING_CONTRACT_MAPPING': {
|
||||
'morpho': {
|
||||
'v1': {
|
||||
'morpho_blue_address': '0xd5d960e8c380b724a48ac59e2dff1b2cb4a1eaee'
|
||||
}
|
||||
},
|
||||
'neverland': {
|
||||
'v1': {
|
||||
'aave_version_address': '0x80f00661b13cc5f6ccd3885be7b4c9c67545d585'
|
||||
}
|
||||
}
|
||||
}
|
||||
} %}
|
||||
|
||||
|
||||
@ -22,7 +22,7 @@
|
||||
'CURATED_DEFI_LENDING_RECENCY_EXCLUSION_LIST': ['granary-v1','sonne-v1'],
|
||||
'CURATED_DEFI_DEX_SWAPS_RECENCY_EXCLUSION_LIST': ['woofi-v1','hashflow-v1'],
|
||||
'CURATED_DEFI_DEX_LP_ACTIONS_RECENCY_EXCLUSION_LIST': ['fraxswap-v1','kyberswap-v2','sushiswap-v1','uniswap-v2'],
|
||||
'CURATED_DEFI_BRIDGE_RECENCY_EXCLUSION_LIST': ['eywa-v1','across-v1','meson-v1','symbiosis-v1','multichain-v7','hop-v1'],
|
||||
'CURATED_DEFI_BRIDGE_RECENCY_EXCLUSION_LIST': ['eywa-v1','across-v2','meson-v1','symbiosis-v1','multichain-v7','hop-v1'],
|
||||
'CURATED_DEFI_DEX_SWAPS_CONTRACT_MAPPING': {
|
||||
'uniswap': {
|
||||
'v2': {
|
||||
@ -111,8 +111,8 @@
|
||||
},
|
||||
'CURATED_DEFI_BRIDGE_CONTRACT_MAPPING': {
|
||||
'across': {
|
||||
'v1': {
|
||||
'funds_deposited': '0x6f26bf09b1c792e3228e5467807a900a503c0281'
|
||||
'v2': {
|
||||
'funds_deposited': ['0x6f26bf09b1c792e3228e5467807a900a503c0281','0xa420b2d1c0841415a695b81e5b867bcd07dff8c9']
|
||||
},
|
||||
'v3': {
|
||||
'funds_deposited': '0x6f26bf09b1c792e3228e5467807a900a503c0281'
|
||||
|
||||
@ -24,7 +24,7 @@
|
||||
'CURATED_DEFI_LENDING_RECENCY_EXCLUSION_LIST': ['aave-v2'],
|
||||
'CURATED_DEFI_DEX_SWAPS_RECENCY_EXCLUSION_LIST': ['woofi-v1','hashflow-v1'],
|
||||
'CURATED_DEFI_DEX_LP_ACTIONS_RECENCY_EXCLUSION_LIST': ['kyberswap-v2','curve-v1'],
|
||||
'CURATED_DEFI_BRIDGE_RECENCY_EXCLUSION_LIST': ['hop-v1','multichain-v7','symbiosis-v1','across-v1'],
|
||||
'CURATED_DEFI_BRIDGE_RECENCY_EXCLUSION_LIST': ['hop-v1','multichain-v7','symbiosis-v1','across-v2'],
|
||||
'CURATED_DEFI_DEX_SWAPS_CONTRACT_MAPPING': {
|
||||
'uniswap': {
|
||||
'v2': {
|
||||
@ -113,8 +113,8 @@
|
||||
},
|
||||
'CURATED_DEFI_BRIDGE_CONTRACT_MAPPING': {
|
||||
'across': {
|
||||
'v1': {
|
||||
'funds_deposited': '0x9295ee1d8c5b022be115a2ad3c30c72e34e7f096'
|
||||
'v2': {
|
||||
'funds_deposited': ['0x9295ee1d8c5b022be115a2ad3c30c72e34e7f096','0x69b5c72837769ef1e7c164abc6515dcff217f920']
|
||||
},
|
||||
'v3': {
|
||||
'funds_deposited': '0x9295ee1d8c5b022be115a2ad3c30c72e34e7f096'
|
||||
|
||||
@ -70,6 +70,13 @@
|
||||
'bridge': '0x78add880a697070c1e765ac44d65323a0dcce913'
|
||||
}
|
||||
}
|
||||
},
|
||||
'CURATED_DEFI_LENDING_CONTRACT_MAPPING': {
|
||||
'tokos': {
|
||||
'v1': {
|
||||
'aave_version_address': '0xec6758e6324c167db39b6908036240460a2b0168'
|
||||
}
|
||||
}
|
||||
}
|
||||
} %}
|
||||
|
||||
|
||||
@ -274,6 +274,7 @@
|
||||
{% set ns.CURATED_COMPLETE_LOOKBACK_HOURS = get_var('CURATED_COMPLETE_LOOKBACK_HOURS', '4 hours') %}
|
||||
{% set ns.CURATED_LOOKBACK_HOURS = get_var('CURATED_LOOKBACK_HOURS', '12 hours') %}
|
||||
{% set ns.CURATED_LOOKBACK_DAYS = get_var('CURATED_LOOKBACK_DAYS', '7 days') %}
|
||||
{% set ns.CURATED_START_TIMESTAMP = get_var('CURATED_START_TIMESTAMP', '2000-01-01 00:00:00') %}
|
||||
{% set ns.CURATED_FR_MODELS = get_var('CURATED_FR_MODELS', []) %}
|
||||
{% set ns.CURATED_DEFI_DEX_SWAPS_RECENCY_EXCLUSION_LIST = get_var('CURATED_DEFI_DEX_SWAPS_RECENCY_EXCLUSION_LIST', []) %}
|
||||
{% set ns.CURATED_DEFI_DEX_LP_ACTIONS_RECENCY_EXCLUSION_LIST = get_var('CURATED_DEFI_DEX_LP_ACTIONS_RECENCY_EXCLUSION_LIST', []) %}
|
||||
|
||||
@ -18,7 +18,7 @@ WITH contract_mapping AS (
|
||||
) }}
|
||||
WHERE
|
||||
protocol = 'across'
|
||||
AND version = 'v1'
|
||||
AND version = 'v2'
|
||||
),
|
||||
base_evt AS (
|
||||
|
||||
@ -74,7 +74,7 @@ base_evt AS (
|
||||
INNER JOIN contract_mapping m
|
||||
ON l.contract_address = m.contract_address
|
||||
WHERE
|
||||
topics [0] :: STRING = '0xafc4df6845a4ab948b492800d3d8a25d538a102a2bc07cd01f1cfa097fddcff6'
|
||||
topics [0] :: STRING IN ('0xafc4df6845a4ab948b492800d3d8a25d538a102a2bc07cd01f1cfa097fddcff6','0x4a4fc49abd237bfd7f4ac82d6c7a284c69daaea5154430cff04ad7482c6c4254')
|
||||
AND tx_succeeded
|
||||
|
||||
{% if is_incremental() %}
|
||||
|
||||
@ -121,19 +121,19 @@ ccip_decoded AS (
|
||||
utils.udf_hex_to_int(
|
||||
part [0] :: STRING
|
||||
) :: STRING AS dest_chain_selector,
|
||||
utils.udf_hex_to_int(
|
||||
try_to_number(utils.udf_hex_to_int(
|
||||
part [2] :: STRING
|
||||
) :: INT AS fee_token_amount,
|
||||
)) AS fee_token_amount,
|
||||
'0x' || SUBSTR(
|
||||
part [3] :: STRING,
|
||||
25
|
||||
) AS original_sender,
|
||||
utils.udf_hex_to_int(
|
||||
try_to_number(utils.udf_hex_to_int(
|
||||
part [4] :: STRING
|
||||
) :: INT / 32 AS offset_receiver,
|
||||
utils.udf_hex_to_int(
|
||||
)) / 32 AS offset_receiver,
|
||||
try_to_number(utils.udf_hex_to_int(
|
||||
part [offset_receiver + 4] :: STRING
|
||||
) :: INT * 2 AS receiver_length,
|
||||
)) * 2 AS receiver_length,
|
||||
(
|
||||
offset_receiver + 5
|
||||
) * 64 AS receiver_byteskip,
|
||||
@ -143,12 +143,12 @@ ccip_decoded AS (
|
||||
25,
|
||||
40
|
||||
) AS receiver_evm,
|
||||
utils.udf_hex_to_int(
|
||||
try_to_number(utils.udf_hex_to_int(
|
||||
part [6] :: STRING
|
||||
) :: INT / 32 AS offset_token_amount,
|
||||
utils.udf_hex_to_int(
|
||||
)) / 32 AS offset_token_amount,
|
||||
try_to_number(utils.udf_hex_to_int(
|
||||
part [offset_token_amount + 4] :: STRING
|
||||
) :: INT AS token_amount_array,
|
||||
)) AS token_amount_array,
|
||||
chain_name,
|
||||
trace_index,
|
||||
from_address,
|
||||
@ -228,9 +228,9 @@ final_ccip AS (
|
||||
token_array [0] :: STRING,
|
||||
25
|
||||
) AS token_address,
|
||||
utils.udf_hex_to_int(
|
||||
try_to_number(utils.udf_hex_to_int(
|
||||
token_array [1] :: STRING
|
||||
) :: INT AS amount_unadj,
|
||||
)) AS amount_unadj,
|
||||
dest_chain_selector,
|
||||
receiver_raw,
|
||||
receiver_evm,
|
||||
|
||||
@ -22,6 +22,8 @@ models:
|
||||
- dbt_expectations.expect_row_values_to_have_recent_data:
|
||||
datepart: day
|
||||
interval: 3
|
||||
config:
|
||||
severity: warn
|
||||
- name: EVENT_INDEX
|
||||
tests:
|
||||
- not_null:
|
||||
|
||||
@ -22,6 +22,8 @@ models:
|
||||
- dbt_expectations.expect_row_values_to_have_recent_data:
|
||||
datepart: day
|
||||
interval: 3
|
||||
config:
|
||||
severity: warn
|
||||
- name: EVENT_INDEX
|
||||
tests:
|
||||
- not_null:
|
||||
|
||||
@ -21,7 +21,9 @@ models:
|
||||
- not_null
|
||||
- dbt_expectations.expect_row_values_to_have_recent_data:
|
||||
datepart: day
|
||||
interval: 14
|
||||
interval: 30
|
||||
config:
|
||||
severity: warn
|
||||
- name: EVENT_INDEX
|
||||
tests:
|
||||
- not_null:
|
||||
|
||||
@ -22,6 +22,8 @@ models:
|
||||
- dbt_expectations.expect_row_values_to_have_recent_data:
|
||||
datepart: day
|
||||
interval: 30
|
||||
config:
|
||||
severity: warn
|
||||
- name: EVENT_INDEX
|
||||
tests:
|
||||
- not_null:
|
||||
|
||||
@ -22,6 +22,8 @@ models:
|
||||
- dbt_expectations.expect_row_values_to_have_recent_data:
|
||||
datepart: day
|
||||
interval: 3
|
||||
config:
|
||||
severity: warn
|
||||
- name: EVENT_INDEX
|
||||
tests:
|
||||
- not_null:
|
||||
|
||||
@ -22,6 +22,8 @@ models:
|
||||
- dbt_expectations.expect_row_values_to_have_recent_data:
|
||||
datepart: day
|
||||
interval: 3
|
||||
config:
|
||||
severity: warn
|
||||
- name: EVENT_INDEX
|
||||
tests:
|
||||
- not_null:
|
||||
|
||||
@ -54,6 +54,7 @@ log_pull AS (
|
||||
topics [0] :: STRING in(
|
||||
'0x7ac369dbd14fa5ea3f473ed67cc9d598964a77501540ba6751eb0b3decf5870d',
|
||||
'0x70aea8d848e8a90fb7661b227dc522eb6395c3dac71b63cb59edd5c9899b2364',
|
||||
'0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f',--wefi topic
|
||||
'0x17d6db5ffe5a3d1c3d7a98194dca4f7d808d621e6ff9077ed574513d553a2a85'--joelend topic
|
||||
)
|
||||
AND origin_from_address IN (
|
||||
|
||||
@ -77,6 +77,7 @@ traces AS (
|
||||
AND function_sig = '0x50d8cd4b'
|
||||
AND trace_succeeded
|
||||
AND tx_succeeded
|
||||
AND block_timestamp >= '{{ vars.CURATED_START_TIMESTAMP }}'
|
||||
|
||||
{% if is_incremental() %}
|
||||
AND modified_timestamp >= (
|
||||
|
||||
@ -77,6 +77,7 @@ traces AS (
|
||||
AND function_sig = '0xa99aad89'
|
||||
AND trace_succeeded
|
||||
AND tx_succeeded
|
||||
AND block_timestamp >= '{{ vars.CURATED_START_TIMESTAMP }}'
|
||||
|
||||
{% if is_incremental() %}
|
||||
AND modified_timestamp >= (
|
||||
|
||||
@ -53,6 +53,7 @@ flashloan AS(
|
||||
FROM
|
||||
morpho_blue_addresses
|
||||
)
|
||||
AND l.block_timestamp >= '{{ vars.CURATED_START_TIMESTAMP }}'
|
||||
|
||||
{% if is_incremental() %}
|
||||
AND l.modified_timestamp >= (
|
||||
|
||||
@ -64,6 +64,7 @@ traces AS (
|
||||
AND function_sig = '0xd8eabcb8'
|
||||
AND trace_succeeded
|
||||
AND tx_succeeded
|
||||
AND block_timestamp >= '{{ vars.CURATED_START_TIMESTAMP }}'
|
||||
|
||||
{% if is_incremental() %}
|
||||
AND modified_timestamp >= (
|
||||
|
||||
@ -77,6 +77,7 @@ traces AS (
|
||||
AND function_sig = '0x20b76e81'
|
||||
AND trace_succeeded
|
||||
AND tx_succeeded
|
||||
AND block_timestamp >= '{{ vars.CURATED_START_TIMESTAMP }}'
|
||||
|
||||
{% if is_incremental() %}
|
||||
AND modified_timestamp >= (
|
||||
|
||||
@ -77,6 +77,7 @@ traces AS (
|
||||
AND function_sig = '0x5c2bea49'
|
||||
AND trace_succeeded
|
||||
AND tx_succeeded
|
||||
AND block_timestamp >= '{{ vars.CURATED_START_TIMESTAMP }}'
|
||||
|
||||
{% if is_incremental() %}
|
||||
AND modified_timestamp >= (
|
||||
|
||||
@ -25,7 +25,8 @@ WITH crosschain_stablecoins AS (
|
||||
m.name
|
||||
) AS NAME,
|
||||
m.decimals,
|
||||
m.is_verified
|
||||
m.is_verified,
|
||||
m.is_verified_modified_timestamp
|
||||
FROM
|
||||
{{ source(
|
||||
'crosschain_silver',
|
||||
@ -56,7 +57,8 @@ manual_stablecoins AS (
|
||||
) AS symbol,
|
||||
m.name,
|
||||
m.decimals,
|
||||
m.is_verified
|
||||
m.is_verified,
|
||||
m.is_verified_modified_timestamp
|
||||
FROM
|
||||
{{ ref('silver_stablecoins__stablecoins_mapping_seed') }}
|
||||
s
|
||||
@ -86,16 +88,84 @@ all_stablecoins AS (
|
||||
*
|
||||
FROM
|
||||
manual_stablecoins
|
||||
),
|
||||
|
||||
{% if is_incremental() and var(
|
||||
'HEAL_MODEL'
|
||||
) %}
|
||||
heal_model AS (
|
||||
SELECT
|
||||
t.contract_address,
|
||||
m.symbol AS symbol_heal,
|
||||
m.name AS name_heal,
|
||||
CONCAT(
|
||||
m.symbol,
|
||||
': ',
|
||||
m.name
|
||||
) AS label_heal,
|
||||
m.decimals AS decimals_heal,
|
||||
m.is_verified AS is_verified_heal,
|
||||
m.is_verified_modified_timestamp AS is_verified_modified_timestamp_heal
|
||||
FROM
|
||||
{{ this }}
|
||||
t
|
||||
INNER JOIN {{ ref('price__ez_asset_metadata') }}
|
||||
m
|
||||
ON t.contract_address = m.token_address
|
||||
WHERE
|
||||
m.blockchain = '{{ vars.GLOBAL_PROJECT_NAME }}'
|
||||
AND (
|
||||
t.symbol IS NULL
|
||||
OR t.name IS NULL
|
||||
OR t.decimals IS NULL
|
||||
)
|
||||
),
|
||||
{% endif %}
|
||||
|
||||
FINAL AS (
|
||||
SELECT
|
||||
contract_address,
|
||||
symbol,
|
||||
NAME,
|
||||
CONCAT(
|
||||
symbol,
|
||||
': ',
|
||||
NAME
|
||||
) AS label,
|
||||
decimals,
|
||||
is_verified,
|
||||
is_verified_modified_timestamp
|
||||
FROM
|
||||
all_stablecoins
|
||||
|
||||
{% if is_incremental() and var(
|
||||
'HEAL_MODEL'
|
||||
) %}
|
||||
UNION ALL
|
||||
SELECT
|
||||
contract_address,
|
||||
symbol_heal AS symbol,
|
||||
name_heal AS NAME,
|
||||
label_heal AS label,
|
||||
decimals_heal AS decimals,
|
||||
is_verified_heal AS is_verified,
|
||||
is_verified_modified_timestamp_heal AS is_verified_modified_timestamp
|
||||
FROM
|
||||
heal_model
|
||||
{% endif %}
|
||||
)
|
||||
SELECT
|
||||
contract_address,
|
||||
symbol,
|
||||
NAME,
|
||||
CONCAT(symbol,': ',name) AS label,
|
||||
label,
|
||||
decimals,
|
||||
is_verified,
|
||||
is_verified_modified_timestamp,
|
||||
SYSDATE() AS inserted_timestamp,
|
||||
SYSDATE() AS modified_timestamp,
|
||||
{{ dbt_utils.generate_surrogate_key(['contract_address']) }} AS dim_stablecoins_id
|
||||
FROM
|
||||
all_stablecoins
|
||||
FINAL qualify(ROW_NUMBER() over (PARTITION BY dim_stablecoins_id
|
||||
ORDER BY
|
||||
modified_timestamp DESC)) = 1
|
||||
|
||||
@ -19,6 +19,7 @@ SELECT
|
||||
label,
|
||||
decimals,
|
||||
total_supply,
|
||||
total_holders,
|
||||
amount_minted,
|
||||
amount_burned,
|
||||
amount_transferred,
|
||||
|
||||
@ -18,6 +18,8 @@ models:
|
||||
description: '{{ doc("ez_stablecoins_supply_decimals") }}'
|
||||
- name: TOTAL_SUPPLY
|
||||
description: '{{ doc("ez_stablecoins_supply_total_supply") }}'
|
||||
- name: TOTAL_HOLDERS
|
||||
description: '{{ doc("ez_stablecoins_supply_total_holders") }}'
|
||||
- name: AMOUNT_MINTED
|
||||
description: '{{ doc("ez_stablecoins_supply_amount_minted") }}'
|
||||
- name: AMOUNT_BURNED
|
||||
|
||||
@ -9,7 +9,7 @@
|
||||
|
||||
{# Main query starts here #}
|
||||
{{ streamline_external_table_query(
|
||||
source_name = 'stablecoin_reads',
|
||||
source_name = 'contract_reads',
|
||||
block_number = false,
|
||||
contract_address = true,
|
||||
data_not_null = false
|
||||
|
||||
@ -9,7 +9,7 @@
|
||||
|
||||
{# Main query starts here #}
|
||||
{{ streamline_external_table_query_fr(
|
||||
source_name = 'stablecoin_reads',
|
||||
source_name = 'contract_reads',
|
||||
block_number = false,
|
||||
contract_address = true,
|
||||
data_not_null = false
|
||||
|
||||
@ -25,6 +25,9 @@ WITH stablecoin_reads AS (
|
||||
VALUE :"BLOCK_DATE_UNIX" :: TIMESTAMP
|
||||
) :: DATE AS block_date,
|
||||
contract_address,
|
||||
PARSE_JSON(
|
||||
VALUE :"METADATA_STR" :: STRING
|
||||
) :: variant AS metadata,
|
||||
DATA :result :: STRING AS result_hex,
|
||||
_inserted_timestamp
|
||||
FROM
|
||||
@ -53,6 +56,7 @@ results AS (
|
||||
block_number,
|
||||
block_date,
|
||||
contract_address,
|
||||
metadata,
|
||||
IFF(
|
||||
C.decimals IS NULL,
|
||||
18,
|
||||
@ -88,6 +92,7 @@ SELECT
|
||||
block_number,
|
||||
block_date,
|
||||
contract_address,
|
||||
metadata,
|
||||
decimals_adj AS decimals,
|
||||
amount_hex,
|
||||
amount_raw,
|
||||
|
||||
@ -12,7 +12,14 @@
|
||||
|
||||
WITH verified_stablecoins AS (
|
||||
SELECT
|
||||
contract_address
|
||||
contract_address,
|
||||
OBJECT_CONSTRUCT(
|
||||
'symbol', symbol,
|
||||
'name', name,
|
||||
'label', label,
|
||||
'decimals', decimals,
|
||||
'is_verified', is_verified
|
||||
) :: VARIANT AS metadata
|
||||
FROM
|
||||
{{ ref('defi__dim_stablecoins') }}
|
||||
WHERE
|
||||
@ -31,6 +38,7 @@ max_blocks AS (
|
||||
base AS (
|
||||
SELECT
|
||||
s.contract_address,
|
||||
s.metadata,
|
||||
m.block_number,
|
||||
m.block_date
|
||||
FROM
|
||||
@ -61,7 +69,8 @@ ready_reads AS (
|
||||
function_sig,
|
||||
64,
|
||||
'0'
|
||||
) AS input
|
||||
) AS input,
|
||||
metadata
|
||||
FROM
|
||||
base
|
||||
JOIN function_sigs
|
||||
@ -74,6 +83,7 @@ SELECT
|
||||
ROUND(block_number,-3) AS partition_key,
|
||||
function_sig,
|
||||
input,
|
||||
metadata :: STRING AS metadata_str,
|
||||
live.udf_api(
|
||||
'POST',
|
||||
'{{ vars.GLOBAL_NODE_URL }}',
|
||||
@ -109,12 +119,12 @@ WHERE
|
||||
{# Streamline Function Call #}
|
||||
{% if execute %}
|
||||
{% set params = {
|
||||
"external_table": 'stablecoin_reads',
|
||||
"external_table": 'contract_reads',
|
||||
"sql_limit": vars.CURATED_SL_STABLECOIN_READS_HISTORY_SQL_LIMIT,
|
||||
"producer_batch_size": vars.CURATED_SL_STABLECOIN_READS_HISTORY_PRODUCER_BATCH_SIZE,
|
||||
"worker_batch_size": vars.CURATED_SL_STABLECOIN_READS_HISTORY_WORKER_BATCH_SIZE,
|
||||
"async_concurrent_requests": vars.CURATED_SL_STABLECOIN_READS_HISTORY_ASYNC_CONCURRENT_REQUESTS,
|
||||
"sql_source": 'stablecoin_reads_history'
|
||||
"sql_source": 'contract_reads_daily_history'
|
||||
} %}
|
||||
|
||||
{% set function_call_sql %}
|
||||
@ -12,7 +12,14 @@
|
||||
|
||||
WITH verified_stablecoins AS (
|
||||
SELECT
|
||||
contract_address
|
||||
contract_address,
|
||||
OBJECT_CONSTRUCT(
|
||||
'symbol', symbol,
|
||||
'name', name,
|
||||
'label', label,
|
||||
'decimals', decimals,
|
||||
'is_verified', is_verified
|
||||
) :: VARIANT AS metadata
|
||||
FROM
|
||||
{{ ref('defi__dim_stablecoins') }}
|
||||
WHERE
|
||||
@ -31,6 +38,7 @@ max_blocks AS (
|
||||
base AS (
|
||||
SELECT
|
||||
s.contract_address,
|
||||
s.metadata,
|
||||
m.block_number,
|
||||
m.block_date
|
||||
FROM
|
||||
@ -57,7 +65,8 @@ ready_reads AS (
|
||||
function_sig,
|
||||
64,
|
||||
'0'
|
||||
) AS input
|
||||
) AS input,
|
||||
metadata
|
||||
FROM
|
||||
base
|
||||
JOIN function_sigs
|
||||
@ -70,6 +79,7 @@ SELECT
|
||||
ROUND(block_number,-3) AS partition_key,
|
||||
function_sig,
|
||||
input,
|
||||
metadata :: STRING AS metadata_str,
|
||||
live.udf_api(
|
||||
'POST',
|
||||
'{{ vars.GLOBAL_NODE_URL }}',
|
||||
@ -105,12 +115,12 @@ WHERE
|
||||
{# Streamline Function Call #}
|
||||
{% if execute %}
|
||||
{% set params = {
|
||||
"external_table" :"stablecoin_reads",
|
||||
"external_table" :"contract_reads",
|
||||
"sql_limit" : vars.CURATED_SL_STABLECOIN_READS_REALTIME_SQL_LIMIT,
|
||||
"producer_batch_size" : vars.CURATED_SL_STABLECOIN_READS_REALTIME_PRODUCER_BATCH_SIZE,
|
||||
"worker_batch_size" : vars.CURATED_SL_STABLECOIN_READS_REALTIME_WORKER_BATCH_SIZE,
|
||||
"async_concurrent_requests" : vars.CURATED_SL_STABLECOIN_READS_REALTIME_ASYNC_CONCURRENT_REQUESTS,
|
||||
"sql_source" : 'stablecoin_reads_realtime'
|
||||
"sql_source" : 'contract_reads_daily_realtime'
|
||||
} %}
|
||||
|
||||
{% set function_call_sql %}
|
||||
@ -3,6 +3,7 @@
|
||||
{# Log configuration details #}
|
||||
{{ log_model_details() }}
|
||||
-- depends_on: {{ ref('price__ez_asset_metadata') }}
|
||||
-- depends_on: {{ ref('defi__dim_stablecoins') }}
|
||||
{{ config(
|
||||
materialized = 'incremental',
|
||||
incremental_strategy = 'delete+insert',
|
||||
@ -47,7 +48,11 @@ total_supply AS (
|
||||
SELECT
|
||||
block_date,
|
||||
contract_address,
|
||||
amount AS total_supply
|
||||
amount AS total_supply,
|
||||
metadata :symbol :: STRING AS symbol,
|
||||
metadata :name :: STRING AS name,
|
||||
metadata :label :: STRING AS label,
|
||||
metadata :decimals :: INTEGER AS decimals
|
||||
FROM
|
||||
{{ ref('silver__stablecoin_reads') }}
|
||||
|
||||
@ -216,11 +221,36 @@ GROUP BY
|
||||
block_date,
|
||||
contract_address
|
||||
),
|
||||
FINAL AS (
|
||||
holders AS (
|
||||
SELECT
|
||||
block_date,
|
||||
contract_address,
|
||||
COUNT(DISTINCT address) AS num_holders,
|
||||
MAX(modified_timestamp) AS modified_timestamp
|
||||
FROM
|
||||
{{ ref('silver_stablecoins__supply_by_address_imputed') }}
|
||||
WHERE balance > 0
|
||||
{% if is_incremental() %}
|
||||
AND block_date IN (
|
||||
SELECT
|
||||
block_date
|
||||
FROM
|
||||
incremental_dates
|
||||
)
|
||||
{% endif %}
|
||||
GROUP BY
|
||||
block_date,
|
||||
contract_address
|
||||
),
|
||||
all_supply AS (
|
||||
SELECT
|
||||
s.block_date,
|
||||
s.contract_address,
|
||||
s.total_supply,
|
||||
s.symbol,
|
||||
s.name,
|
||||
s.label,
|
||||
s.decimals,
|
||||
COALESCE(
|
||||
b.balance_blacklist,
|
||||
0
|
||||
@ -256,7 +286,11 @@ FINAL AS (
|
||||
COALESCE(
|
||||
transfer_volume,
|
||||
0
|
||||
) AS transfer_volume
|
||||
) AS transfer_volume,
|
||||
COALESCE(
|
||||
num_holders,
|
||||
0
|
||||
) AS num_holders
|
||||
FROM
|
||||
total_supply s
|
||||
LEFT JOIN blacklist_supply b
|
||||
@ -271,6 +305,93 @@ FINAL AS (
|
||||
LEFT JOIN transfers t
|
||||
ON s.block_date = t.block_date
|
||||
AND s.contract_address = t.contract_address
|
||||
LEFT JOIN holders h
|
||||
ON s.block_date = h.block_date
|
||||
AND s.contract_address = h.contract_address
|
||||
),
|
||||
|
||||
{% if is_incremental() and var(
|
||||
'HEAL_MODEL'
|
||||
) %}
|
||||
heal_model AS (
|
||||
SELECT
|
||||
t.block_date,
|
||||
t.contract_address,
|
||||
d.symbol AS symbol_heal,
|
||||
d.name AS name_heal,
|
||||
d.label AS label_heal,
|
||||
d.decimals AS decimals_heal,
|
||||
t.total_supply,
|
||||
t.amount_blacklisted,
|
||||
t.amount_in_cex,
|
||||
t.amount_in_bridges,
|
||||
t.amount_in_dex_liquidity_pools,
|
||||
t.amount_in_lending_pools,
|
||||
t.amount_in_contracts,
|
||||
t.amount_minted,
|
||||
t.amount_burned,
|
||||
t.amount_transferred,
|
||||
t.total_holders
|
||||
FROM
|
||||
{{ this }}
|
||||
t
|
||||
INNER JOIN {{ ref('defi__dim_stablecoins') }}
|
||||
d
|
||||
ON t.contract_address = d.contract_address
|
||||
WHERE
|
||||
t.symbol IS NULL
|
||||
OR t.name IS NULL
|
||||
OR t.decimals IS NULL
|
||||
),
|
||||
{% endif %}
|
||||
|
||||
FINAL AS (
|
||||
SELECT
|
||||
block_date,
|
||||
contract_address,
|
||||
symbol,
|
||||
NAME,
|
||||
label,
|
||||
decimals,
|
||||
total_supply,
|
||||
blacklist_supply AS amount_blacklisted,
|
||||
cex_balance AS amount_in_cex,
|
||||
bridge_balance AS amount_in_bridges,
|
||||
dex_balance AS amount_in_dex_liquidity_pools,
|
||||
lending_pool_balance AS amount_in_lending_pools,
|
||||
contracts_balance AS amount_in_contracts,
|
||||
mint_amount AS amount_minted,
|
||||
burn_amount AS amount_burned,
|
||||
transfer_volume AS amount_transferred,
|
||||
num_holders AS total_holders
|
||||
FROM
|
||||
all_supply
|
||||
|
||||
{% if is_incremental() and var(
|
||||
'HEAL_MODEL'
|
||||
) %}
|
||||
UNION ALL
|
||||
SELECT
|
||||
block_date,
|
||||
contract_address,
|
||||
symbol_heal AS symbol,
|
||||
name_heal AS NAME,
|
||||
label_heal AS label,
|
||||
decimals_heal AS decimals,
|
||||
total_supply,
|
||||
amount_blacklisted,
|
||||
amount_in_cex,
|
||||
amount_in_bridges,
|
||||
amount_in_dex_liquidity_pools,
|
||||
amount_in_lending_pools,
|
||||
amount_in_contracts,
|
||||
amount_minted,
|
||||
amount_burned,
|
||||
amount_transferred,
|
||||
total_holders
|
||||
FROM
|
||||
heal_model
|
||||
{% endif %}
|
||||
)
|
||||
SELECT
|
||||
block_date,
|
||||
@ -280,18 +401,26 @@ SELECT
|
||||
label,
|
||||
decimals,
|
||||
total_supply,
|
||||
blacklist_supply AS amount_blacklisted,
|
||||
cex_balance AS amount_in_cex,
|
||||
bridge_balance AS amount_in_bridges,
|
||||
dex_balance AS amount_in_dex_liquidity_pools,
|
||||
lending_pool_balance AS amount_in_lending_pools,
|
||||
contracts_balance AS amount_in_contracts,
|
||||
mint_amount AS amount_minted,
|
||||
burn_amount AS amount_burned,
|
||||
transfer_volume AS amount_transferred,
|
||||
total_holders,
|
||||
amount_blacklisted,
|
||||
amount_in_cex,
|
||||
amount_in_bridges,
|
||||
amount_in_dex_liquidity_pools,
|
||||
amount_in_lending_pools,
|
||||
amount_in_contracts,
|
||||
amount_minted,
|
||||
amount_burned,
|
||||
amount_transferred,
|
||||
SYSDATE() AS inserted_timestamp,
|
||||
SYSDATE() AS modified_timestamp,
|
||||
{{ dbt_utils.generate_surrogate_key(['block_date','contract_address']) }} AS stablecoins_supply_complete_id
|
||||
FROM
|
||||
FINAL
|
||||
LEFT JOIN {{ ref('defi__dim_stablecoins') }} USING (contract_address)
|
||||
|
||||
{% if is_incremental() and var(
|
||||
'HEAL_MODEL'
|
||||
) %}
|
||||
qualify(ROW_NUMBER() over (PARTITION BY stablecoins_supply_complete_id
|
||||
ORDER BY
|
||||
modified_timestamp DESC)) = 1
|
||||
{% endif %}
|
||||
|
||||
@ -28,6 +28,9 @@ models:
|
||||
- name: TOTAL_SUPPLY
|
||||
tests:
|
||||
- not_null
|
||||
- name: TOTAL_HOLDERS
|
||||
tests:
|
||||
- not_null
|
||||
- name: AMOUNT_BLACKLISTED
|
||||
tests:
|
||||
- not_null
|
||||
|
||||
@ -132,4 +132,4 @@ SELECT
|
||||
FROM
|
||||
all_abis qualify(ROW_NUMBER() over(PARTITION BY contract_address
|
||||
ORDER BY
|
||||
_INSERTED_TIMESTAMP DESC)) = 1
|
||||
_INSERTED_TIMESTAMP DESC)) = 1
|
||||
@ -127,6 +127,14 @@ Example: 1500000000
|
||||
|
||||
{% enddocs %}
|
||||
|
||||
{% docs ez_stablecoins_supply_total_holders %}
|
||||
|
||||
The total number of unique addresses holding the stablecoin on this blockchain as of the block_date.
|
||||
|
||||
Example: 750000
|
||||
|
||||
{% enddocs %}
|
||||
|
||||
{% docs ez_stablecoins_supply_amount_minted %}
|
||||
|
||||
The amount of tokens minted daily.
|
||||
|
||||
@ -262,7 +262,13 @@ FROM
|
||||
qualify ROW_NUMBER() over (
|
||||
PARTITION BY fact_event_logs_id
|
||||
ORDER BY
|
||||
block_number DESC,
|
||||
block_timestamp DESC nulls last,
|
||||
origin_function_signature DESC nulls last
|
||||
{% if vars.GLOBAL_PROJECT_NAME == 'monad' %}
|
||||
tx_succeeded DESC nulls last,
|
||||
block_number DESC,
|
||||
block_timestamp DESC nulls last
|
||||
{% else %}
|
||||
block_number DESC,
|
||||
block_timestamp DESC nulls last,
|
||||
origin_function_signature DESC nulls last
|
||||
{% endif %}
|
||||
) = 1
|
||||
@ -712,4 +712,10 @@ SELECT
|
||||
FROM
|
||||
all_traces qualify(ROW_NUMBER() over(PARTITION BY block_number, {% if vars.MAIN_CORE_TRACES_SEI_MODE %}tx_hash, {% else %}tx_position, {% endif %} trace_index
|
||||
ORDER BY
|
||||
modified_timestamp DESC, block_timestamp DESC nulls last)) = 1
|
||||
{% if vars.GLOBAL_PROJECT_NAME == 'monad' %}
|
||||
tx_succeeded DESC nulls last,
|
||||
block_timestamp DESC nulls last
|
||||
{% else %} -- this maybe should be updated everywhere but im not sure it matters since the block number is in the partition
|
||||
modified_timestamp DESC, block_timestamp DESC nulls last
|
||||
{% endif %}
|
||||
)) = 1
|
||||
@ -920,7 +920,14 @@ FROM
|
||||
all_transactions qualify ROW_NUMBER() over (
|
||||
PARTITION BY fact_transactions_id
|
||||
ORDER BY
|
||||
block_number DESC,
|
||||
block_timestamp DESC nulls last,
|
||||
tx_succeeded DESC nulls last
|
||||
|
||||
{% if vars.GLOBAL_PROJECT_NAME == 'monad' %}
|
||||
tx_succeeded DESC nulls last,
|
||||
block_number DESC,
|
||||
block_timestamp DESC nulls last
|
||||
{% else %}
|
||||
block_number DESC,
|
||||
block_timestamp DESC nulls last,
|
||||
tx_succeeded DESC nulls last
|
||||
{% endif %}
|
||||
) = 1
|
||||
@ -65,6 +65,12 @@ to_do AS (
|
||||
SELECT block_number
|
||||
FROM to_do
|
||||
|
||||
{% if not vars.MAIN_SL_NEW_BUILD_ENABLED %}
|
||||
UNION
|
||||
SELECT block_number
|
||||
FROM {{ ref("_unconfirmed_blocks") }}
|
||||
{% endif %}
|
||||
|
||||
{% if vars.MAIN_SL_TESTING_LIMIT is not none %}
|
||||
ORDER BY block_number DESC
|
||||
LIMIT {{ vars.MAIN_SL_TESTING_LIMIT }}
|
||||
|
||||
@ -44,7 +44,6 @@ sources:
|
||||
- name: balances_erc20
|
||||
- name: balances_native
|
||||
- name: contract_reads
|
||||
- name: stablecoin_reads
|
||||
- name: complete_streamline
|
||||
database: "{{ target.database }}"
|
||||
schema: streamline
|
||||
|
||||
Loading…
Reference in New Issue
Block a user