Skip to content

Commit c993c46

Browse files
hildobbyjeff-dude
andauthored
bridges: materialise chains + orbiter on all chains (#9034)
* bridges: orbiter on all chains * fix * bridges: materialise chains (test with ethereum) * update all chains to materialize incrementally * update evms raw to views * fix spacing * add partitions, update join logic for performance * clean up block_month usage * change unique_key * switch to surrogate key for layerzero bridge_transfer_id * fix * fix * switch to deposits/withdrawals macros per chaing * join {{this}} on block_month * make added chains use the deposits macros * fix * fix * trigger raw models * double timeout for CI tests * revert CI timeout change * add block_time incremental filter on this lookup * remove unused hop macros --------- Co-authored-by: jeff-dude <[email protected]> Co-authored-by: jeff-dude <[email protected]>
1 parent b014323 commit c993c46

File tree

153 files changed

+1797
-1915
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

153 files changed

+1797
-1915
lines changed
Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
{% macro bridges_deposits(blockchain, bridges_platforms) %}
2+
3+
SELECT deposit_chain
4+
, withdrawal_chain_id
5+
, withdrawal_chain
6+
, bridge_name
7+
, bridge_version
8+
, CAST(date_trunc('month', block_date) as date) as block_month
9+
, block_date
10+
, block_time
11+
, block_number
12+
, deposit_amount_raw
13+
, sender
14+
, recipient
15+
, deposit_token_address
16+
, deposit_token_standard
17+
, tx_from
18+
, tx_hash
19+
, evt_index
20+
, contract_address
21+
, bridge_transfer_id
22+
FROM (
23+
SELECT *
24+
, ROW_NUMBER() OVER (PARTITION BY block_date, block_time, block_number, deposit_chain, tx_hash, evt_index, bridge_transfer_id ORDER BY block_number, block_time) AS rn
25+
FROM (
26+
{% for bridge_platform in bridges_platforms %}
27+
SELECT d.deposit_chain
28+
, d.withdrawal_chain_id
29+
, d.withdrawal_chain
30+
, d.bridge_name
31+
, d.bridge_version
32+
, d.block_date
33+
, d.block_time
34+
, d.block_number
35+
, d.deposit_amount_raw
36+
, d.sender
37+
, d.recipient
38+
, d.deposit_token_standard
39+
, d.deposit_token_address
40+
, d.tx_from
41+
, d.tx_hash
42+
, d.evt_index
43+
, d.contract_address
44+
, d.bridge_transfer_id
45+
FROM {{ ref(bridge_platform) }} d
46+
{% if is_incremental() %}
47+
LEFT JOIN {{this}} t ON t.deposit_chain = '{{blockchain}}'
48+
AND date_trunc('month', d.block_date) = t.block_month
49+
AND d.block_time = t.block_time
50+
AND d.block_number = t.block_number
51+
AND d.bridge_name = t.bridge_name
52+
AND d.bridge_version = t.bridge_version
53+
AND d.withdrawal_chain_id = t.withdrawal_chain_id
54+
AND d.tx_hash = t.tx_hash
55+
AND d.evt_index = t.evt_index
56+
AND d.bridge_transfer_id = t.bridge_transfer_id
57+
AND {{ incremental_predicate('t.block_time') }}
58+
WHERE {{ incremental_predicate('d.block_time') }}
59+
AND t.block_time IS NULL
60+
{% endif %}
61+
{% if not loop.last %}
62+
UNION ALL
63+
{% endif %}
64+
{% endfor %}
65+
)
66+
)
67+
WHERE rn = 1
68+
69+
{% endmacro %}
70+
Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
{% macro bridges_withdrawals(blockchain, bridges_platforms) %}
2+
3+
SELECT deposit_chain_id
4+
, deposit_chain
5+
, withdrawal_chain
6+
, bridge_name
7+
, bridge_version
8+
, cast(date_trunc('month', block_date) as date) as block_month
9+
, block_date
10+
, block_time
11+
, block_number
12+
, withdrawal_amount_raw
13+
, sender
14+
, recipient
15+
, withdrawal_token_address
16+
, withdrawal_token_standard
17+
, tx_from
18+
, tx_hash
19+
, evt_index
20+
, contract_address
21+
, bridge_transfer_id
22+
FROM (
23+
{% for bridge_platform in bridges_platforms %}
24+
SELECT w.deposit_chain_id
25+
, w.deposit_chain
26+
, w.withdrawal_chain
27+
, w.bridge_name
28+
, w.bridge_version
29+
, cast(date_trunc('month', w.block_date) as date) as block_month
30+
, w.block_date
31+
, w.block_time
32+
, w.block_number
33+
, w.withdrawal_amount_raw
34+
, w.sender
35+
, w.recipient
36+
, w.withdrawal_token_address
37+
, w.withdrawal_token_standard
38+
, w.tx_from
39+
, w.tx_hash
40+
, w.evt_index
41+
, w.contract_address
42+
, w.bridge_transfer_id
43+
FROM {{ ref(bridge_platform) }} w
44+
{% if is_incremental() %}
45+
LEFT JOIN {{this}} t ON t.withdrawal_chain = '{{blockchain}}'
46+
AND date_trunc('month', w.block_date) = t.block_month
47+
AND w.block_time = t.block_time
48+
AND w.block_number = t.block_number
49+
AND w.bridge_name = t.bridge_name
50+
AND w.bridge_version = t.bridge_version
51+
AND w.deposit_chain_id = t.deposit_chain_id
52+
AND w.tx_hash = t.tx_hash
53+
AND w.evt_index = t.evt_index
54+
AND w.bridge_transfer_id = t.bridge_transfer_id
55+
AND {{ incremental_predicate('t.block_time') }}
56+
WHERE {{ incremental_predicate('w.block_time') }}
57+
AND t.block_time IS NULL
58+
{% endif %}
59+
{% if not loop.last %}
60+
UNION ALL
61+
{% endif %}
62+
{% endfor %}
63+
)
64+
65+
{% endmacro %}
66+

dbt_subprojects/hourly_spellbook/macros/sector/bridges/layerzero_v1_deposits.sql

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@ SELECT distinct '{{blockchain}}' AS deposit_chain
7373
, sc.tx_hash
7474
, COALESCE(t.evt_index, -sc.call_send_index) AS evt_index
7575
, sc.contract_address
76-
, CAST(t.unique_key AS varchar) AS bridge_transfer_id
76+
, {{ dbt_utils.generate_surrogate_key(['sc.tx_hash', 't.evt_index', 'sc.call_send_index']) }} as bridge_transfer_id
7777
FROM send_calls sc
7878
LEFT JOIN transfers t ON t.block_number=sc.block_number
7979
AND t.tx_hash=sc.tx_hash
Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
{{ config(
2+
schema = 'bridges',
3+
alias = 'hop_token_indexes',
4+
materialized = 'view',
5+
)
6+
}}
7+
8+
-- source: https://github.com/DefiLlama/bridges-server/blob/dacbeefb5d076b438f58b15e57aa6d271ca04ae7/src/adapters/hop/index.ts
9+
10+
SELECT blockchain, token_address, token_symbol, bridge_contract_address
11+
FROM (VALUES
12+
('ethereum', '0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2', 'ETH', '0xb8901acB165ed027E32754E0FFe830802919727f')
13+
, ('ethereum', '0x6B175474E89094C44Da98b954EedeAC495271d0F', 'DAI', '0x3d4Cc8A61c7528Fd86C55cfe061a78dCBA48EDd1')
14+
, ('ethereum', '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48', 'USDC', '0x3666f603Cc164936C1b87e207F36BEBa4AC5f18a')
15+
, ('ethereum', '0xdAC17F958D2ee523a2206206994597C13D831ec7', 'USDT', '0x3E4a3a4796d16c0Cd582C382691998f7c06420B6')
16+
, ('ethereum', '0x7D1AfA7B718fb893dB30A3aBc0Cfc608AaCfeBB0', 'MATIC', '0x22B1Cbb8D98a01a3B71D034BB899775A76Eb1cc2')
17+
, ('ethereum', '0xc5102fE9359FD9a28f877a67E36B0F050d81a3CC', 'HOP', '0x914f986a44AcB623A277d6Bd17368171FCbe4273')
18+
, ('ethereum', '0xB0c7a3Ba49C7a6EaBa6cD4a96C55a1391070Ac9A', 'MAGIC', '0xf074540eb83c86211F305E145eB31743E228E57d')
19+
, ('ethereum', '0xae78736Cd615f374D3085123A210448E74Fc6393', 'rETH', '0x87269B23e73305117D0404557bAdc459CEd0dbEc')
20+
, ('polygon', '0x7ceB23fD6bC0adD59E62ac25578270cFf1b9f619', 'ETH', '0xb98454270065A31D71Bf635F6F7Ee6A518dFb849')
21+
, ('polygon', '0x8f3Cf7ad23Cd3CaDbD9735AFf958023239c6A063', 'DAI', '0xEcf268Be00308980B5b3fcd0975D47C4C8e1382a')
22+
, ('polygon', '0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174', 'USDC', '0x25D8039bB044dC227f741a9e381CA4cEAE2E6aE8')
23+
, ('polygon', '0xc2132D05D31c914a87C6611C10748AEb04B58e8F', 'USDT', '0x6c9a1ACF73bd85463A46B0AFc076FBdf602b690B')
24+
, ('polygon', '0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270', 'MATIC', '0x553bC791D746767166fA3888432038193cEED5E2')
25+
, ('polygon', '0xc5102fE9359FD9a28f877a67E36B0F050d81a3CC', 'HOP', '0x58c61AeE5eD3D748a1467085ED2650B697A66234')
26+
, ('arbitrum', '0x82aF49447D8a07e3bd95BD0d56f35241523fBab1', 'ETH', '0x3749C4f034022c39ecafFaBA182555d4508caCCC')
27+
, ('arbitrum', '0xDA10009cBd5D07dd0CeCc66161FC93D7c9000da1', 'DAI', '0x7aC115536FE3A185100B2c4DE4cb328bf3A58Ba6')
28+
, ('arbitrum', '0xFF970A61A04b1cA14834A43f5dE4533eBDDB5CC8', 'USDC', '0x0e0E3d2C5c292161999474247956EF542caBF8dd')
29+
, ('arbitrum', '0xFd086bC7CD5C481DCC9C85ebE478A1C0b69FCbb9', 'USDT', '0x72209Fe68386b37A40d6bCA04f78356fd342491f')
30+
, ('arbitrum', '0xc5102fE9359FD9a28f877a67E36B0F050d81a3CC', 'HOP', '0x25FB92E505F752F730cAD0Bd4fa17ecE4A384266')
31+
, ('arbitrum', '0x539bdE0d7Dbd336b79148AA742883198BBF60342', 'MAGIC', '0xEa5abf2C909169823d939de377Ef2Bf897A6CE98')
32+
, ('arbitrum', '0xEC70Dcb4A1EFa46b8F2D97C310C9c4790ba5ffA8', 'rETH', '0xc315239cFb05F1E130E7E28E603CEa4C014c57f0')
33+
, ('optimism', '0x4200000000000000000000000000000000000006', 'ETH', '0x83f6244Bd87662118d96D9a6D44f09dffF14b30E')
34+
, ('optimism', '0xDA10009cBd5D07dd0CeCc66161FC93D7c9000da1', 'DAI', '0x7191061D5d4C60f598214cC6913502184BAddf18')
35+
, ('optimism', '0x7F5c764cBc14f9669B88837ca1490cCa17c31607', 'USDC', '0xa81D244A1814468C734E5b4101F7b9c0c577a8fC')
36+
, ('optimism', '0x94b008aA00579c1307B0EF2c499aD98a8ce58e58', 'USDT', '0x46ae9BaB8CEA96610807a275EBD36f8e916b5C61')
37+
, ('optimism', '0xc5102fE9359FD9a28f877a67E36B0F050d81a3CC', 'HOP', '0x03D7f750777eC48d39D080b020D83Eb2CB4e3547')
38+
, ('optimism', '0x9Bcef72be871e61ED4fBbc7630889beE758eb81D', 'rETH', '0xA0075E8cE43dcB9970cB7709b9526c1232cc39c2')
39+
, ('gnosis', '0x6A023CCd1ff6F2045C3309768eAd9E68F978f6e1', 'ETH', '0xD8926c12C0B2E5Cd40cFdA49eCaFf40252Af491B')
40+
, ('gnosis', '0xe91D153E0b41518A2Ce8Dd3D7944Fa863463a97d', 'DAI', '0x0460352b91D7CF42B0E1C1c30f06B602D9ef2238')
41+
, ('gnosis', '0xDDAfbb505ad214D7b80b1f830fcCc89B60fb7A83', 'USDC', '0x25D8039bB044dC227f741a9e381CA4cEAE2E6aE8')
42+
, ('gnosis', '0x4ECaBa5870353805a9F068101A40E0f32ed605C6', 'USDT', '0xFD5a186A7e8453Eb867A360526c5d987A00ACaC2')
43+
, ('gnosis', '0x7122d7661c4564b7C6Cd4878B06766489a6028A2', 'MATIC', '0x7ac71c29fEdF94BAc5A5C9aB76E1Dd12Ea885CCC')
44+
, ('gnosis', '0xc5102fE9359FD9a28f877a67E36B0F050d81a3CC', 'HOP', '0x6F03052743CD99ce1b29265E377e320CD24Eb632')
45+
, ('arbitrum_nova', '0x722E8BdD2ce80A4422E880164f2079488e115365', 'ETH', '0x8796860ca1677Bf5d54cE5A348Fe4b779a8212f3')
46+
, ('arbitrum_nova', '0xc5102fE9359FD9a28f877a67E36B0F050d81a3CC', 'HOP', '0x02D47f76523d2f059b617E4346de67482792eB83')
47+
, ('arbitrum_nova', '0xe8936ac97A85d708d5312D52C30c18d4533b8A9c', 'MAGIC', '0xE638433e2C1dF5f7a3a21b0a6b5c4b37278e55DC')
48+
, ('base', '0x4200000000000000000000000000000000000006', 'ETH', '0x3666f603Cc164936C1b87e207F36BEBa4AC5f18a')
49+
, ('base', '0xd9aAEc86B65D86f6A7B5B1b0c42FFA531710b6CA', 'USDC', '0x46ae9BaB8CEA96610807a275EBD36f8e916b5C61')
50+
, ('base', '0xc5102fE9359FD9a28f877a67E36B0F050d81a3CC', 'HOP', '0xe22D2beDb3Eca35E6397e0C6D62857094aA26F52')
51+
, ('linea', '0xe5D7C2a44FfDDf6b295A15c148167daaAf5Cf34f', 'ETH', '0xCbb852A6274e03fA00fb4895dE0463f66dF27a11')
52+
, ('linea', '0xc5102fE9359FD9a28f877a67E36B0F050d81a3CC', 'HOP', '0x0a6b1904369fE59E002ad0713ae89d4E3dF5A7Cf')
53+
, ('polygon_zkevm', '0x4F9A0e7FD2Bf6067db6994CF12E4495Df938E6e9', 'ETH', '0x0ce6c85cF43553DE10FC56cecA0aef6Ff0DD444d')
54+
, ('polygon_zkevm', '0xc5102fE9359FD9a28f877a67E36B0F050d81a3CC', 'HOP', '0x9ec9551d4A1a1593b0ee8124D98590CC71b3B09D')
55+
) AS x (blockchain, token_address, token_symbol, bridge_contract_address)
56+

dbt_subprojects/hourly_spellbook/models/_sector/bridges/flows/bridges_crosschain_deposits.sql

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
schema = 'bridges_crosschain'
33
, alias = 'deposits'
44
, materialized = 'view'
5-
, post_hook='{{ expose_spells(\'["arbitrum", "avalanche_c", "base", "blast", "bnb", "ethereum", "hyperevm", "ink", "lens", "linea", "optimism", "plasma", "polygon", "scroll", "unichain", "worldchain", "zksync", "zora", "fantom", "gnosis", "nova", "opbnb", "berachain", "corn", "flare", "sei", "boba"]\',
5+
, post_hook='{{ expose_spells(\'["arbitrum", "avalanche_c", "base", "blast", "bnb", "ethereum", "hyperevm", "ink", "lens", "linea", "optimism", "plasma", "polygon", "scroll", "unichain", "worldchain", "zksync", "zora", "fantom", "gnosis", "nova", "opbnb", "berachain", "corn", "flare", "sei", "boba", "abstract", "apechain", "bob", "celo", "kaia", "katana", "mantle", "plume", "ronin", "sonic", "sophon", "story", "taiko", "zkevm"]\',
66
"sector",
77
"bridges",
88
\'["hildobby"]\') }}'

dbt_subprojects/hourly_spellbook/models/_sector/bridges/flows/bridges_crosschain_flows.sql

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
schema = 'bridges_crosschain',
33
alias = 'flows',
44
materialized = 'view'
5-
, post_hook='{{ expose_spells(\'["arbitrum", "avalanche_c", "base", "blast", "bnb", "ethereum", "hyperevm", "ink", "lens", "linea", "optimism", "plasma", "polygon", "scroll", "unichain", "worldchain", "zksync", "zora", "fantom", "gnosis", "nova", "opbnb", "berachain", "corn", "flare", "sei", "boba", "mantle"]\',
5+
, post_hook='{{ expose_spells(\'["arbitrum", "avalanche_c", "base", "blast", "bnb", "ethereum", "hyperevm", "ink", "lens", "linea", "optimism", "plasma", "polygon", "scroll", "unichain", "worldchain", "zksync", "zora", "fantom", "gnosis", "nova", "opbnb", "berachain", "corn", "flare", "sei", "boba", "mantle", "abstract", "apechain", "bob", "celo", "kaia", "katana", "plume", "ronin", "sonic", "sophon", "story", "taiko", "zkevm"]\',
66
"sector",
77
"bridges",
88
\'["hildobby"]\') }}'
Lines changed: 10 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -1,40 +1,20 @@
11
{% set blockchain = 'abstract' %}
22

33
{{ config(
4-
schema = 'bridges_' + blockchain,
5-
alias = 'deposits',
6-
materialized = 'view'
4+
schema = 'bridges_' + blockchain
5+
, alias = 'deposits'
6+
, materialized = 'incremental'
7+
, file_format = 'delta'
8+
, partition_by = ['block_month']
9+
, incremental_strategy='merge'
10+
, unique_key = ['tx_hash', 'evt_index', 'bridge_transfer_id']
11+
, incremental_predicates = [incremental_predicate('DBT_INTERNAL_DEST.block_time')]
712
)
813
}}
914

1015
{% set bridges_platforms = [
1116
'bridges_' + blockchain + '_symbiosis_v1_deposits'
17+
, 'bridges_' + blockchain + '_orbiter_v1_deposits'
1218
] %}
1319

14-
SELECT *
15-
FROM (
16-
{% for bridge_platform in bridges_platforms %}
17-
SELECT deposit_chain
18-
, withdrawal_chain_id
19-
, withdrawal_chain
20-
, bridge_name
21-
, bridge_version
22-
, block_date
23-
, block_time
24-
, block_number
25-
, deposit_amount_raw
26-
, sender
27-
, recipient
28-
, deposit_token_standard
29-
, deposit_token_address
30-
, tx_from
31-
, tx_hash
32-
, evt_index
33-
, contract_address
34-
, bridge_transfer_id
35-
FROM {{ ref(bridge_platform) }}
36-
{% if not loop.last %}
37-
UNION ALL
38-
{% endif %}
39-
{% endfor %}
40-
)
20+
{{ bridges_deposits(blockchain, bridges_platforms) }}

dbt_subprojects/hourly_spellbook/models/_sector/bridges/flows/chains/abstract/platforms/_schema.yml

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,4 +9,13 @@ models:
99
contributors: [ 'hildobby']
1010
config:
1111
tags: [ 'abstract', 'bridges', 'flows', 'withdrawals' ]
12-
description: "Symbiosis's v1 bridge deposits events on Abstract"
12+
description: "Symbiosis's v1 bridge deposits events on Abstract"
13+
- name: bridges_abstract_orbiter_v1_deposits
14+
meta:
15+
blockchain: abstract
16+
sector: bridges
17+
project: orbiter
18+
contributors: [ 'hildobby']
19+
config:
20+
tags: [ 'abstract', 'bridges', 'flows', 'withdrawals' ]
21+
description: "Orbiter's v1 bridge deposits events on Abstract"
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
{% set blockchain = 'abstract' %}
2+
3+
{{ config(
4+
schema = 'bridges_' + blockchain,
5+
alias = 'orbiter_v1_deposits',
6+
materialized = 'view',
7+
)
8+
}}
9+
10+
{{orbiter_v1_deposits(blockchain = blockchain
11+
, first_block_number = 2066216
12+
)}}
13+
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
{% set blockchain = 'apechain' %}
2+
3+
{{ config(
4+
schema = 'bridges_' + blockchain
5+
, alias = 'deposits'
6+
, materialized = 'incremental'
7+
, file_format = 'delta'
8+
, partition_by = ['block_month']
9+
, incremental_strategy='merge'
10+
, unique_key = ['tx_hash', 'evt_index', 'bridge_transfer_id']
11+
, incremental_predicates = [incremental_predicate('DBT_INTERNAL_DEST.block_time')]
12+
)
13+
}}
14+
15+
{% set bridges_platforms = [
16+
'bridges_' + blockchain + '_orbiter_v1_deposits'
17+
] %}
18+
19+
{{ bridges_deposits(blockchain, bridges_platforms) }}
20+

0 commit comments

Comments
 (0)