diff --git a/data/silver_bridge__layerzero_bridge_seed.csv b/data/silver_bridge__layerzero_bridge_seed.csv new file mode 100644 index 0000000..330c4b5 --- /dev/null +++ b/data/silver_bridge__layerzero_bridge_seed.csv @@ -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 \ No newline at end of file diff --git a/models/silver/defi/bridge/layerzero/silver_bridge__stargate_v2_asset_id.csv b/data/silver_bridge__stargate_asset_id.csv similarity index 100% rename from models/silver/defi/bridge/layerzero/silver_bridge__stargate_v2_asset_id.csv rename to data/silver_bridge__stargate_asset_id.csv diff --git a/models/silver/defi/bridge/layerzero/silver_bridge__layerzero_v2_packet.sql b/models/silver/defi/bridge/layerzero/silver_bridge__layerzero_v2_packet.sql index 9060ffc..1f68c8e 100644 --- a/models/silver/defi/bridge/layerzero/silver_bridge__layerzero_v2_packet.sql +++ b/models/silver/defi/bridge/layerzero/silver_bridge__layerzero_v2_packet.sql @@ -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 + + */ diff --git a/models/silver/defi/bridge/layerzero/silver_bridge__layerzero_v2_tokens.sql b/models/silver/defi/bridge/layerzero/silver_bridge__layerzero_v2_tokens.sql deleted file mode 100644 index afdea81..0000000 --- a/models/silver/defi/bridge/layerzero/silver_bridge__layerzero_v2_tokens.sql +++ /dev/null @@ -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 diff --git a/models/silver/defi/bridge/layerzero/silver_bridge__stargate_final_list.sql b/models/silver/defi/bridge/layerzero/silver_bridge__stargate_final_list.sql deleted file mode 100644 index 594d7ef..0000000 --- a/models/silver/defi/bridge/layerzero/silver_bridge__stargate_final_list.sql +++ /dev/null @@ -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 diff --git a/models/silver/defi/bridge/layerzero/silver_bridge__stargate_pools.sql b/models/silver/defi/bridge/layerzero/silver_bridge__stargate_pools.sql deleted file mode 100644 index 1cff15e..0000000 --- a/models/silver/defi/bridge/layerzero/silver_bridge__stargate_pools.sql +++ /dev/null @@ -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 diff --git a/models/silver/defi/bridge/layerzero/silver_bridge__stargate_v2.sql b/models/silver/defi/bridge/layerzero/silver_bridge__stargate_v2.sql index 5e70fbb..079704a 100644 --- a/models/silver/defi/bridge/layerzero/silver_bridge__stargate_v2.sql +++ b/models/silver/defi/bridge/layerzero/silver_bridge__stargate_v2.sql @@ -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 diff --git a/models/silver/defi/bridge/layerzero/stargate/silver_bridge__stargate_v2.sql b/models/silver/defi/bridge/layerzero/stargate/silver_bridge__stargate_v2.sql new file mode 100644 index 0000000..7fdda9c --- /dev/null +++ b/models/silver/defi/bridge/layerzero/stargate/silver_bridge__stargate_v2.sql @@ -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') }} +) diff --git a/models/silver/defi/bridge/layerzero/stargate/silver_bridge__stargate_v2_busdriven.sql b/models/silver/defi/bridge/layerzero/stargate/silver_bridge__stargate_v2_busdriven.sql new file mode 100644 index 0000000..e5047c2 --- /dev/null +++ b/models/silver/defi/bridge/layerzero/stargate/silver_bridge__stargate_v2_busdriven.sql @@ -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 + ) diff --git a/models/silver/defi/bridge/layerzero/silver_bridge__stargate_v2_bus.sql b/models/silver/defi/bridge/layerzero/stargate/silver_bridge__stargate_v2_busrode.sql similarity index 95% rename from models/silver/defi/bridge/layerzero/silver_bridge__stargate_v2_bus.sql rename to models/silver/defi/bridge/layerzero/stargate/silver_bridge__stargate_v2_busrode.sql index 618a6bb..ee943e0 100644 --- a/models/silver/defi/bridge/layerzero/silver_bridge__stargate_v2_bus.sql +++ b/models/silver/defi/bridge/layerzero/stargate/silver_bridge__stargate_v2_busrode.sql @@ -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' diff --git a/models/silver/defi/bridge/layerzero/stargate/silver_bridge__stargate_v2_oft.sql b/models/silver/defi/bridge/layerzero/stargate/silver_bridge__stargate_v2_oft.sql new file mode 100644 index 0000000..b0deed0 --- /dev/null +++ b/models/silver/defi/bridge/layerzero/stargate/silver_bridge__stargate_v2_oft.sql @@ -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 + )