mirror of
https://github.com/FlipsideCrypto/core-models.git
synced 2026-02-06 13:06:59 +00:00
initial commit
This commit is contained in:
parent
ec439d1bc2
commit
082ed7ece5
94
data/silver_bridge__layerzero_bridge_seed.csv
Normal file
94
data/silver_bridge__layerzero_bridge_seed.csv
Normal file
@ -0,0 +1,94 @@
|
||||
chain,eid
|
||||
Ape, 30312
|
||||
Arbitrum, 30110
|
||||
Arbitrum Nova, 30175
|
||||
Astar, 30210
|
||||
Astar zkEVM, 30257
|
||||
Avalanche, 30106
|
||||
Base, 30184
|
||||
Bevm, 30317
|
||||
Binance Smart Chain, 30102
|
||||
Bitlayer, 30314
|
||||
Blast, 30243
|
||||
Bob, 30279
|
||||
Canto, 30159
|
||||
Celo, 30125
|
||||
Codex, 30323
|
||||
Conflux eSpace, 30212
|
||||
Core Blockchain, 30153
|
||||
Cyber, 30283
|
||||
DOS Chain, 30149
|
||||
DeFi Kingdoms, 30115
|
||||
Degen, 30267
|
||||
Dexalot Subnet, 30118
|
||||
Dm2verse, 30315
|
||||
EBI, 30282
|
||||
Edu, 30328
|
||||
Ethereum, 30101
|
||||
Etherlink, 30292
|
||||
Fantom, 30112
|
||||
Flare, 30295
|
||||
Fraxtal, 30255
|
||||
Fuse, 30138
|
||||
Gnosis, 30145
|
||||
Gravity, 30294
|
||||
Harmony, 30116
|
||||
Hedera, 30316
|
||||
Hemi, 30329
|
||||
Homeverse, 30265
|
||||
Horizen EON, 30215
|
||||
Hubble, 30182
|
||||
Iota, 30284
|
||||
Japan Open Chain, 30285
|
||||
Kaia, 30150
|
||||
Kava, 30177
|
||||
Lightlink, 30309
|
||||
Linea, 30183
|
||||
Lisk, 30321
|
||||
Loot, 30197
|
||||
Lyra, 30311
|
||||
Manta, 30217
|
||||
Mantle, 30181
|
||||
Masa, 30263
|
||||
Meritcircle, 30198
|
||||
Merlin, 30266
|
||||
Meter, 30176
|
||||
Metis, 30151
|
||||
Mode, 30260
|
||||
Moonbeam, 30126
|
||||
Moonriver, 30167
|
||||
Morph, 30322
|
||||
Near Aurora, 30211
|
||||
OKXChain, 30155
|
||||
Optimism, 30111
|
||||
Orderly, 30213
|
||||
Peaq, 30302
|
||||
Polygon, 30109
|
||||
Polygon zkEVM, 30158
|
||||
Rari Chain, 30235
|
||||
Reya, 30313
|
||||
Sanko, 30278
|
||||
Scroll, 30214
|
||||
Sei, 30280
|
||||
Shimmer, 30230
|
||||
Skale, 30273
|
||||
Solana, 30168
|
||||
Superposition, 30327
|
||||
Taiko, 30290
|
||||
TelosEVM, 30199
|
||||
Tenet, 30173
|
||||
Tiltyard, 30238
|
||||
Tron, 30420
|
||||
Viction, 30196
|
||||
Worldchain, 30319
|
||||
X Layer, 30274
|
||||
XChain, 30291
|
||||
XPLA, 30216
|
||||
Xai, 30236
|
||||
Zircuit, 30303
|
||||
Zora, 30195
|
||||
inEVM, 30234
|
||||
opBNB, 30202
|
||||
re.al, 30237
|
||||
zkLink, 30301
|
||||
zkSync Era, 30165
|
||||
|
81
data/silver_bridge__meson_chain_id_seed.csv
Normal file
81
data/silver_bridge__meson_chain_id_seed.csv
Normal file
@ -0,0 +1,81 @@
|
||||
chain,short_coin_type
|
||||
ailayer,0x0a59
|
||||
ancient8,0xaaaa
|
||||
Aptos,0x027d
|
||||
Arbitrum,0x2329
|
||||
Aurora,0x0a0a
|
||||
Avalanche,0x2328
|
||||
b2,0x00df
|
||||
Base,0x2105
|
||||
bb,0x1771
|
||||
Beam,0x0504
|
||||
Berachain,0x38de
|
||||
bevm2,0x2ced
|
||||
Bitcoin,0x0000
|
||||
Bitlayer,0x10c5
|
||||
Blast,0x1331
|
||||
BNB Chain,0x02ca
|
||||
Bob,0xed88
|
||||
Celo,0xce10
|
||||
ckb,0x0135
|
||||
Coinweb,0x08ae
|
||||
Conflux,0x01f7
|
||||
Core,0x045c
|
||||
corn,0x6f40
|
||||
Crypto Chain,0x018a
|
||||
duck,0x15a9
|
||||
EOS,0x00c2
|
||||
Ethereum,0x003c
|
||||
Evmos,0x11bc
|
||||
exsat,0x1c20
|
||||
Fantom,0x03ef
|
||||
Flow,0x021b
|
||||
Gnosis,0x02bc
|
||||
Harmony,0x03ff
|
||||
hash,0x03ee
|
||||
hemi,0xa867
|
||||
inevm,0x09dd
|
||||
iotex,0x1251
|
||||
Kaia,0x2019
|
||||
Kroma,0x00ff
|
||||
Linea,0xe708
|
||||
Lisk,0x046f
|
||||
Manta,0x0263
|
||||
Mantle,0x1388
|
||||
Map,0x58f8
|
||||
Merlin,0x6868
|
||||
Metis,0x0440
|
||||
Mode,0x868b
|
||||
Moonbeam,0x0504
|
||||
Moonriver,0x0505
|
||||
Morph,0x0b02
|
||||
Nautilus,0x56ce
|
||||
Near,0x018d
|
||||
Neox,0xba93
|
||||
opBNB,0x00cc
|
||||
Optimism,0x0266
|
||||
Polygon POS,0x03c6
|
||||
Polygon zkEVM,0x044d
|
||||
rsk,0x001e
|
||||
Scroll,0x2750
|
||||
Sei,0x0531
|
||||
SKALE Calypso,0x6c62
|
||||
SKALE Europa,0x9296
|
||||
SKALE Nebula,0xb4b1
|
||||
Solana,0x01f5
|
||||
Soneium,0x074c
|
||||
Sonic,0x0092
|
||||
Sui,0x0310
|
||||
Taiko,0x28c5
|
||||
Taker,0x0465
|
||||
Terra,0x014a
|
||||
Thorchain,0x03a3
|
||||
Thunder,0x006c
|
||||
Ton,0x025f
|
||||
Tron,0x00c3
|
||||
xlayer,0x00c4
|
||||
zeta,0x1b58
|
||||
zkFair,0xa70e
|
||||
zklink,0x5cc4
|
||||
zircuit,0xbf04
|
||||
zkSync Era,0x0324
|
||||
|
117
data/silver_bridge__stargate_chain_id_seed.csv
Normal file
117
data/silver_bridge__stargate_chain_id_seed.csv
Normal file
@ -0,0 +1,117 @@
|
||||
chain_name,chain_id
|
||||
Abstract,324
|
||||
Animechain,372
|
||||
Ape,312
|
||||
Aptos,108
|
||||
Arbitrum,110
|
||||
Arbitrum Nova,175
|
||||
Astar zkEVM,257
|
||||
Avalanche,106
|
||||
BSC,102
|
||||
BOB,279
|
||||
Bahamut,363
|
||||
Base,184
|
||||
Beam,198
|
||||
Berachain,362
|
||||
Bevm,317
|
||||
Bitlayer,314
|
||||
Blast,243
|
||||
Bouncebit,293
|
||||
Canto,159
|
||||
Celo,125
|
||||
Codex,323
|
||||
Concrete,366
|
||||
Conflux eSpace,212
|
||||
CoreDAO,153
|
||||
Corn,331
|
||||
Cronos EVM,359
|
||||
Cronos zkEVM,360
|
||||
Cyber,283
|
||||
DFK,115
|
||||
DM2 Verse,315
|
||||
DOS Chain,149
|
||||
Degen,267
|
||||
Dexalot,118
|
||||
EDU Chain,328
|
||||
Flow EVM,336
|
||||
Ethereum,101
|
||||
Etherlink,292
|
||||
Fantom,112
|
||||
Flare,295
|
||||
Fraxtal,255
|
||||
Fuse,138
|
||||
Glue,342
|
||||
Gnosis,145
|
||||
Goat,361
|
||||
Gravity,294
|
||||
Gunz,371
|
||||
Harmony,116
|
||||
Hedera,316
|
||||
Hemi,329
|
||||
Homeverse,265
|
||||
Horizen EON,215
|
||||
HyperEVM,367
|
||||
Ink,339
|
||||
Japan Open Chain,285
|
||||
Kaia,150
|
||||
Kava,177
|
||||
Lens,373
|
||||
Lightlink,309
|
||||
Linea,183
|
||||
Lisk,321
|
||||
Loot,197
|
||||
Lyra,311
|
||||
Manta,217
|
||||
Mantle,181
|
||||
Merlin,266
|
||||
Meter,176
|
||||
Metis,151
|
||||
Mode,260
|
||||
Moonbeam,126
|
||||
Moonriver,167
|
||||
Morph,322
|
||||
Aurora,211
|
||||
Nibiru,369
|
||||
OKX,155
|
||||
Optimism,111
|
||||
Orderly,213
|
||||
Otherworld Space,341
|
||||
Peaq,302
|
||||
Plume,370
|
||||
Polygon,109
|
||||
Polygon zkEVM,158
|
||||
Rari Chain,235
|
||||
Reya,313
|
||||
Rootstock,333
|
||||
Sanko,278
|
||||
Scroll,214
|
||||
Sei,280
|
||||
Shimmer,230
|
||||
Skale,273
|
||||
Soneium,340
|
||||
Sonic Mainnet,332
|
||||
Sophon,334
|
||||
Story,364
|
||||
Subtensor EVM,374
|
||||
Superposition,327
|
||||
Swell,335
|
||||
Taiko,290
|
||||
TelosEVM,199
|
||||
Tenet,173
|
||||
Tiltyard,238
|
||||
Unichain,320
|
||||
Vana,330
|
||||
Viction,196
|
||||
Worldchain,319
|
||||
XChain,291
|
||||
XDC,365
|
||||
XLayer,274
|
||||
XPLA,216
|
||||
Xai,236
|
||||
Zircuit,303
|
||||
Zora,195
|
||||
inEVM,234
|
||||
opBNB,202
|
||||
re.al,237
|
||||
zkLink,301
|
||||
zkSync Era,165
|
||||
|
61
models/gold/defi/defi__ez_bridge_activity.sql
Normal file
61
models/gold/defi/defi__ez_bridge_activity.sql
Normal file
@ -0,0 +1,61 @@
|
||||
{{ config(
|
||||
materialized = 'view',
|
||||
persist_docs ={ "relation": true,
|
||||
"columns": true },
|
||||
meta ={
|
||||
'database_tags':{
|
||||
'table':{
|
||||
'PROTOCOL': 'MESON, STARGATE, SYMBIOSIS, GASZIP, COREBRIDGE, GASZIP',
|
||||
'PURPOSE': 'BRIDGE'
|
||||
} } }
|
||||
) }}
|
||||
|
||||
SELECT
|
||||
block_number,
|
||||
block_timestamp,
|
||||
origin_from_address,
|
||||
origin_to_address,
|
||||
origin_function_signature,
|
||||
tx_hash,
|
||||
event_index,
|
||||
bridge_address,
|
||||
event_name,
|
||||
platform,
|
||||
sender,
|
||||
receiver,
|
||||
destination_chain_receiver,
|
||||
COALESCE(
|
||||
standard_destination_chain,
|
||||
b.destination_chain
|
||||
) AS destination_chain,
|
||||
destination_chain_id,
|
||||
token_address,
|
||||
token_symbol,
|
||||
amount_unadj,
|
||||
amount,
|
||||
ROUND(
|
||||
CASE
|
||||
WHEN amount_usd < 1e+15 THEN amount_usd
|
||||
ELSE NULL
|
||||
END,
|
||||
2
|
||||
) AS amount_usd,
|
||||
COALESCE (
|
||||
complete_bridge_activity_id,
|
||||
{{ dbt_utils.generate_surrogate_key(
|
||||
['_id']
|
||||
) }}
|
||||
) AS ez_bridge_activity_id,
|
||||
COALESCE(
|
||||
inserted_timestamp,
|
||||
'2000-01-01'
|
||||
) AS inserted_timestamp,
|
||||
COALESCE(
|
||||
modified_timestamp,
|
||||
'2000-01-01'
|
||||
) AS modified_timestamp
|
||||
FROM
|
||||
{{ ref('silver_bridge__complete_bridge_activity') }}
|
||||
b
|
||||
LEFT JOIN {{ ref('silver_bridge__standard_dst_chain_seed') }} C
|
||||
ON b.destination_chain = C.destination_chain
|
||||
54
models/gold/defi/defi__ez_bridge_activity.yml
Normal file
54
models/gold/defi/defi__ez_bridge_activity.yml
Normal file
@ -0,0 +1,54 @@
|
||||
version: 2
|
||||
models:
|
||||
- name: defi__ez_bridge_activity
|
||||
description: '{{ doc("evm_ez_bridge_activity_table_doc") }}'
|
||||
|
||||
columns:
|
||||
- name: BLOCK_NUMBER
|
||||
description: '{{ doc("evm_block_number") }}'
|
||||
- name: BLOCK_TIMESTAMP
|
||||
description: '{{ doc("evm_block_timestamp") }}'
|
||||
- name: TX_HASH
|
||||
description: '{{ doc("evm_logs_tx_hash") }}'
|
||||
- name: CONTRACT_ADDRESS
|
||||
description: '{{ doc("evm_logs_contract_address") }}'
|
||||
- name: EVENT_NAME
|
||||
description: '{{ doc("evm_event_name") }}'
|
||||
- name: EVENT_INDEX
|
||||
description: '{{ doc("evm_event_index") }}'
|
||||
- name: ORIGIN_FUNCTION_SIGNATURE
|
||||
description: '{{ doc("evm_tx_origin_sig") }}'
|
||||
- name: ORIGIN_FROM_ADDRESS
|
||||
description: '{{ doc("evm_bridge_origin_from") }}'
|
||||
- name: ORIGIN_TO_ADDRESS
|
||||
description: '{{ doc("arb_origin_from") }}'
|
||||
- name: PLATFORM
|
||||
description: '{{ doc("evm_bridge_platform") }}'
|
||||
- name: SENDER
|
||||
description: '{{ doc("evm_bridge_sender") }}'
|
||||
- name: RECEIVER
|
||||
description: '{{ doc("evm_bridge_receiver") }}'
|
||||
- name: DESTINATION_CHAIN_RECEIVER
|
||||
description: '{{ doc("evm_bridge_destination_chain_receiver") }}'
|
||||
- name: DESTINATION_CHAIN
|
||||
description: '{{ doc("evm_bridge_destination_chain") }}'
|
||||
- name: DESTINATION_CHAIN_ID
|
||||
description: '{{ doc("evm_bridge_destination_chain_id") }}'
|
||||
- name: BRIDGE_ADDRESS
|
||||
description: '{{ doc("evm_bridge_address") }}'
|
||||
- name: TOKEN_ADDRESS
|
||||
description: '{{ doc("evm_bridge_token_address") }}'
|
||||
- name: TOKEN_SYMBOL
|
||||
description: '{{ doc("evm_bridge_token_symbol") }}'
|
||||
- name: AMOUNT_UNADJ
|
||||
description: '{{ doc("evm_bridge_amount_unadj") }}'
|
||||
- name: AMOUNT
|
||||
description: '{{ doc("evm_bridge_amount") }}'
|
||||
- name: AMOUNT_USD
|
||||
description: '{{ doc("evm_bridge_amount_usd") }}'
|
||||
- name: EZ_BRIDGE_ACTIVITY_ID
|
||||
description: '{{ doc("evm_pk") }}'
|
||||
- name: INSERTED_TIMESTAMP
|
||||
description: '{{ doc("evm_inserted_timestamp") }}'
|
||||
- name: MODIFIED_TIMESTAMP
|
||||
description: '{{ doc("evm_modified_timestamp") }}'
|
||||
@ -0,0 +1,78 @@
|
||||
{{ config(
|
||||
materialized = 'incremental',
|
||||
incremental_strategy = 'delete+insert',
|
||||
unique_key = "block_number",
|
||||
cluster_by = ['block_timestamp::DATE'],
|
||||
tags = ['silver_bridge','defi','bridge','curated']
|
||||
) }}
|
||||
|
||||
WITH unwrap_token AS (
|
||||
|
||||
SELECT
|
||||
block_number,
|
||||
block_timestamp,
|
||||
origin_from_address,
|
||||
origin_to_address,
|
||||
origin_function_signature,
|
||||
contract_address,
|
||||
tx_hash,
|
||||
event_index,
|
||||
'UnwrapToken' AS event_name,
|
||||
'core-bridge' AS platform,
|
||||
'v1' AS version,
|
||||
regexp_substr_all(SUBSTR(DATA, 3, len(DATA)), '.{64}') AS segmented_data,
|
||||
CONCAT('0x', SUBSTR(segmented_data [0] :: STRING, 25, 40)) AS local_token,
|
||||
CONCAT('0x', SUBSTR(segmented_data [1] :: STRING, 25, 40)) AS remote_token,
|
||||
TRY_TO_NUMBER(utils.udf_hex_to_int(segmented_data [2] :: STRING)) AS remote_chain_id,
|
||||
CONCAT('0x', SUBSTR(segmented_data [3] :: STRING, 25, 40)) AS to_address,
|
||||
TRY_TO_NUMBER(utils.udf_hex_to_int(segmented_data [4] :: STRING)) AS amount_unadj,
|
||||
CONCAT(
|
||||
tx_hash :: STRING,
|
||||
'-',
|
||||
event_index :: STRING
|
||||
) AS _log_id,
|
||||
modified_timestamp AS _inserted_timestamp
|
||||
FROM
|
||||
core.core.fact_event_logs
|
||||
WHERE
|
||||
contract_address = '0xa4218e1f39da4aadac971066458db56e901bcbde'
|
||||
AND topic_0 = '0x3b661011d9e0ff8f0dc432bac4ed79eabf70cf52596ed9de985810ef36689e9e'
|
||||
AND tx_succeeded
|
||||
|
||||
{% if is_incremental() %}
|
||||
AND _inserted_timestamp >= (
|
||||
SELECT
|
||||
MAX(_inserted_timestamp) - INTERVAL '12 hours'
|
||||
FROM
|
||||
{{ this }}
|
||||
)
|
||||
AND _inserted_timestamp >= SYSDATE() - INTERVAL '7 day'
|
||||
{% endif %}
|
||||
)
|
||||
SELECT
|
||||
block_number,
|
||||
block_timestamp,
|
||||
origin_from_address,
|
||||
origin_to_address,
|
||||
origin_function_signature,
|
||||
tx_hash,
|
||||
event_index,
|
||||
contract_address AS bridge_address,
|
||||
contract_address,
|
||||
event_name,
|
||||
platform,
|
||||
'v1' AS version,
|
||||
origin_from_address AS sender,
|
||||
to_address AS receiver,
|
||||
receiver AS destination_chain_receiver,
|
||||
remote_chain_id :: STRING AS destination_chain_id,
|
||||
s.chain_name AS destination_chain,
|
||||
local_token AS token_address,
|
||||
amount_unadj,
|
||||
_log_id,
|
||||
_inserted_timestamp
|
||||
FROM
|
||||
unwrap_token
|
||||
LEFT JOIN {{ ref('silver_bridge__stargate_chain_id_seed') }}
|
||||
s
|
||||
ON unwrap_token.remote_chain_id :: STRING = s.chain_id :: STRING
|
||||
@ -0,0 +1,73 @@
|
||||
version: 2
|
||||
models:
|
||||
- name: silver_bridge__corebridge_unwraptoken
|
||||
tests:
|
||||
- dbt_utils.unique_combination_of_columns:
|
||||
combination_of_columns:
|
||||
- _LOG_ID
|
||||
columns:
|
||||
- name: BLOCK_NUMBER
|
||||
tests:
|
||||
- not_null
|
||||
- name: BLOCK_TIMESTAMP
|
||||
tests:
|
||||
- not_null
|
||||
- dbt_expectations.expect_row_values_to_have_recent_data:
|
||||
datepart: day
|
||||
interval: 3
|
||||
- name: ORIGIN_FUNCTION_SIGNATURE
|
||||
tests:
|
||||
- not_null
|
||||
- name: ORIGIN_FROM_ADDRESS
|
||||
tests:
|
||||
- not_null
|
||||
- dbt_expectations.expect_column_values_to_match_regex:
|
||||
regex: 0[xX][0-9a-fA-F]+
|
||||
- name: ORIGIN_TO_ADDRESS
|
||||
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: EVENT_INDEX
|
||||
tests:
|
||||
- not_null
|
||||
- name: EVENT_NAME
|
||||
tests:
|
||||
- not_null
|
||||
- name: BRIDGE_ADDRESS
|
||||
tests:
|
||||
- not_null
|
||||
- dbt_expectations.expect_column_values_to_match_regex:
|
||||
regex: 0[xX][0-9a-fA-F]+
|
||||
- name: SENDER
|
||||
tests:
|
||||
- not_null
|
||||
- dbt_expectations.expect_column_values_to_match_regex:
|
||||
regex: 0[xX][0-9a-fA-F]+
|
||||
- name: RECEIVER
|
||||
tests:
|
||||
- not_null
|
||||
- name: DESTINATION_CHAIN_RECEIVER
|
||||
tests:
|
||||
- not_null
|
||||
- name: AMOUNT_UNADJ
|
||||
tests:
|
||||
- not_null
|
||||
- dbt_expectations.expect_column_values_to_be_in_type_list:
|
||||
column_type_list:
|
||||
- DECIMAL
|
||||
- FLOAT
|
||||
- NUMBER
|
||||
- name: TOKEN_ADDRESS
|
||||
tests:
|
||||
- not_null
|
||||
- dbt_expectations.expect_column_values_to_match_regex:
|
||||
regex: 0[xX][0-9a-fA-F]+
|
||||
- name: _INSERTED_TIMESTAMP
|
||||
tests:
|
||||
- not_null
|
||||
@ -0,0 +1,152 @@
|
||||
{{ config(
|
||||
materialized = 'incremental',
|
||||
incremental_strategy = 'delete+insert',
|
||||
unique_key = "block_number",
|
||||
cluster_by = ['block_timestamp::DATE'],
|
||||
tags = ['silver_bridge','defi','bridge','curated']
|
||||
) }}
|
||||
|
||||
WITH senddeposits AS (
|
||||
|
||||
SELECT
|
||||
block_number,
|
||||
block_timestamp,
|
||||
origin_from_address,
|
||||
origin_to_address,
|
||||
origin_function_signature,
|
||||
tx_hash,
|
||||
event_index,
|
||||
contract_address,
|
||||
regexp_substr_all(SUBSTR(DATA, 3, len(DATA)), '.{64}') AS segmented_data,
|
||||
CONCAT('0x', SUBSTR(segmented_data [1] :: STRING, 25, 40)) AS to_address,
|
||||
TRY_TO_NUMBER(utils.udf_hex_to_int(segmented_data [2] :: STRING)) AS VALUE,
|
||||
TRY_TO_NUMBER(utils.udf_hex_to_int(segmented_data [3] :: STRING)) AS fee,
|
||||
CONCAT('0x', SUBSTR(segmented_data [4] :: STRING, 25, 40)) AS from_address,
|
||||
modified_timestamp AS _inserted_timestamp
|
||||
FROM
|
||||
{{ ref('core__fact_event_logs') }}
|
||||
WHERE
|
||||
contract_address = '0x26da582889f59eaae9da1f063be0140cd93e6a4f' -- gaszip l0 v2
|
||||
AND topic_0 = '0xa22a487af6300dc77db439586e8ce7028fd7f1d734efd33b287bc1e2af4cd162' -- senddeposits
|
||||
AND tx_succeeded
|
||||
|
||||
{% if is_incremental() %}
|
||||
AND _inserted_timestamp >= (
|
||||
SELECT
|
||||
MAX(_inserted_timestamp) - INTERVAL '12 hours'
|
||||
FROM
|
||||
{{ this }}
|
||||
)
|
||||
AND _inserted_timestamp >= SYSDATE() - INTERVAL '7 day'
|
||||
{% endif %}
|
||||
),
|
||||
packetsent AS (
|
||||
SELECT
|
||||
tx_hash,
|
||||
event_index,
|
||||
DATA,
|
||||
CONCAT('0x', SUBSTR(DATA, 155, 40)) AS send_lib,
|
||||
utils.udf_hex_to_int(SUBSTR(DATA, 261, 16)) AS nonce,
|
||||
utils.udf_hex_to_int(SUBSTR(DATA, 277, 8)) AS srcEid,
|
||||
CONCAT('0x', SUBSTR(DATA, 258 + 18 + 8 + 25, 40)) AS src_app_address,
|
||||
utils.udf_hex_to_int(SUBSTR(DATA, 258 + 18 + 8 + 64 + 1, 8)) AS dstEid,
|
||||
CONCAT('0x', SUBSTR(DATA, 258 + 18 + 8 + 64 + 8 + 25, 40)) AS dst_app_address,
|
||||
TRY_TO_NUMBER(utils.udf_hex_to_int(SUBSTR(DATA, 630 + 1, 32))) AS native_amount,
|
||||
CONCAT('0x', SUBSTR(DATA, 630 + 1 + 32 + 24, 40)) AS receiver,
|
||||
ROW_NUMBER() over (
|
||||
PARTITION BY tx_hash
|
||||
ORDER BY
|
||||
event_index ASC
|
||||
) event_rank
|
||||
FROM
|
||||
{{ ref('core__fact_event_logs') }}
|
||||
WHERE
|
||||
contract_address = '0x1a44076050125825900e736c501f859c50fe728c' -- l0 endpoint v2
|
||||
AND topic_0 = '0x1ab700d4ced0c005b164c0f789fd09fcbb0156d4c2041b8a3bfbcd961cd1567f' -- packetsent
|
||||
AND tx_hash IN (
|
||||
SELECT
|
||||
tx_hash
|
||||
FROM
|
||||
senddeposits
|
||||
)
|
||||
AND tx_succeeded
|
||||
|
||||
{% if is_incremental() %}
|
||||
AND _inserted_timestamp >= (
|
||||
SELECT
|
||||
MAX(_inserted_timestamp) - INTERVAL '12 hours'
|
||||
FROM
|
||||
{{ this }}
|
||||
)
|
||||
AND _inserted_timestamp >= SYSDATE() - INTERVAL '7 day'
|
||||
{% endif %}
|
||||
),
|
||||
nativetransfers AS (
|
||||
SELECT
|
||||
tx_hash,
|
||||
TRY_TO_NUMBER(amount_precise_raw) AS amount_precise_raw,
|
||||
'0x40375c92d9faf44d2f9db9bd9ba41a3317a2404f' AS token_address,
|
||||
-- wrapped native
|
||||
ROW_NUMBER() over (
|
||||
PARTITION BY tx_hash
|
||||
ORDER BY
|
||||
trace_index ASC
|
||||
) transfer_rank
|
||||
FROM
|
||||
{{ ref('core__ez_native_transfers') }}
|
||||
WHERE
|
||||
from_address = '0x1a44076050125825900e736c501f859c50fe728c' -- l0 endpoint v2
|
||||
AND to_address = '0x0bcac336466ef7f1e0b5c184aab2867c108331af' -- SendUln302
|
||||
AND tx_hash IN (
|
||||
SELECT
|
||||
tx_hash
|
||||
FROM
|
||||
senddeposits
|
||||
)
|
||||
|
||||
{% if is_incremental() %}
|
||||
AND _inserted_timestamp >= (
|
||||
SELECT
|
||||
MAX(_inserted_timestamp) - INTERVAL '12 hours'
|
||||
FROM
|
||||
{{ this }}
|
||||
)
|
||||
AND _inserted_timestamp >= SYSDATE() - INTERVAL '7 day'
|
||||
{% endif %}
|
||||
)
|
||||
SELECT
|
||||
block_number,
|
||||
block_timestamp,
|
||||
origin_from_address,
|
||||
origin_to_address,
|
||||
origin_function_signature,
|
||||
s.tx_hash,
|
||||
p.event_index,
|
||||
'SendDeposit' AS event_name,
|
||||
'gaszip-lz-v2' AS platform,
|
||||
'v2' AS version,
|
||||
contract_address AS bridge_address,
|
||||
contract_address,
|
||||
from_address AS sender,
|
||||
receiver,
|
||||
receiver AS destination_chain_receiver,
|
||||
nonce,
|
||||
dstEid AS destination_chain_id,
|
||||
chain AS destination_chain,
|
||||
amount_precise_raw AS amount_unadj,
|
||||
token_address,
|
||||
CONCAT(
|
||||
s.tx_hash :: STRING,
|
||||
'-',
|
||||
p.event_index :: STRING
|
||||
) AS _log_id,
|
||||
_inserted_timestamp
|
||||
FROM
|
||||
senddeposits s
|
||||
INNER JOIN packetsent p
|
||||
ON s.tx_hash = p.tx_hash
|
||||
LEFT JOIN nativetransfers t
|
||||
ON p.tx_hash = t.tx_hash
|
||||
AND event_rank = transfer_rank
|
||||
LEFT JOIN {{ ref('silver_bridge__layerzero_bridge_seed') }}
|
||||
ON dstEid = eid
|
||||
@ -0,0 +1,73 @@
|
||||
version: 2
|
||||
models:
|
||||
- name: silver_bridge__gaszip_lz_sentdeposits
|
||||
tests:
|
||||
- dbt_utils.unique_combination_of_columns:
|
||||
combination_of_columns:
|
||||
- _LOG_ID
|
||||
columns:
|
||||
- name: BLOCK_NUMBER
|
||||
tests:
|
||||
- not_null
|
||||
- name: BLOCK_TIMESTAMP
|
||||
tests:
|
||||
- not_null
|
||||
- dbt_expectations.expect_row_values_to_have_recent_data:
|
||||
datepart: day
|
||||
interval: 3
|
||||
- name: ORIGIN_FUNCTION_SIGNATURE
|
||||
tests:
|
||||
- not_null
|
||||
- name: ORIGIN_FROM_ADDRESS
|
||||
tests:
|
||||
- not_null
|
||||
- dbt_expectations.expect_column_values_to_match_regex:
|
||||
regex: 0[xX][0-9a-fA-F]+
|
||||
- name: ORIGIN_TO_ADDRESS
|
||||
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: EVENT_INDEX
|
||||
tests:
|
||||
- not_null
|
||||
- name: EVENT_NAME
|
||||
tests:
|
||||
- not_null
|
||||
- name: BRIDGE_ADDRESS
|
||||
tests:
|
||||
- not_null
|
||||
- dbt_expectations.expect_column_values_to_match_regex:
|
||||
regex: 0[xX][0-9a-fA-F]+
|
||||
- name: SENDER
|
||||
tests:
|
||||
- not_null
|
||||
- dbt_expectations.expect_column_values_to_match_regex:
|
||||
regex: 0[xX][0-9a-fA-F]+
|
||||
- name: RECEIVER
|
||||
tests:
|
||||
- not_null
|
||||
- name: DESTINATION_CHAIN_RECEIVER
|
||||
tests:
|
||||
- not_null
|
||||
- name: AMOUNT_UNADJ
|
||||
tests:
|
||||
- not_null
|
||||
- dbt_expectations.expect_column_values_to_be_in_type_list:
|
||||
column_type_list:
|
||||
- DECIMAL
|
||||
- FLOAT
|
||||
- NUMBER
|
||||
- name: TOKEN_ADDRESS
|
||||
tests:
|
||||
- not_null
|
||||
- dbt_expectations.expect_column_values_to_match_regex:
|
||||
regex: 0[xX][0-9a-fA-F]+
|
||||
- name: _INSERTED_TIMESTAMP
|
||||
tests:
|
||||
- not_null
|
||||
@ -0,0 +1,189 @@
|
||||
{{ config(
|
||||
materialized = 'incremental',
|
||||
incremental_strategy = 'delete+insert',
|
||||
unique_key = "block_number",
|
||||
cluster_by = ['block_timestamp::DATE'],
|
||||
tags = ['silver_bridge','defi','bridge','curated']
|
||||
) }}
|
||||
|
||||
WITH token_transfers AS (
|
||||
|
||||
SELECT
|
||||
block_number,
|
||||
block_timestamp,
|
||||
origin_function_signature,
|
||||
origin_from_address,
|
||||
origin_to_address,
|
||||
tx_hash,
|
||||
event_index,
|
||||
contract_address,
|
||||
from_address,
|
||||
to_address,
|
||||
raw_amount,
|
||||
CONCAT(
|
||||
tx_hash :: STRING,
|
||||
'-',
|
||||
event_index :: STRING
|
||||
) AS _log_id,
|
||||
modified_timestamp AS _inserted_timestamp
|
||||
FROM
|
||||
{{ ref('core__ez_token_transfers') }}
|
||||
WHERE
|
||||
from_address <> '0x0000000000000000000000000000000000000000'
|
||||
AND to_address = '0x25ab3efd52e6470681ce037cd546dc60726948d3'
|
||||
|
||||
{% if is_incremental() %}
|
||||
AND _inserted_timestamp >= (
|
||||
SELECT
|
||||
MAX(_inserted_timestamp) - INTERVAL '12 hours'
|
||||
FROM
|
||||
{{ this }}
|
||||
)
|
||||
AND _inserted_timestamp >= SYSDATE() - INTERVAL '7 day'
|
||||
{% endif %}
|
||||
),
|
||||
native_transfers AS (
|
||||
SELECT
|
||||
et.block_number,
|
||||
et.block_timestamp,
|
||||
et.tx_hash,
|
||||
tx.from_address AS origin_from_address,
|
||||
tx.to_address AS origin_to_address,
|
||||
tx.origin_function_signature,
|
||||
et.from_address,
|
||||
et.to_address,
|
||||
amount_precise_raw,
|
||||
et.ez_native_transfers_id AS _call_id,
|
||||
et.modified_timestamp AS _inserted_timestamp
|
||||
FROM
|
||||
{{ ref('core__ez_native_transfers') }}
|
||||
et
|
||||
INNER JOIN {{ ref('core__fact_transactions') }}
|
||||
tx
|
||||
ON et.block_number = tx.block_number
|
||||
AND et.tx_hash = tx.tx_hash
|
||||
WHERE
|
||||
et.to_address = '0x25ab3efd52e6470681ce037cd546dc60726948d3'
|
||||
and et.tx_hash not in (select tx_hash from token_transfers)
|
||||
|
||||
{% if is_incremental() %}
|
||||
AND _inserted_timestamp >= (
|
||||
SELECT
|
||||
MAX(_inserted_timestamp) - INTERVAL '12 hours'
|
||||
FROM
|
||||
{{ this }}
|
||||
)
|
||||
{% endif %}
|
||||
),
|
||||
all_transfers AS (
|
||||
SELECT
|
||||
block_number,
|
||||
block_timestamp,
|
||||
origin_from_address,
|
||||
origin_to_address,
|
||||
origin_function_signature,
|
||||
tx_hash,
|
||||
event_index,
|
||||
'Transfer' AS event_name,
|
||||
to_address AS bridge_address,
|
||||
from_address AS sender,
|
||||
to_address AS receiver,
|
||||
raw_amount AS amount_unadj,
|
||||
contract_address AS token_address,
|
||||
{{ dbt_utils.generate_surrogate_key(
|
||||
['_log_id']
|
||||
) }} AS _id,
|
||||
_inserted_timestamp
|
||||
FROM
|
||||
token_transfers
|
||||
UNION ALL
|
||||
SELECT
|
||||
block_number,
|
||||
block_timestamp,
|
||||
origin_from_address,
|
||||
origin_to_address,
|
||||
origin_function_signature,
|
||||
tx_hash,
|
||||
NULL AS event_index,
|
||||
NULL AS event_name,
|
||||
to_address AS bridge_address,
|
||||
from_address AS sender,
|
||||
to_address AS receiver,
|
||||
amount_precise_raw AS amount_unadj,
|
||||
LOWER('0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c') AS token_address,
|
||||
{{ dbt_utils.generate_surrogate_key(
|
||||
['_call_id']
|
||||
) }} AS _id,
|
||||
_inserted_timestamp
|
||||
FROM
|
||||
native_transfers
|
||||
),
|
||||
dst_info AS (
|
||||
SELECT
|
||||
block_number,
|
||||
tx_hash,
|
||||
topics [1] :: STRING AS encoded_data,
|
||||
SUBSTR(RIGHT(encoded_data, 12), 1, 4) AS destination_chain_id,
|
||||
CONCAT(
|
||||
tx_hash :: STRING,
|
||||
'-',
|
||||
event_index :: STRING
|
||||
) AS _log_id,
|
||||
modified_timestamp AS _inserted_timestamp
|
||||
FROM
|
||||
{{ ref('core__fact_event_logs') }}
|
||||
WHERE
|
||||
contract_address = '0x25ab3efd52e6470681ce037cd546dc60726948d3'
|
||||
AND topic_0 IN (
|
||||
'0x5ce4019f772fda6cb703b26bce3ec3006eb36b73f1d3a0eb441213317d9f5e9d',
|
||||
'0x8d92c805c252261fcfff21ee60740eb8a38922469a7e6ee396976d57c22fc1c9'
|
||||
)
|
||||
AND tx_succeeded
|
||||
|
||||
{% if is_incremental() %}
|
||||
AND _inserted_timestamp >= (
|
||||
SELECT
|
||||
MAX(_inserted_timestamp) - INTERVAL '16 hours'
|
||||
FROM
|
||||
{{ this }}
|
||||
)
|
||||
{% endif %}
|
||||
)
|
||||
SELECT
|
||||
t.block_number,
|
||||
block_timestamp,
|
||||
origin_from_address,
|
||||
origin_to_address,
|
||||
origin_function_signature,
|
||||
t.tx_hash,
|
||||
event_index,
|
||||
event_name,
|
||||
'meson' AS platform,
|
||||
bridge_address,
|
||||
sender,
|
||||
receiver,
|
||||
CASE
|
||||
WHEN origin_from_address = '0x0000000000000000000000000000000000000000' THEN sender
|
||||
ELSE origin_from_address
|
||||
END AS destination_chain_receiver,
|
||||
amount_unadj,
|
||||
destination_chain_id,
|
||||
COALESCE(LOWER(chain), 'other') AS destination_chain,
|
||||
token_address,
|
||||
_id,
|
||||
t._inserted_timestamp
|
||||
FROM
|
||||
all_transfers t
|
||||
INNER JOIN dst_info d
|
||||
ON t.tx_hash = d.tx_hash
|
||||
AND t.block_number = d.block_number
|
||||
LEFT JOIN {{ ref('silver_bridge__meson_chain_id_seed') }}
|
||||
s
|
||||
ON d.destination_chain_id :: STRING = RIGHT(
|
||||
s.short_coin_type,
|
||||
4
|
||||
) :: STRING
|
||||
WHERE
|
||||
origin_to_address IS NOT NULL qualify (ROW_NUMBER() over (PARTITION BY _id
|
||||
ORDER BY
|
||||
t._inserted_timestamp DESC)) = 1
|
||||
@ -0,0 +1,52 @@
|
||||
version: 2
|
||||
models:
|
||||
- name: silver_bridge__meson_transfer
|
||||
tests:
|
||||
- dbt_utils.unique_combination_of_columns:
|
||||
combination_of_columns:
|
||||
- _ID
|
||||
columns:
|
||||
- name: BLOCK_NUMBER
|
||||
tests:
|
||||
- not_null
|
||||
- name: BLOCK_TIMESTAMP
|
||||
tests:
|
||||
- not_null
|
||||
- dbt_expectations.expect_column_values_to_be_in_type_list:
|
||||
column_type_list:
|
||||
- TIMESTAMP_LTZ
|
||||
- TIMESTAMP_NTZ
|
||||
- name: TX_HASH
|
||||
tests:
|
||||
- not_null
|
||||
- dbt_expectations.expect_column_values_to_match_regex:
|
||||
regex: 0[xX][0-9a-fA-F]+
|
||||
- name: TOKEN_ADDRESS
|
||||
tests:
|
||||
- not_null
|
||||
- name: SENDER
|
||||
tests:
|
||||
- not_null
|
||||
- dbt_expectations.expect_column_values_to_match_regex:
|
||||
regex: 0[xX][0-9a-fA-F]+
|
||||
- name: DESTINATION_CHAIN_RECEIVER
|
||||
tests:
|
||||
- not_null
|
||||
- name: BRIDGE_ADDRESS
|
||||
tests:
|
||||
- not_null
|
||||
- dbt_expectations.expect_column_values_to_match_regex:
|
||||
regex: 0[xX][0-9a-fA-F]+
|
||||
- name: AMOUNT_UNADJ
|
||||
tests:
|
||||
- not_null
|
||||
- dbt_expectations.expect_column_values_to_be_in_type_list:
|
||||
column_type_list:
|
||||
- DECIMAL
|
||||
- FLOAT
|
||||
- NUMBER
|
||||
- name: _INSERTED_TIMESTAMP
|
||||
tests:
|
||||
- dbt_expectations.expect_row_values_to_have_recent_data:
|
||||
datepart: day
|
||||
interval: 7
|
||||
@ -0,0 +1,520 @@
|
||||
-- depends_on: {{ ref('silver__complete_token_prices') }}
|
||||
{{ config(
|
||||
materialized = 'incremental',
|
||||
incremental_strategy = 'delete+insert',
|
||||
unique_key = ['block_number','platform','version'],
|
||||
cluster_by = ['block_timestamp::DATE','platform'],
|
||||
post_hook = "ALTER TABLE {{ this }} ADD SEARCH OPTIMIZATION ON EQUALITY(tx_hash, origin_from_address, origin_to_address, origin_function_signature, bridge_address, sender, receiver, destination_chain_receiver, destination_chain_id, destination_chain, token_address, token_symbol), SUBSTRING(origin_function_signature, bridge_address, sender, receiver, destination_chain_receiver, destination_chain, token_address, token_symbol)",
|
||||
tags = ['curated','reorg','heal']
|
||||
) }}
|
||||
|
||||
WITH corebridge AS (
|
||||
|
||||
SELECT
|
||||
block_number,
|
||||
block_timestamp,
|
||||
origin_from_address,
|
||||
origin_to_address,
|
||||
origin_function_signature,
|
||||
tx_hash,
|
||||
event_index,
|
||||
bridge_address,
|
||||
event_name,
|
||||
platform,
|
||||
version,
|
||||
sender,
|
||||
receiver,
|
||||
destination_chain_receiver,
|
||||
destination_chain_id :: STRING AS destination_chain_id,
|
||||
destination_chain,
|
||||
token_address,
|
||||
NULL AS token_symbol,
|
||||
amount_unadj,
|
||||
_log_id AS _id,
|
||||
_inserted_timestamp
|
||||
FROM
|
||||
{{ ref('silver_bridge__corebridge_unwraptoken') }}
|
||||
|
||||
{% if is_incremental() and 'corebridge' not in var('HEAL_MODELS') %}
|
||||
WHERE
|
||||
_inserted_timestamp >= (
|
||||
SELECT
|
||||
MAX(_inserted_timestamp) - INTERVAL '{{ var("LOOKBACK", "4 hours") }}'
|
||||
FROM
|
||||
{{ this }}
|
||||
)
|
||||
{% endif %}
|
||||
),
|
||||
gaszip_lz AS (
|
||||
SELECT
|
||||
block_number,
|
||||
block_timestamp,
|
||||
origin_from_address,
|
||||
origin_to_address,
|
||||
origin_function_signature,
|
||||
tx_hash,
|
||||
event_index,
|
||||
bridge_address,
|
||||
event_name,
|
||||
platform,
|
||||
version,
|
||||
sender,
|
||||
receiver,
|
||||
destination_chain_receiver,
|
||||
destination_chain_id :: STRING AS destination_chain_id,
|
||||
destination_chain,
|
||||
token_address,
|
||||
NULL AS token_symbol,
|
||||
amount_unadj,
|
||||
_log_id AS _id,
|
||||
_inserted_timestamp
|
||||
FROM
|
||||
{{ ref('silver_bridge__gaszip_lz_sentdeposits') }}
|
||||
|
||||
{% if is_incremental() and 'gaszip_lz' not in var('HEAL_MODELS') %}
|
||||
WHERE
|
||||
_inserted_timestamp >= (
|
||||
SELECT
|
||||
MAX(_inserted_timestamp) - INTERVAL '{{ var("LOOKBACK", "4 hours") }}'
|
||||
FROM
|
||||
{{ this }}
|
||||
)
|
||||
{% endif %}
|
||||
),
|
||||
meson AS (
|
||||
SELECT
|
||||
block_number,
|
||||
block_timestamp,
|
||||
origin_from_address,
|
||||
origin_to_address,
|
||||
origin_function_signature,
|
||||
tx_hash,
|
||||
event_index,
|
||||
bridge_address,
|
||||
event_name,
|
||||
platform,
|
||||
'v1' AS version,
|
||||
sender,
|
||||
receiver,
|
||||
destination_chain_receiver,
|
||||
destination_chain_id :: STRING AS destination_chain_id,
|
||||
destination_chain,
|
||||
token_address,
|
||||
NULL AS token_symbol,
|
||||
amount_unadj,
|
||||
_id,
|
||||
_inserted_timestamp
|
||||
FROM
|
||||
{{ ref('silver_bridge__meson_transfer') }}
|
||||
|
||||
{% if is_incremental() and 'meson' not in var('HEAL_MODELS') %}
|
||||
WHERE
|
||||
_inserted_timestamp >= (
|
||||
SELECT
|
||||
MAX(_inserted_timestamp) - INTERVAL '{{ var("LOOKBACK", "4 hours") }}'
|
||||
FROM
|
||||
{{ this }}
|
||||
)
|
||||
{% endif %}
|
||||
),
|
||||
stargate_v2 AS (
|
||||
SELECT
|
||||
block_number,
|
||||
block_timestamp,
|
||||
origin_from_address,
|
||||
origin_to_address,
|
||||
origin_function_signature,
|
||||
tx_hash,
|
||||
event_index,
|
||||
bridge_address,
|
||||
event_name,
|
||||
platform,
|
||||
'v2' AS version,
|
||||
sender,
|
||||
receiver,
|
||||
destination_chain_receiver,
|
||||
destination_chain_id :: STRING AS destination_chain_id,
|
||||
destination_chain,
|
||||
token_address,
|
||||
NULL AS token_symbol,
|
||||
amount_unadj,
|
||||
_log_id AS _id,
|
||||
_inserted_timestamp
|
||||
FROM
|
||||
{{ ref('silver_bridge__stargate_v2_oftsent') }}
|
||||
|
||||
{% if is_incremental() and 'stargate_v2' not in var('HEAL_MODELS') %}
|
||||
WHERE
|
||||
_inserted_timestamp >= (
|
||||
SELECT
|
||||
MAX(_inserted_timestamp) - INTERVAL '{{ var("LOOKBACK", "4 hours") }}'
|
||||
FROM
|
||||
{{ this }}
|
||||
)
|
||||
{% endif %}
|
||||
),
|
||||
symbiosis AS (
|
||||
SELECT
|
||||
block_number,
|
||||
block_timestamp,
|
||||
origin_from_address,
|
||||
origin_to_address,
|
||||
origin_function_signature,
|
||||
tx_hash,
|
||||
event_index,
|
||||
bridge_address,
|
||||
event_name,
|
||||
platform,
|
||||
'v1' AS version,
|
||||
sender,
|
||||
receiver,
|
||||
destination_chain_receiver,
|
||||
destination_chain_id :: STRING AS destination_chain_id,
|
||||
NULL AS destination_chain,
|
||||
token_address,
|
||||
NULL AS token_symbol,
|
||||
amount_unadj,
|
||||
_log_id AS _id,
|
||||
_inserted_timestamp
|
||||
FROM
|
||||
{{ ref('silver_bridge__symbiosis_synthesizerequest') }}
|
||||
|
||||
{% if is_incremental() and 'symbiosis' not in var('HEAL_MODELS') %}
|
||||
WHERE
|
||||
_inserted_timestamp >= (
|
||||
SELECT
|
||||
MAX(_inserted_timestamp) - INTERVAL '{{ var("LOOKBACK", "4 hours") }}'
|
||||
FROM
|
||||
{{ this }}
|
||||
)
|
||||
{% endif %}
|
||||
),
|
||||
all_protocols AS (
|
||||
SELECT
|
||||
*
|
||||
FROM
|
||||
corebridge
|
||||
UNION ALL
|
||||
SELECT
|
||||
*
|
||||
FROM
|
||||
gaszip_lz
|
||||
UNION ALL
|
||||
SELECT
|
||||
*
|
||||
FROM
|
||||
meson
|
||||
UNION ALL
|
||||
SELECT
|
||||
*
|
||||
FROM
|
||||
stargate_v2
|
||||
UNION ALL
|
||||
SELECT
|
||||
*
|
||||
FROM
|
||||
symbiosis
|
||||
),
|
||||
complete_bridge_activity AS (
|
||||
SELECT
|
||||
block_number,
|
||||
block_timestamp,
|
||||
origin_from_address,
|
||||
origin_to_address,
|
||||
origin_function_signature,
|
||||
tx_hash,
|
||||
event_index,
|
||||
bridge_address,
|
||||
event_name,
|
||||
platform,
|
||||
version,
|
||||
sender,
|
||||
receiver,
|
||||
destination_chain_receiver,
|
||||
CASE
|
||||
WHEN CONCAT(
|
||||
platform,
|
||||
'-',
|
||||
version
|
||||
) IN (
|
||||
'meson-v1',
|
||||
'stargate-v2-v2',
|
||||
'gaszip-lz-v2-v2',
|
||||
'core-bridge-v1'
|
||||
) THEN destination_chain_id :: STRING
|
||||
WHEN d.chain_id IS NULL THEN destination_chain_id :: STRING
|
||||
ELSE d.chain_id :: STRING
|
||||
END AS destination_chain_id,
|
||||
CASE
|
||||
WHEN CONCAT(
|
||||
platform,
|
||||
'-',
|
||||
version
|
||||
) IN (
|
||||
'meson-v1'
|
||||
) THEN LOWER(destination_chain)
|
||||
WHEN d.chain IS NULL THEN LOWER(destination_chain)
|
||||
ELSE LOWER(
|
||||
d.chain
|
||||
)
|
||||
END AS destination_chain,
|
||||
b.token_address,
|
||||
CASE
|
||||
WHEN platform = 'axelar' THEN COALESCE(
|
||||
C.token_symbol,
|
||||
b.token_symbol
|
||||
)
|
||||
ELSE C.token_symbol
|
||||
END AS token_symbol,
|
||||
C.token_decimals AS token_decimals,
|
||||
amount_unadj,
|
||||
CASE
|
||||
WHEN C.token_decimals IS NOT NULL THEN (amount_unadj / pow(10, C.token_decimals))
|
||||
ELSE amount_unadj
|
||||
END AS amount,
|
||||
CASE
|
||||
WHEN C.token_decimals IS NOT NULL THEN ROUND(
|
||||
amount * p.price,
|
||||
2
|
||||
)
|
||||
ELSE NULL
|
||||
END AS amount_usd,
|
||||
_id,
|
||||
b._inserted_timestamp
|
||||
FROM
|
||||
all_protocols b
|
||||
LEFT JOIN {{ ref('silver__contracts') }} C
|
||||
ON b.token_address = C.contract_address
|
||||
LEFT JOIN {{ ref('price__ez_prices_hourly') }}
|
||||
p
|
||||
ON b.token_address = p.token_address
|
||||
AND DATE_TRUNC(
|
||||
'hour',
|
||||
block_timestamp
|
||||
) = p.hour
|
||||
LEFT JOIN {{ source(
|
||||
'external_gold_defillama',
|
||||
'dim_chains'
|
||||
) }}
|
||||
d
|
||||
ON d.chain_id :: STRING = b.destination_chain_id :: STRING
|
||||
OR LOWER(
|
||||
d.chain
|
||||
) = LOWER(
|
||||
b.destination_chain
|
||||
)
|
||||
),
|
||||
|
||||
{% if is_incremental() and var(
|
||||
'HEAL_MODEL'
|
||||
) %}
|
||||
heal_model AS (
|
||||
SELECT
|
||||
block_number,
|
||||
block_timestamp,
|
||||
origin_from_address,
|
||||
origin_to_address,
|
||||
origin_function_signature,
|
||||
tx_hash,
|
||||
event_index,
|
||||
bridge_address,
|
||||
event_name,
|
||||
platform,
|
||||
version,
|
||||
sender,
|
||||
receiver,
|
||||
destination_chain_receiver,
|
||||
destination_chain_id,
|
||||
destination_chain,
|
||||
t0.token_address,
|
||||
C.token_symbol AS token_symbol,
|
||||
C.token_decimals AS token_decimals,
|
||||
amount_unadj,
|
||||
CASE
|
||||
WHEN C.token_decimals IS NOT NULL THEN (amount_unadj / pow(10, C.token_decimals))
|
||||
ELSE amount_unadj
|
||||
END AS amount_heal,
|
||||
CASE
|
||||
WHEN C.token_decimals IS NOT NULL THEN amount_heal * p.price
|
||||
ELSE NULL
|
||||
END AS amount_usd_heal,
|
||||
_id,
|
||||
t0._inserted_timestamp
|
||||
FROM
|
||||
{{ this }}
|
||||
t0
|
||||
LEFT JOIN {{ ref('silver__contracts') }} C
|
||||
ON t0.token_address = C.contract_address
|
||||
LEFT JOIN {{ ref('price__ez_prices_hourly') }}
|
||||
p
|
||||
ON t0.token_address = p.token_address
|
||||
AND DATE_TRUNC(
|
||||
'hour',
|
||||
block_timestamp
|
||||
) = p.hour
|
||||
WHERE
|
||||
CONCAT(
|
||||
t0.block_number,
|
||||
'-',
|
||||
t0.platform,
|
||||
'-',
|
||||
t0.version
|
||||
) IN (
|
||||
SELECT
|
||||
CONCAT(
|
||||
t1.block_number,
|
||||
'-',
|
||||
t1.platform,
|
||||
'-',
|
||||
t1.version
|
||||
)
|
||||
FROM
|
||||
{{ this }}
|
||||
t1
|
||||
WHERE
|
||||
t1.token_decimals IS NULL
|
||||
AND t1._inserted_timestamp < (
|
||||
SELECT
|
||||
MAX(
|
||||
_inserted_timestamp
|
||||
) - INTERVAL '{{ var("LOOKBACK", "4 hours") }}'
|
||||
FROM
|
||||
{{ this }}
|
||||
)
|
||||
AND EXISTS (
|
||||
SELECT
|
||||
1
|
||||
FROM
|
||||
{{ ref('silver__contracts') }} C
|
||||
WHERE
|
||||
C._inserted_timestamp > DATEADD('DAY', -14, SYSDATE())
|
||||
AND C.token_decimals IS NOT NULL
|
||||
AND C.contract_address = t1.token_address)
|
||||
GROUP BY
|
||||
1
|
||||
)
|
||||
OR CONCAT(
|
||||
t0.block_number,
|
||||
'-',
|
||||
t0.platform,
|
||||
'-',
|
||||
t0.version
|
||||
) IN (
|
||||
SELECT
|
||||
CONCAT(
|
||||
t2.block_number,
|
||||
'-',
|
||||
t2.platform,
|
||||
'-',
|
||||
t2.version
|
||||
)
|
||||
FROM
|
||||
{{ this }}
|
||||
t2
|
||||
WHERE
|
||||
t2.amount_usd IS NULL
|
||||
AND t2._inserted_timestamp < (
|
||||
SELECT
|
||||
MAX(
|
||||
_inserted_timestamp
|
||||
) - INTERVAL '{{ var("LOOKBACK", "4 hours") }}'
|
||||
FROM
|
||||
{{ this }}
|
||||
)
|
||||
AND EXISTS (
|
||||
SELECT
|
||||
1
|
||||
FROM
|
||||
{{ ref('silver__complete_token_prices') }}
|
||||
p
|
||||
WHERE
|
||||
p._inserted_timestamp > DATEADD('DAY', -14, SYSDATE())
|
||||
AND p.price IS NOT NULL
|
||||
AND p.token_address = t2.token_address
|
||||
AND p.hour = DATE_TRUNC(
|
||||
'hour',
|
||||
t2.block_timestamp
|
||||
)
|
||||
)
|
||||
GROUP BY
|
||||
1
|
||||
)
|
||||
),
|
||||
{% endif %}
|
||||
|
||||
FINAL AS (
|
||||
SELECT
|
||||
*
|
||||
FROM
|
||||
complete_bridge_activity
|
||||
|
||||
{% if is_incremental() and var(
|
||||
'HEAL_MODEL'
|
||||
) %}
|
||||
UNION ALL
|
||||
SELECT
|
||||
block_number,
|
||||
block_timestamp,
|
||||
origin_from_address,
|
||||
origin_to_address,
|
||||
origin_function_signature,
|
||||
tx_hash,
|
||||
event_index,
|
||||
bridge_address,
|
||||
event_name,
|
||||
platform,
|
||||
version,
|
||||
sender,
|
||||
receiver,
|
||||
destination_chain_receiver,
|
||||
destination_chain_id,
|
||||
destination_chain,
|
||||
token_address,
|
||||
token_symbol,
|
||||
token_decimals,
|
||||
amount_unadj,
|
||||
amount_heal AS amount,
|
||||
amount_usd_heal AS amount_usd,
|
||||
_id,
|
||||
_inserted_timestamp
|
||||
FROM
|
||||
heal_model
|
||||
{% endif %}
|
||||
)
|
||||
SELECT
|
||||
block_number,
|
||||
block_timestamp,
|
||||
origin_from_address,
|
||||
origin_to_address,
|
||||
origin_function_signature,
|
||||
tx_hash,
|
||||
event_index,
|
||||
bridge_address,
|
||||
event_name,
|
||||
platform,
|
||||
version,
|
||||
sender,
|
||||
receiver,
|
||||
destination_chain_receiver,
|
||||
destination_chain_id,
|
||||
destination_chain,
|
||||
token_address,
|
||||
token_symbol,
|
||||
token_decimals,
|
||||
amount_unadj,
|
||||
amount,
|
||||
amount_usd,
|
||||
_id,
|
||||
_inserted_timestamp,
|
||||
{{ dbt_utils.generate_surrogate_key(
|
||||
['_id']
|
||||
) }} AS complete_bridge_activity_id,
|
||||
SYSDATE() AS inserted_timestamp,
|
||||
SYSDATE() AS modified_timestamp,
|
||||
'{{ invocation_id }}' AS _invocation_id
|
||||
FROM
|
||||
FINAL
|
||||
WHERE
|
||||
destination_chain <> 'core' qualify (ROW_NUMBER() over (PARTITION BY _id
|
||||
ORDER BY
|
||||
_inserted_timestamp DESC)) = 1
|
||||
@ -0,0 +1,83 @@
|
||||
version: 2
|
||||
models:
|
||||
- name: silver_bridge__complete_bridge_activity
|
||||
tests:
|
||||
- dbt_utils.unique_combination_of_columns:
|
||||
combination_of_columns:
|
||||
- _ID
|
||||
columns:
|
||||
- name: BLOCK_NUMBER
|
||||
tests:
|
||||
- not_null
|
||||
- name: BLOCK_TIMESTAMP
|
||||
tests:
|
||||
- not_null
|
||||
- name: ORIGIN_FUNCTION_SIGNATURE
|
||||
tests:
|
||||
- not_null
|
||||
- name: ORIGIN_FROM_ADDRESS
|
||||
tests:
|
||||
- not_null
|
||||
- dbt_expectations.expect_column_values_to_match_regex:
|
||||
regex: 0[xX][0-9a-fA-F]+
|
||||
- name: ORIGIN_TO_ADDRESS
|
||||
tests:
|
||||
- not_null:
|
||||
where: PLATFORM NOT IN ('stargate')
|
||||
- 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: EVENT_INDEX
|
||||
tests:
|
||||
- not_null:
|
||||
where: VERSION <> 'v1-native' AND PLATFORM NOT IN ('wormhole','meson')
|
||||
- name: EVENT_NAME
|
||||
tests:
|
||||
- not_null:
|
||||
where: VERSION <> 'v1-native' AND PLATFORM NOT IN ('wormhole','meson')
|
||||
- name: BRIDGE_ADDRESS
|
||||
tests:
|
||||
- not_null
|
||||
- dbt_expectations.expect_column_values_to_match_regex:
|
||||
regex: 0[xX][0-9a-fA-F]+
|
||||
- name: DESTINATION_CHAIN
|
||||
- not_null
|
||||
- name: DESTINATION_CHAIN_RECEIVER
|
||||
tests:
|
||||
- not_null
|
||||
- name: PLATFORM
|
||||
- not_null
|
||||
- name: VERSION
|
||||
- not_null
|
||||
- name: SENDER
|
||||
tests:
|
||||
- not_null
|
||||
- dbt_expectations.expect_column_values_to_match_regex:
|
||||
regex: 0[xX][0-9a-fA-F]+
|
||||
- name: RECEIVER
|
||||
tests:
|
||||
- not_null
|
||||
- dbt_expectations.expect_column_values_to_match_regex:
|
||||
regex: 0[xX][0-9a-fA-F]+
|
||||
- name: AMOUNT_UNADJ
|
||||
tests:
|
||||
- not_null
|
||||
- dbt_expectations.expect_column_values_to_be_in_type_list:
|
||||
column_type_list:
|
||||
- DECIMAL
|
||||
- FLOAT
|
||||
- NUMBER
|
||||
- name: TOKEN_ADDRESS
|
||||
tests:
|
||||
- not_null
|
||||
- dbt_expectations.expect_column_values_to_match_regex:
|
||||
regex: 0[xX][0-9a-fA-F]+
|
||||
- name: _INSERTED_TIMESTAMP
|
||||
tests:
|
||||
- dbt_expectations.expect_row_values_to_have_recent_data:
|
||||
datepart: day
|
||||
interval: 3
|
||||
@ -0,0 +1,254 @@
|
||||
{{ config(
|
||||
materialized = 'incremental',
|
||||
incremental_strategy = 'delete+insert',
|
||||
unique_key = "block_number",
|
||||
cluster_by = ['block_timestamp::DATE'],
|
||||
tags = ['silver_bridge','defi','bridge','curated']
|
||||
) }}
|
||||
|
||||
WITH stargate_contracts AS (
|
||||
|
||||
SELECT
|
||||
block_timestamp,
|
||||
tx_hash,
|
||||
to_address AS contract_address,
|
||||
POSITION(
|
||||
'00000000000000000000000000000000000000000000000000000000000000c0',
|
||||
input,
|
||||
LENGTH(input) - 703
|
||||
) AS argument_start,
|
||||
SUBSTR(input, argument_start, LENGTH(input) - argument_start + 1) AS arguments,
|
||||
regexp_SUBSTR_all(SUBSTR(arguments, 0, len(arguments)), '.{64}') AS segmented_arguments,
|
||||
ARRAY_SIZE(segmented_arguments) AS data_size,
|
||||
CONCAT(
|
||||
'0x',
|
||||
SUBSTR(
|
||||
segmented_arguments [2] :: STRING,
|
||||
25,
|
||||
40
|
||||
)
|
||||
) AS token_address,
|
||||
utils.udf_hex_to_int(
|
||||
segmented_arguments [data_size-8] :: STRING
|
||||
) AS decimals,
|
||||
utils.udf_hex_to_int(
|
||||
segmented_arguments [data_size-7] :: STRING
|
||||
) AS shared_decimals,
|
||||
CONCAT(
|
||||
'0x',
|
||||
SUBSTR(
|
||||
segmented_arguments [data_size-6] :: STRING,
|
||||
25,
|
||||
40
|
||||
)
|
||||
) AS endpoint,
|
||||
CONCAT(
|
||||
'0x',
|
||||
SUBSTR(
|
||||
segmented_arguments [data_size-5] :: STRING,
|
||||
25,
|
||||
40
|
||||
)
|
||||
) AS owner,
|
||||
utils.udf_hex_to_string(
|
||||
segmented_arguments [data_size-3] :: STRING
|
||||
) AS token_name,
|
||||
utils.udf_hex_to_string(
|
||||
segmented_arguments [data_size-1] :: STRING
|
||||
) AS token_symbol
|
||||
FROM
|
||||
{{ ref('core__fact_traces') }}
|
||||
WHERE
|
||||
origin_function_signature = '0x61014060'
|
||||
AND from_address = '0x1d7c6783328c145393e84fb47a7f7c548f5ee28d'
|
||||
AND trace_succeeded
|
||||
|
||||
{% if is_incremental() %}
|
||||
AND _inserted_timestamp >= (
|
||||
SELECT
|
||||
MAX(_inserted_timestamp) - INTERVAL '12 hours'
|
||||
FROM
|
||||
{{ this }}
|
||||
)
|
||||
AND _inserted_timestamp >= SYSDATE() - INTERVAL '7 day'
|
||||
{% endif %}
|
||||
),
|
||||
oft_sent AS (
|
||||
-- bridging transactions
|
||||
SELECT
|
||||
block_number,
|
||||
block_timestamp,
|
||||
tx_hash,
|
||||
origin_function_signature,
|
||||
origin_from_address,
|
||||
origin_to_address,
|
||||
contract_address,
|
||||
event_index,
|
||||
'OFTSent' AS event_name,
|
||||
'stargate-v2' AS platform,
|
||||
topic_1 AS guid,
|
||||
CONCAT('0x', SUBSTR(topic_2, 27, 40)) AS from_address,
|
||||
regexp_substr_all(SUBSTR(DATA, 3, len(DATA)), '.{64}') AS segmented_data,
|
||||
TRY_TO_NUMBER(utils.udf_hex_to_int(segmented_data [0] :: STRING)) AS dstEid,
|
||||
TRY_TO_NUMBER(utils.udf_hex_to_int(segmented_data [1] :: STRING)) AS amountsentld,
|
||||
TRY_TO_NUMBER(utils.udf_hex_to_int(segmented_data [2] :: STRING)) AS amountreceivedld,
|
||||
CONCAT(
|
||||
tx_hash :: STRING,
|
||||
'-',
|
||||
event_index :: STRING
|
||||
) AS _log_id,
|
||||
modified_timestamp AS _inserted_timestamp
|
||||
FROM
|
||||
{{ ref('core__fact_event_logs') }}
|
||||
e
|
||||
INNER JOIN stargate_contracts USING(contract_address)
|
||||
WHERE
|
||||
topics [0] = '0x85496b760a4b7f8d66384b9df21b381f5d1b1e79f229a47aaf4c232edc2fe59a'
|
||||
AND tx_succeeded
|
||||
|
||||
{% if is_incremental() %}
|
||||
AND _inserted_timestamp >= (
|
||||
SELECT
|
||||
MAX(_inserted_timestamp) - INTERVAL '12 hours'
|
||||
FROM
|
||||
{{ this }}
|
||||
)
|
||||
AND _inserted_timestamp >= SYSDATE() - INTERVAL '7 day'
|
||||
{% endif %}
|
||||
),
|
||||
bus_mode AS (
|
||||
SELECT
|
||||
tx_hash,
|
||||
regexp_substr_all(SUBSTR(DATA, 3, len(DATA)), '.{64}') AS segmented_data,
|
||||
TRY_TO_NUMBER(
|
||||
utils.udf_hex_to_int(
|
||||
segmented_data [0] :: STRING
|
||||
)
|
||||
) AS dst_eid,
|
||||
TRY_TO_NUMBER(
|
||||
utils.udf_hex_to_int(
|
||||
segmented_data [1] :: STRING
|
||||
)
|
||||
) AS ticket,
|
||||
TRY_TO_NUMBER(
|
||||
utils.udf_hex_to_int(
|
||||
segmented_data [2] :: STRING
|
||||
)
|
||||
) AS fare,
|
||||
SUBSTR(
|
||||
DATA,
|
||||
3 + 64 * 5,
|
||||
128
|
||||
) AS passenger,
|
||||
TRY_TO_NUMBER(utils.udf_hex_to_int(SUBSTR(passenger, 3, 4))) AS asset_id,
|
||||
CONCAT('0x', SUBSTR(passenger, 3 + 4 + 24, 40)) AS receiver,
|
||||
FROM
|
||||
{{ ref('core__fact_event_logs') }}
|
||||
WHERE
|
||||
contract_address = LOWER('0xaf54be5b6eec24d6bfacf1cce4eaf680a8239398') -- tokenmessaging
|
||||
AND topics [0] = '0x15955c5a4cc61b8fbb05301bce47fd31c0e6f935e1ab97fdac9b134c887bb074' -- BusRode
|
||||
AND tx_hash IN (
|
||||
SELECT
|
||||
tx_hash
|
||||
FROM
|
||||
oft_sent
|
||||
)
|
||||
AND tx_succeeded
|
||||
|
||||
{% if is_incremental() %}
|
||||
AND _inserted_timestamp >= (
|
||||
SELECT
|
||||
MAX(_inserted_timestamp) - INTERVAL '12 hours'
|
||||
FROM
|
||||
{{ this }}
|
||||
)
|
||||
AND _inserted_timestamp >= SYSDATE() - INTERVAL '7 day'
|
||||
{% endif %}
|
||||
),
|
||||
taxi_mode AS (
|
||||
SELECT
|
||||
tx_hash,
|
||||
input,
|
||||
SUBSTR(input, 11, len(input)),
|
||||
regexp_substr_all(SUBSTR(input, 11, len(input)), '.{64}') AS segmented_data,
|
||||
CONCAT('0x', SUBSTR(segmented_data [4] :: STRING, 25, 40)) AS sender,
|
||||
TRY_TO_NUMBER(utils.udf_hex_to_int(segmented_data [5] :: STRING)) AS dstEid,
|
||||
CONCAT('0x', SUBSTR(segmented_data [6] :: STRING, 25, 40)) AS receiver,
|
||||
TRY_TO_NUMBER(utils.udf_hex_to_int(segmented_data [7] :: STRING)) AS amountSD
|
||||
FROM
|
||||
{{ ref('core__fact_traces') }}
|
||||
WHERE
|
||||
to_address = '0xaf54be5b6eec24d6bfacf1cce4eaf680a8239398'
|
||||
AND from_address IN (
|
||||
SELECT
|
||||
contract_address
|
||||
FROM
|
||||
stargate_contracts
|
||||
)
|
||||
AND tx_hash IN (
|
||||
SELECT
|
||||
tx_hash
|
||||
FROM
|
||||
oft_sent
|
||||
)
|
||||
AND LEFT(
|
||||
input,
|
||||
10
|
||||
) = '0xff6fb300'
|
||||
AND tx_succeeded
|
||||
|
||||
{% if is_incremental() %}
|
||||
AND _inserted_timestamp >= (
|
||||
SELECT
|
||||
MAX(_inserted_timestamp) - INTERVAL '12 hours'
|
||||
FROM
|
||||
{{ this }}
|
||||
)
|
||||
AND _inserted_timestamp >= SYSDATE() - INTERVAL '7 day'
|
||||
{% endif %}
|
||||
)
|
||||
SELECT
|
||||
block_number,
|
||||
b.block_timestamp,
|
||||
b.tx_hash,
|
||||
origin_function_signature,
|
||||
origin_from_address,
|
||||
origin_to_address,
|
||||
'0x1a44076050125825900e736c501f859c50fe728c' AS bridge_address,
|
||||
event_index,
|
||||
event_name,
|
||||
platform,
|
||||
origin_from_address AS sender,
|
||||
receiver,
|
||||
receiver AS destination_chain_receiver,
|
||||
amountSentLD AS amount_unadj,
|
||||
b.dstEid AS destination_chain_id,
|
||||
LOWER(
|
||||
s.chain :: STRING
|
||||
) AS destination_chain,
|
||||
C.token_address,
|
||||
_log_id,
|
||||
b._inserted_timestamp
|
||||
FROM
|
||||
oft_sent b
|
||||
INNER JOIN stargate_contracts C
|
||||
ON b.contract_address = C.contract_address
|
||||
LEFT JOIN (
|
||||
SELECT
|
||||
receiver,
|
||||
tx_hash
|
||||
FROM
|
||||
bus_mode
|
||||
UNION ALL
|
||||
SELECT
|
||||
receiver,
|
||||
tx_hash
|
||||
FROM
|
||||
taxi_mode
|
||||
) m
|
||||
ON m.tx_hash = b.tx_hash
|
||||
INNER JOIN {{ ref('silver_bridge__layerzero_bridge_seed') }}
|
||||
s
|
||||
ON b.dstEid :: STRING = s.eid :: STRING
|
||||
ORDER BY
|
||||
block_timestamp DESC
|
||||
@ -0,0 +1,52 @@
|
||||
version: 2
|
||||
models:
|
||||
- name: silver_bridge__stargate_v2_oftsent
|
||||
tests:
|
||||
- dbt_utils.unique_combination_of_columns:
|
||||
combination_of_columns:
|
||||
- _ID
|
||||
columns:
|
||||
- name: BLOCK_NUMBER
|
||||
tests:
|
||||
- not_null
|
||||
- name: BLOCK_TIMESTAMP
|
||||
tests:
|
||||
- not_null
|
||||
- dbt_expectations.expect_column_values_to_be_in_type_list:
|
||||
column_type_list:
|
||||
- TIMESTAMP_LTZ
|
||||
- TIMESTAMP_NTZ
|
||||
- name: TX_HASH
|
||||
tests:
|
||||
- not_null
|
||||
- dbt_expectations.expect_column_values_to_match_regex:
|
||||
regex: 0[xX][0-9a-fA-F]+
|
||||
- name: TOKEN_ADDRESS
|
||||
tests:
|
||||
- not_null
|
||||
- name: SENDER
|
||||
tests:
|
||||
- not_null
|
||||
- dbt_expectations.expect_column_values_to_match_regex:
|
||||
regex: 0[xX][0-9a-fA-F]+
|
||||
- name: DESTINATION_CHAIN_RECEIVER
|
||||
tests:
|
||||
- not_null
|
||||
- name: BRIDGE_ADDRESS
|
||||
tests:
|
||||
- not_null
|
||||
- dbt_expectations.expect_column_values_to_match_regex:
|
||||
regex: 0[xX][0-9a-fA-F]+
|
||||
- name: AMOUNT_UNADJ
|
||||
tests:
|
||||
- not_null
|
||||
- dbt_expectations.expect_column_values_to_be_in_type_list:
|
||||
column_type_list:
|
||||
- DECIMAL
|
||||
- FLOAT
|
||||
- NUMBER
|
||||
- name: _INSERTED_TIMESTAMP
|
||||
tests:
|
||||
- dbt_expectations.expect_row_values_to_have_recent_data:
|
||||
datepart: day
|
||||
interval: 3
|
||||
@ -0,0 +1,84 @@
|
||||
{{ config(
|
||||
materialized = 'incremental',
|
||||
incremental_strategy = 'delete+insert',
|
||||
unique_key = "block_number",
|
||||
cluster_by = ['block_timestamp::DATE'],
|
||||
tags = ['silver_bridge','defi','bridge','curated']
|
||||
) }}
|
||||
|
||||
WITH base_evt AS (
|
||||
|
||||
SELECT
|
||||
block_number,
|
||||
block_timestamp,
|
||||
tx_hash,
|
||||
origin_function_signature,
|
||||
origin_from_address,
|
||||
origin_to_address,
|
||||
contract_address,
|
||||
'symbiosis' AS platform,
|
||||
event_index,
|
||||
topics [0] :: STRING AS topic_0,
|
||||
event_name,
|
||||
TRY_TO_NUMBER(
|
||||
decoded_log :"amount" :: STRING
|
||||
) AS amount_unadj,
|
||||
TRY_TO_NUMBER(
|
||||
decoded_log :"chainID" :: STRING
|
||||
) AS chainID,
|
||||
decoded_log :"from" :: STRING AS from_address,
|
||||
decoded_log :"id" :: STRING AS id,
|
||||
decoded_log :"revertableAddress" :: STRING AS revertableAddress,
|
||||
decoded_log :"to" :: STRING AS to_address,
|
||||
decoded_log :"token" :: STRING AS token,
|
||||
CONCAT(
|
||||
tx_hash :: STRING,
|
||||
'-',
|
||||
event_index :: STRING
|
||||
) AS _log_id,
|
||||
modified_timestamp AS _inserted_timestamp
|
||||
FROM
|
||||
{{ ref('core__ez_decoded_event_logs') }}
|
||||
WHERE
|
||||
topics [0] :: STRING = '0x31325fe0a1a2e6a5b1e41572156ba5b4e94f0fae7e7f63ec21e9b5ce1e4b3eab'
|
||||
AND contract_address IN (
|
||||
'0x292fc50e4eb66c3f6514b9e402dbc25961824d62'
|
||||
)
|
||||
AND tx_succeeded
|
||||
|
||||
{% if is_incremental() %}
|
||||
AND _inserted_timestamp >= (
|
||||
SELECT
|
||||
MAX(_inserted_timestamp) - INTERVAL '12 hours'
|
||||
FROM
|
||||
{{ this }}
|
||||
)
|
||||
AND _inserted_timestamp >= SYSDATE() - INTERVAL '7 day'
|
||||
|
||||
{% endif %}
|
||||
)
|
||||
SELECT
|
||||
block_number,
|
||||
block_timestamp,
|
||||
origin_function_signature,
|
||||
origin_from_address,
|
||||
origin_to_address,
|
||||
tx_hash,
|
||||
event_index,
|
||||
topic_0,
|
||||
event_name,
|
||||
tx_status,
|
||||
contract_address AS bridge_address,
|
||||
platform,
|
||||
from_address AS sender,
|
||||
to_address AS receiver,
|
||||
receiver AS destination_chain_receiver,
|
||||
amount_unadj,
|
||||
chainID AS destination_chain_id,
|
||||
id,
|
||||
revertableAddress AS revertable_address,
|
||||
token AS token_address,
|
||||
_log_id,
|
||||
_inserted_timestamp
|
||||
FROM
|
||||
base_evt
|
||||
@ -0,0 +1,52 @@
|
||||
version: 2
|
||||
models:
|
||||
- name: silver_bridge__symbiosis_synthesizerequest
|
||||
tests:
|
||||
- dbt_utils.unique_combination_of_columns:
|
||||
combination_of_columns:
|
||||
- _ID
|
||||
columns:
|
||||
- name: BLOCK_NUMBER
|
||||
tests:
|
||||
- not_null
|
||||
- name: BLOCK_TIMESTAMP
|
||||
tests:
|
||||
- not_null
|
||||
- dbt_expectations.expect_column_values_to_be_in_type_list:
|
||||
column_type_list:
|
||||
- TIMESTAMP_LTZ
|
||||
- TIMESTAMP_NTZ
|
||||
- name: TX_HASH
|
||||
tests:
|
||||
- not_null
|
||||
- dbt_expectations.expect_column_values_to_match_regex:
|
||||
regex: 0[xX][0-9a-fA-F]+
|
||||
- name: TOKEN_ADDRESS
|
||||
tests:
|
||||
- not_null
|
||||
- name: SENDER
|
||||
tests:
|
||||
- not_null
|
||||
- dbt_expectations.expect_column_values_to_match_regex:
|
||||
regex: 0[xX][0-9a-fA-F]+
|
||||
- name: DESTINATION_CHAIN_RECEIVER
|
||||
tests:
|
||||
- not_null
|
||||
- name: BRIDGE_ADDRESS
|
||||
tests:
|
||||
- not_null
|
||||
- dbt_expectations.expect_column_values_to_match_regex:
|
||||
regex: 0[xX][0-9a-fA-F]+
|
||||
- name: AMOUNT_UNADJ
|
||||
tests:
|
||||
- not_null
|
||||
- dbt_expectations.expect_column_values_to_be_in_type_list:
|
||||
column_type_list:
|
||||
- DECIMAL
|
||||
- FLOAT
|
||||
- NUMBER
|
||||
- name: _INSERTED_TIMESTAMP
|
||||
tests:
|
||||
- dbt_expectations.expect_row_values_to_have_recent_data:
|
||||
datepart: day
|
||||
interval: 3
|
||||
@ -60,3 +60,8 @@ sources:
|
||||
tables:
|
||||
- name: logs
|
||||
- name: decoded_logs
|
||||
- name: external_gold_defillama
|
||||
database: external
|
||||
schema: defillama
|
||||
tables:
|
||||
- name: dim_chains
|
||||
|
||||
Loading…
Reference in New Issue
Block a user