diff --git a/data/silver_bridge__orbiter_bridge_seed.csv b/data/silver_bridge__orbiter_bridge_seed.csv new file mode 100644 index 0000000..64500d5 --- /dev/null +++ b/data/silver_bridge__orbiter_bridge_seed.csv @@ -0,0 +1,58 @@ +name,chainid,identificationcode +ethereum,1,9001 +arbitrum,42161,9002 +zksync_lite,zksync,9003 +starknet,SN_MAIN,9004 +polygon,137,9006 +optimism,10,9007 +immutable_x,immutableX,9008 +loopring,loopring,9009 +metis,1088,9010 +zkspace,ZKSpace,9012 +zksynce_era,324,9014 +bsc,56,9015 +arbitrum_nova,42170,9016 +polygon_zkevm,1101,9017 +scroll,534352,9019 +taiko,167000,9020 +base,8453,9021 +linea,59144,9023 +mantle,5000,9024 +opbnb,204,9025 +x_layer,196,9027 +zora,7777777,9030 +manta,169,9031 +kroma,255,9036 +zkfair,42766,9038 +blast,81457,9040 +zetachain,7000,9041 +b2_network,223,9046 +mode,34443,9047 +zklink_nova,810180,9048 +solana,SOLANA_MAIN,9051 +morph,2818,9052 +proof_of_play_apex,70700,9053 +merlin,4200,9054 +bevm,11501,9055 +ton,TON,9056 +bob,60808,9057 +core_blockchain,1116,9058 +bitlayer,200901,9059 +bouncebit,6001,9064 +eclipse,ECLIPSE_MAIN,9065 +optopia,62050,9066 +cyber,7560,9067 +mint,185,9068 +alienx,10241024,9069 +zircuit,48900,9069 +fraxtal,252,9069 +fuse,122,9069 +bomechain,9736,9069 +gravity,1625,9069 +tron,728126428,9079 +matchain,698,9084 +lisk,1135,9086 +redstone,690,9087 +kaia,8217,9089 +fuel,FUEL_MAIN,9094 +worldchain,480,9095 \ No newline at end of file diff --git a/models/silver/defi/bridge/orbiter/silver_bridge__orbiter_bridge.sql b/models/silver/defi/bridge/orbiter/silver_bridge__orbiter_bridge.sql deleted file mode 100644 index e4f3d33..0000000 --- a/models/silver/defi/bridge/orbiter/silver_bridge__orbiter_bridge.sql +++ /dev/null @@ -1,102 +0,0 @@ -{{ config( - materialized = 'incremental', - incremental_strategy = 'delete+insert', - unique_key = "block_number", - cluster_by = ['block_timestamp::DATE'], - tags = ['curated','reorg'] -) }} - -with bridge_router as ( --- for bridge tx utilizing router -select - block_number, - block_timestamp, - origin_from_address, - origin_to_address, - origin_function_signature, - tx_hash, - contract_address, - event_index, - origin_to_address as to_address, - origin_from_address as from_address, - origin_from_address as depositor, - TRY_TO_NUMBER(right(utils.udf_hex_to_int(data :: STRING), 4)) as destinationChainId, - TRY_TO_NUMBER(utils.udf_hex_to_int(data :: STRING)*pow(10,-18)) as value, - origin_from_address as receipient, - concat('0x', substr(topics[1]::STRING, 27, 40)) as bridge_address, - CASE - WHEN tx_status = 'success' THEN TRUE - ELSE FALSE - END AS tx_succeeded, - CONCAT( - tx_hash, - '-', - event_index - ) AS _log_id, - modified_timestamp -from {{ ref('core__fact_event_logs') }} -where -1=1 ---and bridge_address in ('0xe4edb277e41dc89ab076a1f049f4a3efa700bce8', '0xee73323912a4e3772b74ed0ca1595a152b0ef282') -- orbiter bridge -and topics[0]::STRING ='0x69ca02dd4edd7bf0a4abb9ed3b7af3f14778db5d61921c7dc7cd545266326de2' -and contract_address='0x13e46b2a3f8512ed4682a8fb8b560589fe3c2172' - AND tx_succeeded - -{% if is_incremental() %} -AND modified_timestamp >= ( - SELECT - MAX(modified_timestamp) - INTERVAL '12 hours' - FROM - {{ this }} -) -AND modified_timestamp >= SYSDATE() - INTERVAL '7 day' -{% endif %} - -), - -{# bridge_native as ( --- for direct native eth transfers -select - block_number, - block_timestamp, - tx_hash, - to_address, - from_address, - from_address as depositor, - right(value_precise_raw, 4) as destinationChainId, - value, - from_address as receipient, - to_address as bridge_address, - CASE - WHEN status = 'SUCCESS' THEN TRUE - ELSE FALSE - END AS tx_succeeded, - modified_timestamp -from {{ ref('core__fact_transactions') }} -where to_address in ('0xe4edb277e41dc89ab076a1f049f4a3efa700bce8','0x80c67432656d59144ceff962e8faf8926599bcf8') -and tx_succeeded - -{% if is_incremental() %} -AND modified_timestamp >= ( - SELECT - MAX(modified_timestamp) - INTERVAL '12 hours' - FROM - {{ this }} -) -AND modified_timestamp >= SYSDATE() - INTERVAL '7 day' -{% endif %} -), - -bridge_combine as ( -select * from bridge_native -union all -select * from bridge_router -) - -select - *, - 'orbiter finance' as platform, - '0x4300000000000000000000000000000000000004' as token_address, -- hardcoded weth contract address - value as token_amount -- native eth -from - bridge_combine #} \ No newline at end of file diff --git a/models/silver/defi/bridge/orbiter/silver_bridge__orbiter_bridgerequest.sql b/models/silver/defi/bridge/orbiter/silver_bridge__orbiter_bridgerequest.sql new file mode 100644 index 0000000..21a79cf --- /dev/null +++ b/models/silver/defi/bridge/orbiter/silver_bridge__orbiter_bridgerequest.sql @@ -0,0 +1,183 @@ +{{ config( + materialized = 'incremental', + incremental_strategy = 'delete+insert', + unique_key = "block_number", + cluster_by = ['block_timestamp::DATE'], + tags = ['curated','reorg'] +) }} + +WITH bridge_router AS ( + -- for bridge tx utilizing router + + SELECT + block_number, + block_timestamp, + origin_from_address, + origin_to_address, + origin_function_signature, + tx_hash, + contract_address, + event_index, + 'bridgeRequest' AS event_name, + origin_to_address AS to_address, + origin_from_address AS from_address, + origin_from_address AS depositor, + TRY_TO_NUMBER(RIGHT(utils.udf_hex_to_int(DATA :: STRING), 4)) AS destinationChainId, + TRY_TO_NUMBER(utils.udf_hex_to_int(DATA :: STRING) * pow(10, -18)) AS amount, + origin_from_address AS receipient, + CONCAT('0x', SUBSTR(topics [1] :: STRING, 27, 40)) AS bridge_address, + CASE + WHEN tx_status = 'success' THEN TRUE + ELSE FALSE + END AS tx_succeeded, + CONCAT( + tx_hash, + '-', + event_index + ) AS _log_id, + modified_timestamp + FROM + {{ ref('core__fact_event_logs') }} + WHERE + topics [0] :: STRING = '0x69ca02dd4edd7bf0a4abb9ed3b7af3f14778db5d61921c7dc7cd545266326de2' + AND contract_address = '0x13e46b2a3f8512ed4682a8fb8b560589fe3c2172' + AND bridge_address IN ( + '0xe4edb277e41dc89ab076a1f049f4a3efa700bce8', + '0xee73323912a4e3772b74ed0ca1595a152b0ef282' + ) -- orbiter bridge + AND tx_succeeded + +{% if is_incremental() %} +AND modified_timestamp >= ( + SELECT + MAX(modified_timestamp) - INTERVAL '12 hours' + FROM + {{ this }} +) +AND modified_timestamp >= SYSDATE() - INTERVAL '7 day' +{% endif %} +), +bridge_native AS ( + -- for direct native eth transfers + 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.to_address, + et.from_address, + et.from_address AS depositor, + TRY_TO_NUMBER( + RIGHT( + amount_precise_raw, + 4 + ) + ) AS destinationChainId, + amount, + et.from_address AS receipient, + et.to_address AS bridge_address, + native_transfers_id, + et.modified_timestamp + FROM + {{ ref('silver__native_transfers') }} + et + INNER JOIN {{ ref('silver__transactions') }} + tx + ON et.block_number = tx.block_number + AND et.tx_hash = tx.tx_hash + WHERE + et.to_address IN ( + '0xe4edb277e41dc89ab076a1f049f4a3efa700bce8', + '0xee73323912a4e3772b74ed0ca1595a152b0ef282', + '0x80c67432656d59144ceff962e8faf8926599bcf8' + ) + +{% if is_incremental() %} +AND et.modified_timestamp >= ( + SELECT + MAX(modified_timestamp) - INTERVAL '12 hours' + FROM + {{ this }} +) +AND et.modified_timestamp >= SYSDATE() - INTERVAL '7 day' +{% endif %} +), +bridge_combined AS ( + SELECT + block_number, + block_timestamp, + origin_from_address, + origin_to_address, + origin_function_signature, + tx_hash, + contract_address, + event_index, + event_name, + to_address, + from_address, + depositor, + destinationChainId AS orbiter_chain_id, + amount, + receipient, + bridge_address, + tx_succeeded, + _log_id AS _id, + modified_timestamp + FROM + bridge_router + UNION ALL + SELECT + block_number, + block_timestamp, + origin_from_address, + origin_to_address, + origin_function_signature, + tx_hash, + contract_address, + NULL AS event_index, + NULL AS event_name, + to_address, + from_address, + depositor, + destinationChainId AS orbiter_chain_id, + amount, + receipient, + bridge_address, + TRUE AS tx_succeeded, + native_transfers_id AS _id, + modified_timestamp + FROM + bridge_native +) +SELECT + block_number, + block_timestamp, + origin_from_address, + origin_to_address, + origin_function_signature, + tx_hash, + contract_address, + event_index, + event_name, + to_address, + from_address, + depositor, + orbiter_chain_id, + s.chainid AS destination_chain_id, + s.name AS destination_chain, + amount, + receipient, + receipient AS destination_chain_receiver, + bridge_address, + 'orbiter finance' AS platform, + '0x4300000000000000000000000000000000000004' AS token_address, + --weth contract address + tx_succeeded, + _id, + modified_timestamp +FROM + bridge_combined b +LEFT JOIN {{ ref('silver_bridge__orbiter_bridge_seed') }} s + ON b.orbiter_chain_id :: STRING = s.identificationcode :: STRING diff --git a/models/silver/defi/bridge/orbiter/silver_bridge__orbiter_bridge.yml b/models/silver/defi/bridge/orbiter/silver_bridge__orbiter_bridgerequest.yml similarity index 97% rename from models/silver/defi/bridge/orbiter/silver_bridge__orbiter_bridge.yml rename to models/silver/defi/bridge/orbiter/silver_bridge__orbiter_bridgerequest.yml index 9e3bae3..826348c 100644 --- a/models/silver/defi/bridge/orbiter/silver_bridge__orbiter_bridge.yml +++ b/models/silver/defi/bridge/orbiter/silver_bridge__orbiter_bridgerequest.yml @@ -1,6 +1,6 @@ version: 2 models: - - name: silver_bridge__synapse_tokenredeem + - name: silver_bridge__orbiter_bridgerequest tests: - dbt_utils.unique_combination_of_columns: combination_of_columns: diff --git a/models/silver/defi/bridge/synapse/silver_bridge__synapse_tokenredeem.sql b/models/silver/defi/bridge/synapse/silver_bridge__synapse_tokenredeem.sql index e686b92..3909665 100644 --- a/models/silver/defi/bridge/synapse/silver_bridge__synapse_tokenredeem.sql +++ b/models/silver/defi/bridge/synapse/silver_bridge__synapse_tokenredeem.sql @@ -40,9 +40,15 @@ WITH base_evt AS ( AND topic_0 IN ( '0x91f25e9be0134ec851830e0e76dc71e06f9dade75a9b84e9524071dbbc319425', -- TokenRedeemAndSwap + '0x79c15604b92ef54d3f61f0c40caab8857927ca3d5092367163b4562c1699eb5f', + -- TokenDepositAndSwap '0x9a7024cde1920aa50cdde09ca396229e8c4d530d5cfdc6233590def70a94408c', -- TokenRedeemAndRemove - '0xdc5bad4651c5fbe9977a696aadc65996c468cde1448dd468ec0d83bf61c4b57c' -- TokenRedeem + '0xdc5bad4651c5fbe9977a696aadc65996c468cde1448dd468ec0d83bf61c4b57c', + -- TokenRedeem + '0xda5273705dbef4bf1b902a131c2eac086b7e1476a8ab0cb4da08af1fe1bd8e3b', + -- TokenDeposit + '0x8e57e8c5fea426159af69d47eda6c5052c7605c9f70967cf749d4aa55b70b499' -- TokenRedeemV2 (terra specific) ) AND tx_succeeded @@ -66,32 +72,21 @@ redeem_swap AS ( tx_hash, contract_address, event_index, - 'TokenRedeemAndSwap' AS event_name, - topic_1 AS to_address, + CASE + WHEN topic_0 = '0x91f25e9be0134ec851830e0e76dc71e06f9dade75a9b84e9524071dbbc319425' THEN 'TokenRedeemAndSwap' + WHEN topic_0 = '0x79c15604b92ef54d3f61f0c40caab8857927ca3d5092367163b4562c1699eb5f' THEN 'TokenDepositAndSwap' + END AS event_name, + CONCAT('0x', SUBSTR(topics [1] :: STRING, 27, 40)) AS to_address, segmented_data, - utils.udf_hex_to_int( - segmented_data [0] :: STRING - ) AS chainId, - CONCAT('0x', SUBSTR(segmented_data [1], 25, 40)) AS token, - TRY_TO_NUMBER( - utils.udf_hex_to_int( - segmented_data [2] :: STRING - ) - ) AS amount, - utils.udf_hex_to_int( - segmented_data [3] - ) AS tokenIndexFrom, + TRY_TO_NUMBER(utils.udf_hex_to_int(segmented_data [0] :: STRING)) AS chainId, + CONCAT('0x', SUBSTR(segmented_data [1] :: STRING, 25, 40)) AS token, + TRY_TO_NUMBER(utils.udf_hex_to_int(segmented_data [2] :: STRING)) AS amount, + TRY_TO_NUMBER(utils.udf_hex_to_int(segmented_data [3] :: STRING)) AS tokenIndexFrom, -- source chain token index - utils.udf_hex_to_int( - segmented_data [4] - ) AS tokenIndexTo, + TRY_TO_NUMBER(utils.udf_hex_to_int(segmented_data [4] :: STRING)) AS tokenIndexTo, -- dst chain token index - utils.udf_hex_to_int( - segmented_data [5] - ) AS minDy, - utils.udf_hex_to_int( - segmented_data [6] - ) AS deadline, + TRY_TO_NUMBER(utils.udf_hex_to_int(segmented_data [5] :: STRING)) AS minDy, + TRY_TO_NUMBER(utils.udf_hex_to_int(segmented_data [6] :: STRING)) AS deadline, -- timestamp tx_succeeded, _log_id, @@ -99,7 +94,11 @@ redeem_swap AS ( FROM base_evt WHERE - topic_0 = '0x91f25e9be0134ec851830e0e76dc71e06f9dade75a9b84e9524071dbbc319425' -- TokenRedeemAndSwap + topic_0 IN ( + '0x91f25e9be0134ec851830e0e76dc71e06f9dade75a9b84e9524071dbbc319425', + -- TokenRedeemAndSwap + '0x79c15604b92ef54d3f61f0c40caab8857927ca3d5092367163b4562c1699eb5f' -- TokenDepositAndSwap + ) ), redeem_remove AS ( SELECT @@ -112,27 +111,15 @@ redeem_remove AS ( contract_address, event_index, 'TokenRedeemAndRemove' AS event_name, - topic_1 AS to_address, + CONCAT('0x', SUBSTR(topics [1] :: STRING, 27, 40)) AS to_address, segmented_data, - utils.udf_hex_to_int( - segmented_data [0] :: STRING - ) AS chainId, - CONCAT('0x', SUBSTR(segmented_data [1], 25, 40)) AS token, - TRY_TO_NUMBER( - utils.udf_hex_to_int( - segmented_data [2] :: STRING - ) - ) AS amount, - utils.udf_hex_to_int( - segmented_data [3] - ) AS swapTokenIndex, + TRY_TO_NUMBER(utils.udf_hex_to_int(segmented_data [0] :: STRING)) AS chainId, + CONCAT('0x', SUBSTR(segmented_data [1] :: STRING, 25, 40)) AS token, + TRY_TO_NUMBER(utils.udf_hex_to_int(segmented_data [2] :: STRING)) AS amount, + TRY_TO_NUMBER(utils.udf_hex_to_int(segmented_data [3] :: STRING)) AS swapTokenIndex, -- dst chain token index - utils.udf_hex_to_int( - segmented_data [4] - ) AS swapMinAmount, - utils.udf_hex_to_int( - segmented_data [5] - ) AS swapDeadline, + TRY_TO_NUMBER(utils.udf_hex_to_int(segmented_data [4] :: STRING)) AS swapMinAmount, + TRY_TO_NUMBER(utils.udf_hex_to_int(segmented_data [5] :: STRING)) AS swapDeadline, -- timestamp tx_succeeded, _log_id, @@ -152,109 +139,112 @@ redeem_only AS ( tx_hash, contract_address, event_index, - 'TokenRedeem' AS event_name, - topic_1 AS to_address, + CASE + WHEN topic_0 = '0xdc5bad4651c5fbe9977a696aadc65996c468cde1448dd468ec0d83bf61c4b57c' THEN 'TokenRedeem' + WHEN topic_0 = '0xda5273705dbef4bf1b902a131c2eac086b7e1476a8ab0cb4da08af1fe1bd8e3b' THEN 'TokenDeposit' + WHEN topic_0 = '0x8e57e8c5fea426159af69d47eda6c5052c7605c9f70967cf749d4aa55b70b499' THEN 'TokenRedeemV2' + END AS event_name, + CONCAT('0x', SUBSTR(topics [1] :: STRING, 27, 40)) AS to_address, segmented_data, - utils.udf_hex_to_int( - segmented_data [0] :: STRING - ) AS chainId, - CONCAT('0x', SUBSTR(segmented_data [1], 25, 40)) AS token, - TRY_TO_NUMBER( - utils.udf_hex_to_int( - segmented_data [2] :: STRING - ) - ) AS amount, + TRY_TO_NUMBER(utils.udf_hex_to_int(segmented_data [0] :: STRING)) AS chainId, + CONCAT('0x', SUBSTR(segmented_data [1] :: STRING, 25, 40)) AS token, + TRY_TO_NUMBER(utils.udf_hex_to_int(segmented_data [2] :: STRING)) AS amount, tx_succeeded, _log_id, modified_timestamp FROM base_evt WHERE - topic_0 = '0xdc5bad4651c5fbe9977a696aadc65996c468cde1448dd468ec0d83bf61c4b57c' -- TokenRedeem + topic_0 IN ( + '0xdc5bad4651c5fbe9977a696aadc65996c468cde1448dd468ec0d83bf61c4b57c', + -- TokenRedeem + '0xda5273705dbef4bf1b902a131c2eac086b7e1476a8ab0cb4da08af1fe1bd8e3b', + -- TokenDeposit + '0x8e57e8c5fea426159af69d47eda6c5052c7605c9f70967cf749d4aa55b70b499' -- TokenRedeemV2 (terra specific) + ) ), all_evts AS ( SELECT block_number, block_timestamp, - origin_function_signature, origin_from_address, origin_to_address, + origin_function_signature, tx_hash, + contract_address, event_index, event_name, - event_removed, - tx_status, - contract_address AS bridge_address, + to_address, + segmented_data, + chainId, + token, amount, - origin_from_address AS sender, - to_address AS receiver, - receiver AS destination_chain_receiver, - chainId AS destination_chain_id, - token AS token_address, + tx_succeeded, + _log_id, + modified_timestamp FROM redeem_swap UNION ALL SELECT block_number, block_timestamp, - origin_function_signature, origin_from_address, origin_to_address, + origin_function_signature, tx_hash, + contract_address, event_index, event_name, - event_removed, - tx_status, - contract_address AS bridge_address, + to_address, + segmented_data, + chainId, + token, amount, - origin_from_address AS sender, - to_address AS receiver, - receiver AS destination_chain_receiver, - chainId AS destination_chain_id, - token AS token_address, + tx_succeeded, + _log_id, + modified_timestamp FROM redeem_remove UNION ALL SELECT block_number, block_timestamp, - origin_function_signature, origin_from_address, origin_to_address, + origin_function_signature, tx_hash, + contract_address, event_index, event_name, - event_removed, - tx_status, - contract_address AS bridge_address, + to_address, + segmented_data, + chainId, + token, amount, - origin_from_address AS sender, - to_address AS receiver, - receiver AS destination_chain_receiver, - chainId AS destination_chain_id, - token AS token_address, + tx_succeeded, + _log_id, + modified_timestamp FROM redeem_only ) SELECT block_number, block_timestamp, - origin_function_signature, origin_from_address, origin_to_address, + origin_function_signature, tx_hash, event_index, event_name, - event_removed, - tx_status, - bridge_address, - 'synapse' AS platform, + contract_address AS bridge_address, + origin_from_address AS sender, + to_address AS receiver, + receiver AS destination_chain_receiver, + chainId AS destination_chain_id, + token AS token_address, amount, - sender, - receiver, - destination_chain_receiver, - destination_chain_id, - token_address, + tx_succeeded, + 'synapse' AS platform, _log_id, modified_timestamp FROM