add stargate

This commit is contained in:
sam 2025-06-10 18:48:20 +08:00
parent f216a67fa0
commit 4baaeb528a
11 changed files with 457 additions and 360 deletions

View 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
1 chain eid
2 Ape 30312
3 Arbitrum 30110
4 Arbitrum Nova 30175
5 Astar 30210
6 Astar zkEVM 30257
7 Avalanche 30106
8 Base 30184
9 Bevm 30317
10 Binance Smart Chain 30102
11 Bitlayer 30314
12 Blast 30243
13 Bob 30279
14 Canto 30159
15 Celo 30125
16 Codex 30323
17 Conflux eSpace 30212
18 Core Blockchain 30153
19 Cyber 30283
20 DOS Chain 30149
21 DeFi Kingdoms 30115
22 Degen 30267
23 Dexalot Subnet 30118
24 Dm2verse 30315
25 EBI 30282
26 Edu 30328
27 Ethereum 30101
28 Etherlink 30292
29 Fantom 30112
30 Flare 30295
31 Fraxtal 30255
32 Fuse 30138
33 Gnosis 30145
34 Gravity 30294
35 Harmony 30116
36 Hedera 30316
37 Hemi 30329
38 Homeverse 30265
39 Horizen EON 30215
40 Hubble 30182
41 Iota 30284
42 Japan Open Chain 30285
43 Kaia 30150
44 Kava 30177
45 Lightlink 30309
46 Linea 30183
47 Lisk 30321
48 Loot 30197
49 Lyra 30311
50 Manta 30217
51 Mantle 30181
52 Masa 30263
53 Meritcircle 30198
54 Merlin 30266
55 Meter 30176
56 Metis 30151
57 Mode 30260
58 Moonbeam 30126
59 Moonriver 30167
60 Morph 30322
61 Near Aurora 30211
62 OKXChain 30155
63 Optimism 30111
64 Orderly 30213
65 Peaq 30302
66 Polygon 30109
67 Polygon zkEVM 30158
68 Rari Chain 30235
69 Reya 30313
70 Sanko 30278
71 Scroll 30214
72 Sei 30280
73 Shimmer 30230
74 Skale 30273
75 Solana 30168
76 Superposition 30327
77 Taiko 30290
78 TelosEVM 30199
79 Tenet 30173
80 Tiltyard 30238
81 Tron 30420
82 Viction 30196
83 Worldchain 30319
84 X Layer 30274
85 XChain 30291
86 XPLA 30216
87 Xai 30236
88 Zircuit 30303
89 Zora 30195
90 inEVM 30234
91 opBNB 30202
92 re.al 30237
93 zkLink 30301
94 zkSync Era 30165

View File

@ -5,72 +5,102 @@
tags = ['silver_bridge','defi','bridge','curated']
) }}
SELECT
block_timestamp,
tx_hash,
event_index,
SUBSTR(
decoded_log :encodedPayload :: STRING,
3
) AS payload,
SUBSTR(
WITH raw AS (
SELECT
block_timestamp,
tx_hash,
event_index,
SUBSTR(
decoded_log :encodedPayload :: STRING,
3
) AS payload,
SUBSTR(
payload,
1,
2
) AS TYPE,
SUBSTR(
payload,
3,
16
) AS nonce,
utils.udf_hex_to_int(SUBSTR(payload, 19, 8)) AS src_chain_id,
'0x' || SUBSTR(SUBSTR(payload, 27, 64), 25) AS sender_contract_address,
-- token messaging for stargate in arbitrum
utils.udf_hex_to_int(SUBSTR(payload, 91, 8)) AS dst_chain_id,
'0x' || SUBSTR(SUBSTR(payload, 99, 64), 25) AS receiver_contract_address,
SUBSTR(
payload,
163,
64
) AS guid,
SUBSTR(
payload,
227,
2
) AS message_type {# SUBSTR(
payload,
1,
2
) AS TYPE,
SUBSTR(
payload,
3,
16
) AS nonce,
utils.udf_hex_to_int(SUBSTR(payload, 19, 8)) AS source_chain_hex,
'0x' || SUBSTR(SUBSTR(payload, 27, 64), 25) AS sender_ca,
-- token messaging for stargate in arbitrum
utils.udf_hex_to_int(SUBSTR(payload, 91, 8)) AS dst_chain_hex,
'0x' || SUBSTR(SUBSTR(payload, 99, 64), 25) AS receiver_ca,
SUBSTR(
payload,
163,
64
) AS guid,
SUBSTR(
payload,
227,
2
) AS message_type {# SUBSTR(
payload,
229,
4
229,
4
) AS message_type_2,
'0x' || SUBSTR(SUBSTR(payload, 233, 64), 25) AS dst_chain_receiver #}
FROM
{{ ref('core__ez_decoded_event_logs') }}
WHERE
1 = 1 --tx_hash = '0xd726c07902df1c68f23b911a2c5c3d2e241ebc5da155b22253f3b3ebc2e3eb1c'
AND block_timestamp :: DATE >= '2024-01-01'
block_timestamp :: DATE >= '2024-01-01'
AND event_name = 'PacketSent'
AND contract_address = LOWER('0x1a44076050125825900e736c501f859c50fE728c') -- layerzero endpoint v2
)
SELECT
block_timestamp,
tx_hash,
event_index,
payload,
TYPE,
nonce,
src_chain_id,
LOWER(
c1.chain
) AS src_chain,
sender_contract_address,
-- token messaging for stargate in arbitrum
dst_chain_id,
LOWER(
c2.chain
) AS dst_chain,
receiver_contract_address,
guid,
message_type
FROM
raw
LEFT JOIN {{ ref('silver_bridge__layerzero_bridge_seed') }}
c1
ON src_chain_id = c1.eid
LEFT JOIN {{ ref('silver_bridge__layerzero_bridge_seed') }}
c2
ON dst_chain_id = c2.eid
/*
bus rode
https://basescan.org/tx/0x10bebb3d970a50ca3dcb91c57559915c8c79490b17f023823ec92dbb463572c3#eventlog
bus driven
https://basescan.org/tx/0x1b19373f9153a3271880a404b62a2eb961e06d3b18ac9fe6e4dd86032bc63d12#eventlog
passenger follows this format:
000D asset id
000000000000000000000000CADC222B22BDB30147BB8FB9726AA9E00A01441C receiver
000000000001EFE9 amountSD
00 nativeDrop
uint16 assetId;
bytes32 receiver;
uint64 amountSD;
bool nativeDrop;
assetIDs from stargate
*/
bus rode
https://basescan.org/tx/0x10bebb3d970a50ca3dcb91c57559915c8c79490b17f023823ec92dbb463572c3#eventlog
bus driven
https://basescan.org/tx/0x1b19373f9153a3271880a404b62a2eb961e06d3b18ac9fe6e4dd86032bc63d12#eventlog
passenger follows this format:
000D asset id
000000000000000000000000CADC222B22BDB30147BB8FB9726AA9E00A01441C receiver
000000000001EFE9 amountSD
00 nativeDrop
uint16 assetId;
bytes32 receiver;
uint64 amountSD;
bool nativeDrop;
assetIDs from stargate
*/

View File

@ -1,134 +0,0 @@
-- oft tokens
{{ config(
materialized = 'incremental',
incremental_strategy = 'delete+insert',
unique_key = "block_number",
tags = ['silver_bridge','defi','bridge','curated']
) }}
WITH base_contracts AS (
SELECT
tx_hash,
block_number,
block_timestamp,
from_address,
to_address AS contract_address,
concat_ws(
'-',
block_number,
tx_position,
CONCAT(
TYPE,
'_',
trace_address
)
) AS _call_id,
modified_timestamp AS _inserted_timestamp
FROM
{{ ref('core__fact_traces') }}
WHERE
from_address = '0xaf5191b0de278c7286d6c7cc6ab6bb8a73ba2cd6' --Factory
AND TYPE ILIKE 'create%'
AND tx_succeeded
{% if is_incremental() %}
AND _inserted_timestamp >= (
SELECT
MAX(_inserted_timestamp) - INTERVAL '12 hours'
FROM
{{ this }}
)
AND to_address NOT IN (
SELECT
DISTINCT pool_address
FROM
{{ this }}
)
{% endif %}
),
function_sigs AS (
SELECT
'0xfc0c546a' AS function_sig,
'token' AS function_name
),
inputs AS (
SELECT
contract_address,
block_number,
function_sig,
function_name,
0 AS function_input,
CONCAT(
function_sig,
LPAD(
function_input,
64,
0
)
) AS DATA
FROM
base_contracts
JOIN function_sigs
ON 1 = 1
),
contract_reads AS (
SELECT
contract_address,
block_number,
function_sig,
function_name,
function_input,
DATA,
utils.udf_json_rpc_call(
'eth_call',
[{ 'to': contract_address, 'from': null, 'data': data }, utils.udf_int_to_hex(block_number) ]
) AS rpc_request,
live.udf_api(
'POST',
CONCAT(
'{service}',
'/',
'{Authentication}'
),{},
rpc_request,
'Vault/prod/base/quicknode/mainnet'
) AS read_output,
SYSDATE() AS _inserted_timestamp
FROM
inputs
),
reads_flat AS (
SELECT
read_output,
read_output :data :id :: STRING AS read_id,
read_output :data :result :: STRING AS read_result,
SPLIT(
read_id,
'-'
) AS read_id_object,
function_sig,
function_name,
function_input,
DATA,
contract_address,
block_number,
_inserted_timestamp
FROM
contract_reads
)
SELECT
read_output,
read_id,
read_result,
read_id_object,
function_sig,
function_name,
function_input,
DATA,
block_number,
contract_address AS pool_address,
CONCAT('0x', SUBSTR(read_result, 27, 40)) AS token_address,
_inserted_timestamp
FROM
reads_flat

View File

@ -1,39 +0,0 @@
{{ config(
materialized = 'incremental',
incremental_strategy = 'delete+insert',
unique_key = "contract_address",
tags = ['silver_bridge','defi','bridge','curated']
) }}
WITH base_contracts AS (
SELECT
contract_address
FROM
{{ ref('core__fact_event_logs') }}
WHERE
block_timestamp :: DATE >= '2024-05-01'
AND topic_0 = '0x85496b760a4b7f8d66384b9df21b381f5d1b1e79f229a47aaf4c232edc2fe59a' -- OFTsent
qualify ROW_NUMBER() over (
PARTITION BY contract_address
ORDER BY
block_timestamp DESC
) = 1
)
SELECT
b.contract_address,
p.token_address,
p.decimals,
p.shared_decimals,
p.endpoint,
p.owner,
p.token_name,
p.token_symbol
FROM
base_contracts b
INNER JOIN {{ ref('silver_bridge__stargate_pools') }}
p
ON b.contract_address = p.pool_address
WHERE
p.token_address IS NOT NULL
AND p.decimals IS NOT NULL

View File

@ -1,93 +0,0 @@
{{ config(
materialized = 'incremental',
incremental_strategy = 'delete+insert',
unique_key = "block_number",
tags = ['silver_bridge','defi','bridge','curated']
) }}
WITH base_contracts AS (
SELECT
block_number,
block_timestamp,
tx_hash,
to_address AS contract_address,
POSITION(
'00000000000000000000000000000000000000000000000000000000000000e0',
input,
LENGTH(input) - 703
) AS argument_start,
-- starting position of arguments
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,
modified_timestamp AS _inserted_timestamp
FROM
{{ ref('core__fact_traces') }}
WHERE
origin_function_signature = '0x61014060' -- AND tx_hash = '0xa672d5f37dff923fe58c11e56b87539af6fe5a0e901e594f2065dd50f1f93e86' --from_address = '0x1d7c6783328c145393e84fb47a7f7c548f5ee28d'
AND block_timestamp :: DATE >= '2024-05-01'
AND trace_succeeded
AND TYPE ILIKE '%create%'
{% 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,
tx_hash,
contract_address AS pool_address,
token_address,
decimals,
shared_decimals,
endpoint,
owner,
token_name,
token_symbol,
_inserted_timestamp
FROM
base_contracts

View File

@ -14,11 +14,12 @@ WITH decoded_logs AS (
contract_address,
event_name,
decoded_log,
tx_hash
tx_hash,
origin_from_address
FROM
{{ ref('core__ez_decoded_event_logs') }}
WHERE
block_timestamp :: DATE >= '2024-01-01'
block_timestamp :: DATE >= '2025-03-01'
AND (
(
event_name = 'PacketSent'
@ -32,8 +33,10 @@ WITH decoded_logs AS (
),
layerzero AS (
SELECT
block_number,
block_timestamp,
tx_hash,
contract_address,
event_index,
SUBSTR(
decoded_log :encodedPayload :: STRING,
@ -74,6 +77,7 @@ FROM
WHERE
event_name = 'PacketSent'
AND contract_address = LOWER('0x1a44076050125825900e736c501f859c50fE728c') -- layerzero endpoint v2
AND sender_ca = '0x5634c4a5fed09819e3c46d86a965dd9447d86e47' -- stargate token messaging. Ensures adapter sends
),
bus_driven_raw AS (
SELECT
@ -93,7 +97,8 @@ bus_driven_raw AS (
ORDER BY
event_index ASC
) AS rn,
start_ticket_id + num_passengers - 1 AS end_ticket_id
start_ticket_id + num_passengers - 1 AS end_ticket_id,
origin_from_address
FROM
decoded_logs
WHERE
@ -114,10 +119,12 @@ bus_driven AS (
asset_id,
dst_receiver_address,
amount_transferred,
guid
r.guid,
origin_from_address
FROM
bus_driven r
INNER JOIN {{ ref('silver_bridge__stargate_v2_bus') }}
bus_driven_raw r
INNER JOIN {{ ref('silver_bridge__stargate_v2_busrode') }}
-- join with busRode
b
ON r.dst_id = b.dst_id
AND b.ticket_id >= start_ticket_id
@ -125,17 +132,19 @@ bus_driven AS (
),
final_bus_driven AS (
SELECT
block_timestamp,
tx_hash,
b.block_timestamp,
b.tx_hash,
guid,
event_index,
contract_address,
b.event_index,
b.contract_address,
dst_id,
start_ticket_id,
num_passengers,
end_ticket_id,
ticket_id,
asset_id,
asset AS asset_symbol,
-- from the list
dst_receiver_address,
amount_transferred,
payload,
@ -146,12 +155,17 @@ final_bus_driven AS (
dst_chain_hex,
receiver_ca,
message_type,
message_type
origin_from_address
FROM
bus_driven b
LEFT JOIN layerzero l
ON b.tx_hash = l.tx_hash
AND b.guid = l.guid
INNER JOIN layerzero l USING (
tx_hash,
guid
)
LEFT JOIN {{ ref('silver_bridge__stargate_asset_id') }}
s
ON asset_id = s.id
AND s.chain = 'Base'
),
oft_raw AS (
SELECT
@ -164,7 +178,6 @@ oft_raw AS (
topic_1,
topic_2,
topic_3,
contract_address,
contract_address AS stargate_adapter_address,
DATA,
regexp_substr_all(SUBSTR(DATA, 3), '.{64}') AS part,
@ -186,16 +199,17 @@ oft_raw AS (
FROM
{{ ref('core__fact_event_logs') }}
WHERE
block_timestamp :: DATE >= '2024-01-01'
block_timestamp :: DATE >= '2025-03-01'
AND topic_0 = '0x85496b760a4b7f8d66384b9df21b381f5d1b1e79f229a47aaf4c232edc2fe59a' --OFTSent
),
final_oft AS (
SELECT
block_number,
block_timestamp,
l.block_number,
l.block_timestamp,
tx_hash,
l.event_index,
contract_address,
l.contract_address,
stargate_adapter_address,
guid,
from_address,
-- src sender
@ -218,9 +232,10 @@ final_oft AS (
'0x' || SUBSTR(SUBSTR(payload, 233, 64), 25) AS dst_chain_receiver
FROM
oft_raw o
INNER JOIN layerzero l
ON o.tx_hash = l.tx_hash
AND o.guid = l.guid
INNER JOIN layerzero l USING (
tx_hash,
guid
)
)
SELECT
block_timestamp,
@ -235,6 +250,7 @@ SELECT
--end_ticket_id,
--ticket_id,
asset_id,
origin_from_address AS from_address,
dst_receiver_address,
amount_transferred,
payload,
@ -245,18 +261,23 @@ SELECT
dst_chain_hex,
receiver_ca,
message_type,
message_type
'bus' AS bridge_type
FROM
final_bus_driven
UNION ALL
SELECT
block_timestamp,
tx_hash,
l.event_index,
contract_address,
guid,
event_index,
stargate_adapter_address,
-- adapter address, the CA of the adapter
dst_id,
stargate_adapter_address AS asset_id,
-- this supposed to be asset id
from_address,
-- src sender
dst_id,
dst_chain_receiver AS dst_receiver_address,
amount_sent,
payload,
TYPE,
@ -267,11 +288,6 @@ SELECT
dst_chain_hex,
receiver_ca,
message_type,
SUBSTR(
payload,
229,
4
) AS message_type_2,
'0x' || SUBSTR(SUBSTR(payload, 233, 64), 25) AS dst_chain_receiver
'oft' AS bridge_type
FROM
final_oft

View File

@ -0,0 +1,13 @@
{{ config(
materialized = 'incremental',
incremental_strategy = 'delete+insert',
unique_key = "contract_address",
tags = ['silver_bridge','defi','bridge','curated']
) }}
-- busdriven + oftsent
WITH busdriven AS (
SELECT
FROM
{{ ref('silver_bridge__stargate_v2_busdriven') }}
)

View File

@ -0,0 +1,112 @@
{{ config(
materialized = 'incremental',
incremental_strategy = 'delete+insert',
unique_key = "contract_address",
tags = ['silver_bridge','defi','bridge','curated']
) }}
WITH bus_driven_raw AS (
SELECT
block_number,
block_timestamp,
tx_hash,
event_index,
contract_address,
decoded_log :dstEid :: INT AS dst_id,
SUBSTR(
decoded_log :guid :: STRING,
3
) AS guid,
decoded_log :numPassengers :: INT AS num_passengers,
decoded_log :startTicketId :: INT AS start_ticket_id,
ROW_NUMBER() over (
PARTITION BY tx_hash
ORDER BY
event_index ASC
) AS rn,
start_ticket_id + num_passengers - 1 AS end_ticket_id
FROM
{{ ref('core__ez_decoded_event_logs') }}
WHERE
contract_address = '0x5634c4a5fed09819e3c46d86a965dd9447d86e47'
AND event_name = 'BusDriven'
AND block_timestamp :: DATE >= '2024-01-01'
),
bus_driven AS (
SELECT
r.block_number,
r.block_timestamp,
r.tx_hash,
r.event_index,
contract_address,
r.dst_id,
start_ticket_id,
num_passengers,
end_ticket_id,
b.ticket_id,
asset_id,
asset_name,
from_address,
dst_receiver_address,
amount_transferred,
r.guid
FROM
bus_driven_raw r
INNER JOIN {{ ref('silver_bridge__stargate_v2_busrode') }}
-- join with busRode
b
ON r.dst_id = b.dst_id
AND b.ticket_id >= start_ticket_id
AND b.ticket_id <= end_ticket_id
),
layerzero AS (
SELECT
tx_hash,
guid,
payload,
TYPE,
nonce,
src_chain_id,
src_chain,
sender_contract_address,
dst_chain_id,
dst_chain,
receiver_contract_address,
message_type
FROM
{{ ref('silver_bridge__layerzero_v2_packet') }}
)
SELECT
b.block_number,
b.block_timestamp,
b.tx_hash,
guid,
b.event_index,
b.contract_address,
dst_id,
start_ticket_id,
num_passengers,
end_ticket_id,
ticket_id,
asset_id,
asset_name,
from_address,
dst_receiver_address,
amount_transferred,
payload,
TYPE,
nonce,
src_chain_id,
src_chain,
sender_contract_address,
dst_chain_id,
dst_chain,
receiver_contract_address,
message_type
FROM
bus_driven b
INNER JOIN layerzero l USING (
tx_hash,
guid
)

View File

@ -51,7 +51,6 @@ oft_sent AS (
topic_2,
27
) AS from_address,
-- src sender
utils.udf_hex_to_int(
part [0] :: STRING
) AS dst_id,
@ -114,12 +113,12 @@ SELECT
stargate_adapter_address,
guid,
from_address,
-- might need to use the origin from address as sender instead. because this address is the address taht sent to the token messaging contract
dst_id,
amount_sent,
bus_dst_id,
ticket_id,
asset_id,
A.asset AS asset_name,
dst_receiver_address,
amount_transferred,
is_native_drop
@ -132,3 +131,6 @@ FROM
o.oft_sent_index < b.next_bus_rode_index
OR b.next_bus_rode_index IS NULL
)
LEFT JOIN {{ ref('silver_bridge__stargate_asset_id') }} A
ON asset_id = id
AND A.chain = 'Base'

View File

@ -0,0 +1,96 @@
-- oft tokens
{{ config(
materialized = 'incremental',
incremental_strategy = 'delete+insert',
unique_key = "block_number",
tags = ['silver_bridge','defi','bridge','curated']
) }}
WITH layerzero AS (
SELECT
tx_hash,
payload,
TYPE,
nonce,
src_chain_id,
src_chain,
sender_contract_address,
dst_chain_id,
dst_chain,
receiver_contract_address,
guid,
message_type,
SUBSTR(
payload,
229,
4
) AS message_type_2,
'0x' || SUBSTR(SUBSTR(payload, 233, 64), 25) AS to_address
FROM
{{ ref('silver_bridge__layerzero_v2_packet') }}
WHERE
sender_contract_address = LOWER('0x5634c4a5fed09819e3c46d86a965dd9447d86e47') -- token messaging arbitrum
),
oft_raw AS (
SELECT
block_number,
block_timestamp,
tx_hash,
event_index,
topic_0,
topic_1,
topic_2,
topic_3,
contract_address AS stargate_oft_address,
DATA,
regexp_substr_all(SUBSTR(DATA, 3), '.{64}') AS part,
SUBSTR(
topic_1,
3
) AS guid,
'0x' || SUBSTR(
topic_2,
27
) AS from_address,
utils.udf_hex_to_int(
part [0] :: STRING
) AS dst_chain_id_oft,
utils.udf_hex_to_int(
part [1] :: STRING
) AS amount_sent
FROM
{{ ref('core__fact_event_logs') }}
WHERE
block_timestamp :: DATE >= '2024-01-01'
AND topic_0 = '0x85496b760a4b7f8d66384b9df21b381f5d1b1e79f229a47aaf4c232edc2fe59a' --OFTSent
)
SELECT
block_number,
block_timestamp,
tx_hash,
guid,
event_index,
stargate_oft_address,
-- need a reads model to read the token func (0xfc0c546a)
from_address,
to_address,
src_chain_id,
src_chain,
dst_chain_id,
dst_chain,
dst_chain_id_oft,
amount_sent,
payload,
TYPE,
nonce,
sender_contract_address,
receiver_contract_address,
message_type,
message_type_2
FROM
oft_raw o
INNER JOIN layerzero l USING (
tx_hash,
guid
)