diff --git a/dbt_subprojects/dex/macros/models/_project/oneinch/LO/oneinch_lop_evt_index_macro.sql b/dbt_subprojects/dex/macros/models/_project/oneinch/LO/oneinch_lop_evt_index_macro.sql new file mode 100644 index 00000000000..bce34a7f84d --- /dev/null +++ b/dbt_subprojects/dex/macros/models/_project/oneinch/LO/oneinch_lop_evt_index_macro.sql @@ -0,0 +1,10 @@ +-- evt_index for 1inch LOP fills: numbered over ALL limits fills of a tx, BEFORE any +-- exclusion, so kept rows retain their dex__trades merge keys when fills +-- are reclassified (merge can only upsert, never delete). +-- Both sides of the dex.trades / dex_aggregator.trades split must agree on this +-- numbering: oneinch_lop_own_trades computes it at query time, while +-- oneinch_lop_venue_settled_fills persists it for oneinch_lop_aggregator_trades. + +{% macro oneinch_lop_evt_index() -%} +row_number() over(partition by tx_hash order by call_trace_address) +{%- endmacro %} diff --git a/dbt_subprojects/dex/models/_projects/oneinch/_schema.yml b/dbt_subprojects/dex/models/_projects/oneinch/_schema.yml index d6d64015040..167ec4f2368 100644 --- a/dbt_subprojects/dex/models/_projects/oneinch/_schema.yml +++ b/dbt_subprojects/dex/models/_projects/oneinch/_schema.yml @@ -363,7 +363,12 @@ models: config: tags: ['oneinch', 'lo', 'trades'] description: > - 1inch limit order protocol trades - special for dex.trades + 1inch limit order protocol trades - special for dex.trades. + Fills settled by a resolver on an underlying DEX in the same tx are excluded here + (the venue's own row already represents the trade in dex.trades) and reclassified + into dex_aggregator.trades via oneinch_lop_aggregator_trades. Fills pass through + with a maturity delay so the venue side's decoded events have landed before + dex__trades merges them. data_tests: - dbt_utils.unique_combination_of_columns: arguments: @@ -372,6 +377,9 @@ models: - tx_hash - evt_index - oneinch_no_cross_chain_placeholder_tokens + - check_dex_base_trades_seed: + arguments: + seed_file: ref('oneinch_lop_own_trades_seed') columns: - name: blockchain data_tests: @@ -404,6 +412,110 @@ models: data_tests: - not_null + - name: oneinch_lop_venue_settled_fills + meta: + blockchain: ['ethereum', 'bnb', 'polygon', 'arbitrum', 'avalanche_c', 'gnosis', 'optimism', 'fantom', 'base', 'zksync', 'linea', 'sonic', 'unichain'] + sector: oneinch + contributors: ['thevaizman'] + config: + tags: ['oneinch', 'lo'] + description: > + 1inch limit order protocol fills that a resolver settled on an underlying DEX in + the same tx (the venue's own row co-occurs in dex__base_trades). + These fills are excluded from oneinch_lop_own_trades (dex.trades) and emitted + into dex_aggregator.trades via oneinch_lop_aggregator_trades. Fills nested under + a classic/fusion/cross-chain execution and direct fills are kept out of this set. + data_tests: + - dbt_utils.unique_combination_of_columns: + arguments: + combination_of_columns: + - blockchain + - block_month + - block_date + - execution_id + columns: + - name: blockchain + data_tests: + - not_null + - name: block_month + data_tests: + - not_null + - name: block_date + data_tests: + - not_null + - name: block_time + - name: tx_hash + data_tests: + - not_null + - name: call_trace_address + data_tests: + - not_null + - name: execution_id + data_tests: + - not_null + - name: evt_index + data_tests: + - not_null + + - name: oneinch_lop_aggregator_trades + meta: + blockchain: ['ethereum', 'bnb', 'polygon', 'arbitrum', 'avalanche_c', 'gnosis', 'optimism', 'fantom', 'base', 'zksync', 'linea', 'sonic', 'unichain'] + sector: oneinch + contributors: ['thevaizman'] + config: + tags: ['oneinch', 'lo', 'trades'] + description: > + 1inch limit order protocol fills settled on an underlying DEX - special for + dex_aggregator.trades, served as-is like oneinch_ar_trades (the venue's own row + stays in dex.trades; the intent-layer fill is recorded here, user perspective, + carrying 1inch's own amounts and guarded amount_usd - these values are NOT + re-derived by generic erc20-decimals enrichment, which is unsafe for this + lineage's raw amounts; see CUR2-2693 / the #9747 revert) + data_tests: + - dbt_utils.unique_combination_of_columns: + arguments: + combination_of_columns: + - blockchain + - tx_hash + - trace_address + - evt_index + - check_dex_aggregator_seed: + arguments: + blockchain: arbitrum + project: 1inch-LOP + version: '4.0' + columns: + - name: blockchain + data_tests: + - not_null + - name: project + - name: version + - name: block_date + - name: block_month + - name: block_time + - name: token_bought_symbol + - name: token_sold_symbol + - name: token_pair + - name: token_bought_amount + - name: token_sold_amount + - name: token_bought_amount_raw + - name: token_sold_amount_raw + - name: amount_usd + - name: token_bought_address + - name: token_sold_address + - name: taker + - name: maker + - name: project_contract_address + - name: tx_hash + data_tests: + - not_null + - name: tx_from + - name: tx_to + - name: trace_address + data_tests: + - not_null + - name: evt_index + - name: oneinch_intent_resolvers meta: blockchain: ['ethereum', 'bnb', 'polygon', 'arbitrum', 'avalanche_c', 'gnosis', 'optimism', 'fantom', 'base', 'zksync', 'linea', 'sonic', 'unichain'] diff --git a/dbt_subprojects/dex/models/_projects/oneinch/outside/oneinch_lop_aggregator_trades.sql b/dbt_subprojects/dex/models/_projects/oneinch/outside/oneinch_lop_aggregator_trades.sql new file mode 100644 index 00000000000..d4743c390e8 --- /dev/null +++ b/dbt_subprojects/dex/models/_projects/oneinch/outside/oneinch_lop_aggregator_trades.sql @@ -0,0 +1,56 @@ +{{ + config( + schema = 'oneinch', + alias = 'lop_aggregator_trades', + materialized = 'view', + unique_key = ['blockchain', 'block_month', 'tx_hash', 'trace_address', 'evt_index'], + ) +}} + +{% set src_symbol = "coalesce(src_executed_symbol, '')" %} +{% set dst_symbol = "coalesce(dst_executed_symbol, '')" %} + + + +-- venue-settled LOP fills: the underlying venue's own row stays in dex.trades, so the +-- intent-layer fill is recorded here instead (user perspective, like oneinch_ar_trades). +-- evt_index comes persisted from oneinch_lop_venue_settled_fills (same numbering as +-- oneinch_lop_own_trades via oneinch_lop_evt_index()); keeping this view window-free +-- lets consumers' block_time predicates push down into the oneinch_swaps scan +select + f.blockchain + , '1inch-LOP' as project + , cast(f.protocol_version as varchar) as version + , f.block_date + , f.block_month + , f.block_time + , {{ dst_symbol }} as token_bought_symbol + , {{ src_symbol }} as token_sold_symbol + , case + when lower({{ src_symbol }}) > lower({{ dst_symbol }}) then concat({{ dst_symbol }}, '-', {{ src_symbol }}) + else concat({{ src_symbol }}, '-', {{ dst_symbol }}) + end as token_pair + , cast(f.dst_executed_amount as double) / pow(10, cast(element_at(f.complement, 'dst_decimals') as bigint)) as token_bought_amount + , cast(f.src_executed_amount as double) / pow(10, cast(element_at(f.complement, 'src_decimals') as bigint)) as token_sold_amount + , f.dst_executed_amount as token_bought_amount_raw + , f.src_executed_amount as token_sold_amount_raw + , f.amount_usd + , f.dst_token_address as token_bought_address + , f.src_token_address as token_sold_address + , f.user as taker + , cast(null as varbinary) as maker + , f.call_to as project_contract_address + , f.tx_hash + , f.tx_from + , f.tx_to + , f.call_trace_address as trace_address + , v.evt_index +from {{ ref('oneinch_swaps') }} as f +join {{ ref('oneinch_lop_venue_settled_fills') }} as v + on v.blockchain = f.blockchain + and v.block_month = f.block_month + and v.execution_id = f.execution_id +where true + and f.mode = 'limits' + and f.tx_success + and f.call_success diff --git a/dbt_subprojects/dex/models/_projects/oneinch/outside/oneinch_lop_own_trades.sql b/dbt_subprojects/dex/models/_projects/oneinch/outside/oneinch_lop_own_trades.sql index c89ecdb2e0e..92f65b6de35 100644 --- a/dbt_subprojects/dex/models/_projects/oneinch/outside/oneinch_lop_own_trades.sql +++ b/dbt_subprojects/dex/models/_projects/oneinch/outside/oneinch_lop_own_trades.sql @@ -1,4 +1,4 @@ -{{ +{{ config( schema = 'oneinch', alias = 'lop_own_trades', @@ -10,9 +10,26 @@ {% set src_symbol = "coalesce(src_executed_symbol, '')" %} {% set dst_symbol = "coalesce(dst_executed_symbol, '')" %} {% set placeholder_tokens = oneinch_cross_chain_placeholder_tokens_cfg_macro() | join(', ') %} +{% set maturity_delay = "interval '6' hour" %} +with fills as ( + -- evt_index is numbered over ALL limits fills, before the venue-settled exclusion: + -- kept rows must retain their historical evt_index because dex__trades + -- merges can only upsert, never delete + select * + , {{ oneinch_lop_evt_index() }} as evt_index + from {{ ref('oneinch_swaps') }} + where true + and mode = 'limits' + and tx_success + and call_success + -- exclude Fusion+ cross-chain fills: the ERC20True placeholder leg makes these degenerate single-chain rows + and (src_token_address is null or src_token_address not in ({{ placeholder_tokens }})) + and (dst_token_address is null or dst_token_address not in ({{ placeholder_tokens }})) +) + select blockchain , '1inch-LOP' as project @@ -40,12 +57,19 @@ select , tx_hash , tx_from , tx_to - , row_number() over(partition by tx_hash order by call_trace_address) as evt_index -from {{ ref('oneinch_swaps') }} + , evt_index +from fills as f where true - and mode = 'limits' - and tx_success - and call_success - -- exclude Fusion+ cross-chain fills: the ERC20True placeholder leg makes these degenerate single-chain rows - and (src_token_address is null or src_token_address not in ({{ placeholder_tokens }})) - and (dst_token_address is null or dst_token_address not in ({{ placeholder_tokens }})) \ No newline at end of file + and not exists ( -- venue-settled fills are reclassified into dex_aggregator.trades (see oneinch_lop_aggregator_trades) + select 1 + from {{ ref('oneinch_lop_venue_settled_fills') }} as v + where true + and v.blockchain = f.blockchain + and v.block_month = f.block_month + and v.execution_id = f.execution_id + ) + -- maturity delay: the 1inch lineage builds from raw traces while venue base trades + -- build from decoded events; a fill merged into dex__trades before its + -- venue's event decodes would never be removed (merge can't delete), so fills only + -- pass through once old enough for the venue side to have landed + and f.block_time <= now() - {{ maturity_delay }} diff --git a/dbt_subprojects/dex/models/_projects/oneinch/outside/oneinch_lop_venue_settled_fills.sql b/dbt_subprojects/dex/models/_projects/oneinch/outside/oneinch_lop_venue_settled_fills.sql new file mode 100644 index 00000000000..1b40021ba78 --- /dev/null +++ b/dbt_subprojects/dex/models/_projects/oneinch/outside/oneinch_lop_venue_settled_fills.sql @@ -0,0 +1,143 @@ +{%- set stream = oneinch_lo_cfg_macro() -%} +{%- set placeholder_tokens = oneinch_cross_chain_placeholder_tokens_cfg_macro() | join(', ') -%} + +{{ + config( + schema = 'oneinch', + alias = 'lop_venue_settled_fills', + materialized = 'incremental', + file_format = 'delta', + incremental_strategy = 'merge', + incremental_predicates = [incremental_predicate('DBT_INTERNAL_DEST.block_time')], + partition_by = ['blockchain', 'block_month'], + unique_key = ['blockchain', 'block_month', 'block_date', 'execution_id'], + post_hook = '{{ hide_spells() }}' + ) +}} + +{% set window_guard %} + {% if var('dev_dates', false) -%} and block_date > current_date - interval '3' day + {%- elif is_incremental() -%} and {{ incremental_predicate('block_time') }} {%- endif %} +{% endset %} + +-- LOP fills that a resolver settled on an underlying DEX in the same tx: the venue's +-- own row is already in dex__base_trades, so keeping the '1inch-LOP' row +-- in dex.trades double-counts the same fill. Fills settled via private liquidity +-- (no co-occurring venue row) stay in dex.trades; fills listed here are reclassified +-- into dex_aggregator.trades (see oneinch_lop_aggregator_trades). +-- +-- Keep-guards (fills NOT listed here even when a venue row co-occurs): +-- * fills nested under a classic / fusion / cross-chain execution of the same tx: +-- route legs of an aggregator swap or liquidity for a settlement order — real +-- maker liquidity whose parent trade is accounted for in dex_aggregator.trades +-- * direct fills (flags['direct']): their synthesized second-side row already +-- feeds dex_aggregator.trades as '1inch', so reclassifying them would duplicate +-- within that table; they remain in dex.trades unconditionally +-- +-- Cross-chain identical (tx_hash, call_trace_address) replays are an accepted +-- ~0-probability residual (the evt_index window is tx_hash-only). + +with + +fills as ( + select + blockchain + , block_month + , block_date + , block_time + , tx_hash + , call_trace_address + , execution_id + , flags + , {{ oneinch_lop_evt_index() }} as evt_index -- numbered before the exclusions below + from {{ ref('oneinch_swaps') }} + where true + and mode = 'limits' + and tx_success + and call_success + -- same pre-numbering predicates as oneinch_lop_own_trades (evt_index parity!): + -- Fusion+ cross-chain placeholder fills are excluded from both trade views (CUR2-2665) + and (src_token_address is null or src_token_address not in ({{ placeholder_tokens }})) + and (dst_token_address is null or dst_token_address not in ({{ placeholder_tokens }})) + {{ window_guard }} +) + +, parent_calls as ( + select + blockchain + , tx_hash + , call_trace_address + from {{ ref('oneinch_swaps') }} + where true + and mode in ('classic', 'fusion', 'cross-chain') + and tx_success + and call_success + and not coalesce(element_at(flags, 'second_side'), false) -- second-side rows are relabeled LOP fills, not routing calls + {{ window_guard }} +) + +, lop_tx_keys as ( + select distinct + blockchain + , block_month + , tx_hash + from fills +) + +-- joined to the small LOP tx set (instead of EXISTS with the union as the build side) +-- so the base trades scans get dynamically filtered on tx_hash +, venue_txs as ( + select distinct + k.blockchain + , k.block_month + , k.tx_hash + from ( + {%- for blockchain in oneinch_blockchains_cfg_macro() if blockchain.exposed and stream.name in blockchain.exposed %} + select + '{{ blockchain.name }}' as blockchain + , block_month + , tx_hash + from {{ ref('dex_' + blockchain.name + '_base_trades') }} + where true + and block_time >= timestamp '{{ stream.start }}' -- LOP stream start; prunes pre-LOP history on full builds + {{ window_guard }} + {% if not loop.last %} union all {% endif %} + {%- endfor %} + ) as b + join lop_tx_keys as k + on k.blockchain = b.blockchain + and k.block_month = b.block_month + and k.tx_hash = b.tx_hash +) + +-- output -- + +select + f.blockchain + , f.block_month + , f.block_date + , f.block_time + , f.tx_hash + , f.call_trace_address + , f.execution_id + , f.evt_index +from fills as f +where true + and not coalesce(element_at(f.flags, 'direct'), false) + and not exists ( -- keep-guard: fill is nested under a parent execution of the same tx + select 1 + from parent_calls as p + where true + and p.blockchain = f.blockchain + and p.tx_hash = f.tx_hash + and cardinality(f.call_trace_address) > cardinality(p.call_trace_address) -- strict: a direct fill's second-side row shares its call_trace_address + and slice(f.call_trace_address, 1, cardinality(p.call_trace_address)) = p.call_trace_address + ) + and exists ( -- a venue's own trade row co-occurs in the same tx + select 1 + from venue_txs as v + where true + and v.blockchain = f.blockchain + and v.block_month = f.block_month + and v.tx_hash = f.tx_hash + ) diff --git a/dbt_subprojects/dex/models/aggregator_trades/dex_aggregator_trades.sql b/dbt_subprojects/dex/models/aggregator_trades/dex_aggregator_trades.sql index 66e42edbc19..2b93477f7c4 100644 --- a/dbt_subprojects/dex/models/aggregator_trades/dex_aggregator_trades.sql +++ b/dbt_subprojects/dex/models/aggregator_trades/dex_aggregator_trades.sql @@ -23,6 +23,7 @@ ,ref('kyberswap_aggregator_trades') ,ref('tokenlon_trades') ,ref('oneinch_ar_trades') + ,ref('oneinch_lop_aggregator_trades') ,ref('odos_trades') ,ref('sushiswap_agg_trades') ,ref('bitget_dex_aggregator_trades') diff --git a/dbt_subprojects/dex/seeds/aggregator_trades/dex_aggregator_seed.csv b/dbt_subprojects/dex/seeds/aggregator_trades/dex_aggregator_seed.csv index d3a42dd9ce8..97c2fe057d0 100644 --- a/dbt_subprojects/dex/seeds/aggregator_trades/dex_aggregator_seed.csv +++ b/dbt_subprojects/dex/seeds/aggregator_trades/dex_aggregator_seed.csv @@ -187,3 +187,4 @@ ethereum,uniswap,4,2026-06-08,0xc44918417cc50f3aac660fc9758d2c951ddf5b61225f0147 tempo,uniswap,4,2026-06-08,0x0f818a40385db44d6f4884ae4533139ecc03c48969688dee8a0f611f6e051aea,6,"0,0,0",0x20c0000000000000000000000000000000000000,6,0x20c000000000000000000000b9537d11c60e8b50,6 tempo,uniswap,4,2026-06-08,0xa0dbdb0a59bf7aea37096edaad50ae80551e8d392bf64c7f2b908d3c7f672e26,7,"5,0,0,0,0",0x20c000000000000000000000b9537d11c60e8b50,3.193023,0x20c0000000000000000000000000000000000000,3.193343 tempo,uniswap,4,2026-06-08,0x220921a8b3eb96976fa833fa1f078255e14869a2268f3d2a3782a5398e7e7926,6,"0,0,0",0x20c000000000000000000000b9537d11c60e8b50,37.9962,0x20c0000000000000000000000000000000000000,38 +arbitrum,1inch-LOP,4.0,2026-06-06,0x92c5f2295c67cb1def44ba86667a02c6cd4d96b64825dde9fc407d987ddb07cb,1,"3,0,1,2",0x82af49447d8a07e3bd95bd0d56f35241523fbab1,23.83804776884383,0xaf88d065e77c8cc2239327c5edb3a432268e5831,36981.05915 diff --git a/dbt_subprojects/dex/seeds/trades/_schema.yml b/dbt_subprojects/dex/seeds/trades/_schema.yml index da13fdabbdb..ba6953217e6 100644 --- a/dbt_subprojects/dex/seeds/trades/_schema.yml +++ b/dbt_subprojects/dex/seeds/trades/_schema.yml @@ -1,154 +1,19 @@ version: 2 seeds: - - name: oneinch_arbitrum_base_trades_seed + - name: oneinch_lop_own_trades_seed config: column_types: blockchain: varchar project: varchar version: varchar - tx_hash: varbinary - evt_index: uint256 - block_number: uint256 - token_bought_address: varbinary - token_sold_address: varbinary - token_bought_amount_raw: uint256 - token_sold_amount_raw: uint256 - block_date: timestamp - - - name: oneinch_avalanche_c_base_trades_seed - config: - column_types: - blockchain: varchar - project: varchar - version: varchar - tx_hash: varbinary - evt_index: uint256 - block_number: uint256 - token_bought_address: varbinary - token_sold_address: varbinary - token_bought_amount_raw: uint256 - token_sold_amount_raw: uint256 - block_date: timestamp - - - name: oneinch_base_base_trades_seed - config: - column_types: - blockchain: varchar - project: varchar - version: varchar - tx_hash: varbinary - evt_index: uint256 - block_number: uint256 - token_bought_address: varbinary - token_sold_address: varbinary - token_bought_amount_raw: uint256 - token_sold_amount_raw: uint256 - block_date: timestamp - - - name: oneinch_bnb_base_trades_seed - config: - column_types: - blockchain: varchar - project: varchar - version: varchar - tx_hash: varbinary - evt_index: uint256 - block_number: uint256 - token_bought_address: varbinary - token_sold_address: varbinary - token_bought_amount_raw: uint256 - token_sold_amount_raw: uint256 - block_date: timestamp - - - name: oneinch_ethereum_base_trades_seed - config: - column_types: - blockchain: varchar - project: varchar - version: varchar - tx_hash: varbinary - evt_index: uint256 - block_number: uint256 - token_bought_address: varbinary - token_sold_address: varbinary - token_bought_amount_raw: uint256 - token_sold_amount_raw: uint256 block_date: timestamp - - - name: oneinch_fantom_base_trades_seed - config: - column_types: - blockchain: varchar - project: varchar - version: varchar tx_hash: varbinary evt_index: uint256 - block_number: uint256 token_bought_address: varbinary token_sold_address: varbinary - token_bought_amount_raw: uint256 - token_sold_amount_raw: uint256 - block_date: timestamp - - - name: oneinch_gnosis_base_trades_seed - config: - column_types: - blockchain: varchar - project: varchar - version: varchar - tx_hash: varbinary - evt_index: uint256 block_number: uint256 - token_bought_address: varbinary - token_sold_address: varbinary token_bought_amount_raw: uint256 token_sold_amount_raw: uint256 - block_date: timestamp - - - name: oneinch_optimism_base_trades_seed - config: - column_types: - blockchain: varchar - project: varchar - version: varchar - tx_hash: varbinary - evt_index: uint256 - block_number: uint256 - token_bought_address: varbinary - token_sold_address: varbinary - token_bought_amount_raw: uint256 - token_sold_amount_raw: uint256 - block_date: timestamp - - - name: oneinch_polygon_base_trades_seed - config: - column_types: - blockchain: varchar - project: varchar - version: varchar - tx_hash: varbinary - evt_index: uint256 - block_number: uint256 - token_bought_address: varbinary - token_sold_address: varbinary - token_bought_amount_raw: uint256 - token_sold_amount_raw: uint256 - block_date: timestamp - - - name: oneinch_zksync_base_trades_seed - config: - column_types: - blockchain: varchar - project: varchar - version: varchar - tx_hash: varbinary - evt_index: uint256 - block_number: uint256 - token_bought_address: varbinary - token_sold_address: varbinary - token_bought_amount_raw: uint256 - token_sold_amount_raw: uint256 - block_date: timestamp - name: aerodrome_base_base_trades_seed config: diff --git a/dbt_subprojects/dex/seeds/trades/oneinch_arbitrum_base_trades_seed.csv b/dbt_subprojects/dex/seeds/trades/oneinch_arbitrum_base_trades_seed.csv deleted file mode 100644 index 02c998eeb15..00000000000 --- a/dbt_subprojects/dex/seeds/trades/oneinch_arbitrum_base_trades_seed.csv +++ /dev/null @@ -1,5 +0,0 @@ -blockchain,project,version,block_date,tx_hash,evt_index,token_bought_address,token_sold_address,block_number,token_bought_amount_raw,token_sold_amount_raw -arbitrum,1inch-LOP,1,2021-09-24,0xfaebdcb7948f7141d05709373681b0e04c0672051b072db49268066c5ed146b6,1,0x82af49447d8a07e3bd95bd0d56f35241523fbab1,0xfd086bc7cd5c481dcc9c85ebe478a1c0b69fcbb9,1540189,100000000000000,308879 -arbitrum,1inch-LOP,2,2021-12-10,0x1c7b1db733029cdfefa5d33372061dcf392e6ddd668774306f7e80c6057d9631,1,0x0e15258734300290a651fdbae8deb039a8e7a2fa,0xfd086bc7cd5c481dcc9c85ebe478a1c0b69fcbb9,3725195,1000000000000000000,630230 -arbitrum,1inch-LOP,3,2022-11-25,0x5c8b58d7b37384216431a6fd41f424f1a750b4cb28c0a891d313454590cb1046,1,0xbfa641051ba0a0ad1b0acf549a89536a0d76472e,0xfd086bc7cd5c481dcc9c85ebe478a1c0b69fcbb9,41071170,1000000000000000000,1000000 -arbitrum,1inch-LOP,3 RFQ,2023-04-26,0x51b8f0aeaa4944927bf2c1c4c8c379fcfb7e7a3cdcd5389a424d8cecdb1a9b4e,1,0x82af49447d8a07e3bd95bd0d56f35241523fbab1,0xfd086bc7cd5c481dcc9c85ebe478a1c0b69fcbb9,84533042,5639386973373932,10995641 diff --git a/dbt_subprojects/dex/seeds/trades/oneinch_avalanche_c_base_trades_seed.csv b/dbt_subprojects/dex/seeds/trades/oneinch_avalanche_c_base_trades_seed.csv deleted file mode 100644 index 7177a6d8192..00000000000 --- a/dbt_subprojects/dex/seeds/trades/oneinch_avalanche_c_base_trades_seed.csv +++ /dev/null @@ -1,4 +0,0 @@ -blockchain,project,version,block_date,tx_hash,evt_index,token_bought_address,token_sold_address,block_number,token_bought_amount_raw,token_sold_amount_raw -avalanche_c,1inch-LOP,2,2022-01-18,0x17648dc902706d6d6e169087fdd0d5d9ed9c0a13a568ec8a48051f0b1ba5c908,1,0xa7d7079b0fead91f3e65f86e8915cb59c1a4c664,0xc7198437980c041c805a1edcba50c1ce5db95118,9734779,5000000,4992058 -avalanche_c,1inch-LOP,2 RFQ,2022-01-24,0xb2b5c36e970b5b7bcdc90cfe4f62200c2f3f30cbdbfc05dbaea5d1539ad6280c,1,0x49d5c2bdffac6ce2bfdb6640f4f80f226bc10bab,0xa7d7079b0fead91f3e65f86e8915cb59c1a4c664,10007361,20000000000000000,47776000 -avalanche_c,1inch-LOP,3,2022-11-30,0x7f208a0a570fb7276214dc4db47080a2aa90447fc7e5113ee3bda6cf694f7b0f,1,0xb31f66aa3c1e785363f0875a1b74e27b85fd66c7,0xc7198437980c041c805a1edcba50c1ce5db95118,23030230,77240000000000,1000 diff --git a/dbt_subprojects/dex/seeds/trades/oneinch_base_base_trades_seed.csv b/dbt_subprojects/dex/seeds/trades/oneinch_base_base_trades_seed.csv deleted file mode 100644 index abf16e06d96..00000000000 --- a/dbt_subprojects/dex/seeds/trades/oneinch_base_base_trades_seed.csv +++ /dev/null @@ -1,2 +0,0 @@ -blockchain,project,version,block_date,tx_hash,evt_index,token_bought_address,token_sold_address,block_number,token_bought_amount_raw,token_sold_amount_raw -base,1inch-LOP,3,2023-08-16,0x30231210e1afdc76c1cddd2576a52aa1ea98457297e62c902a7a5aa5bd7e9791,1,0x4200000000000000000000000000000000000006,0xeb466342c4d449bc9f53a865d5cb90586f405215,2698189,1000000000000000,1823264 diff --git a/dbt_subprojects/dex/seeds/trades/oneinch_bnb_base_trades_seed.csv b/dbt_subprojects/dex/seeds/trades/oneinch_bnb_base_trades_seed.csv deleted file mode 100644 index 4633ac4972d..00000000000 --- a/dbt_subprojects/dex/seeds/trades/oneinch_bnb_base_trades_seed.csv +++ /dev/null @@ -1,7 +0,0 @@ -blockchain,project,version,block_date,tx_hash,evt_index,token_bought_address,token_sold_address,block_number,token_bought_amount_raw,token_sold_amount_raw -bnb,1inch-LOP,1,2021-06-03,0x660036450cb8728a2ac5f2deb22bff8758af26aa099d4d0dbbae609093f47795,1,0x111111111117dc0aa78b770fa6a738034120c302,0xbb4cdb9cbd36b01bd1cbaebf2de08d9173bc095c,7976418,10000000000000000,82408297379630 -bnb,1inch-LOP,1 RFQ,2021-06-07,0x0205753c08d2642e2a12525ac0949d078a99e02ee87e559456245be24dc6803a,1,0x1af3f329e8be154074d8769d1ffa4ee058b1dbc3,0x111111111117dc0aa78b770fa6a738034120c302,8093622,3800000000000000000,1000000000000000000 -bnb,1inch-LOP,2,2021-12-06,0x9d7783360204258b9f2307f4ce4970f8de2a6d67db9b0b6215b9a0dcc39d0eff,1,0x1af3f329e8be154074d8769d1ffa4ee058b1dbc3,0x111111111117dc0aa78b770fa6a738034120c302,13243750,2100000000000000000,500000000000000000 -bnb,1inch-LOP,2 RFQ,2021-11-10,0x582066cd36fe1535334a05de5203025a0abadb6d2fb07542dba06d79b9fcb121,1,0x55d398326f99059ff775485246999027b3197955,0xe9e7cea3dedca5984780bafc599bd69add087d56,12518223,20000,10000 -bnb,1inch-LOP,3,2022-11-21,0x76952e9657a210fa51de9d0caf38cb66a4e594b8963790e9e282321b0608d560,1,0xe9e7cea3dedca5984780bafc599bd69add087d56,0x8ac76a51cc950d9822d68b83fe1ad97b32cd580d,23247742,1000000000000000000,1000000000000000000 -bnb,1inch-LOP,3 RFQ,2023-04-26,0x25086a72ce6a3cf12f836808a97c05432dae39fe74947fa2b9d0129bb47cceea,1,0xe9e7cea3dedca5984780bafc599bd69add087d56,0x2170ed0880ac9a755fd29b2688956bd959f933f8,27689475,188912638650814791680,96693200510555424 diff --git a/dbt_subprojects/dex/seeds/trades/oneinch_ethereum_base_trades_seed.csv b/dbt_subprojects/dex/seeds/trades/oneinch_ethereum_base_trades_seed.csv deleted file mode 100644 index 3d7ecfa17f2..00000000000 --- a/dbt_subprojects/dex/seeds/trades/oneinch_ethereum_base_trades_seed.csv +++ /dev/null @@ -1,7 +0,0 @@ -blockchain,project,version,block_date,tx_hash,evt_index,token_bought_address,token_sold_address,block_number,token_bought_amount_raw,token_sold_amount_raw -ethereum,1inch-LOP,1,2021-06-08,0x7430839c7a467a4946b2723bdb8d54d4bfeb72a54fbee988a184fc6ccee0c8fe,1,0xdac17f958d2ee523a2206206994597c13d831ec7,0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2,12596618,15000000,5705137173652603 -ethereum,1inch-LOP,1 RFQ,2021-06-24,0x17eedf52cd16e9a2a6cf7dcd0ea60f07b25d9b972564542b702cd86301270bc4,1,0x6b175474e89094c44da98b954eedeac495271d0f,0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2,12696723,123,123 -ethereum,1inch-LOP,2,2021-12-09,0x72e2bd374bad0f3ba7844edb0ddabcd3bf2b0b04c082e9eafc2e1e705d6d111a,1,0x111111111117dc0aa78b770fa6a738034120c302,0x888888435fde8e7d4c54cab67f206e4199454c60,13770760,1000000000000000000,1855074251006687451 -ethereum,1inch-LOP,2 RFQ,2021-11-12,0x3069e869f54a593d282f6d72e78c16638555bbb460ce09376f3b969a49740eb9,1,0xdac17f958d2ee523a2206206994597c13d831ec7,0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2,13601820,100000000,21712226154547600 -ethereum,1inch-LOP,3,2022-11-15,0xd6f31e37e9a2bdf79f9e08a3a1aff7aa27b6f33fad8e34506930058f944944eb,1,0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2,0x6b175474e89094c44da98b954eedeac495271d0f,15974678,794199483325101,1000000000000000000 -ethereum,1inch-LOP,3 RFQ,2022-11-28,0x6daff653b30efeda718d49eb9b6e30b42298603dba0722bbb035f797ef8420bc,1,0x4d224452801aced8b2f0aebe155379bb5d594381,0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48,16069990,919154283836533103102,3799290434 diff --git a/dbt_subprojects/dex/seeds/trades/oneinch_fantom_base_trades_seed.csv b/dbt_subprojects/dex/seeds/trades/oneinch_fantom_base_trades_seed.csv deleted file mode 100644 index 31a39ae7079..00000000000 --- a/dbt_subprojects/dex/seeds/trades/oneinch_fantom_base_trades_seed.csv +++ /dev/null @@ -1,3 +0,0 @@ -blockchain,project,version,block_date,tx_hash,evt_index,token_bought_address,token_sold_address,block_number,token_bought_amount_raw,token_sold_amount_raw -fantom,1inch-LOP,2 RFQ,2022-04-12,0x23a0a583070aedd2ab9a8dd8984b431751469932d6423cedada0a550b25a266f,1,0x049d68029688eabf473097a2fc38ef61633a3c7a,0x21be370d5312f44cb42ce377bc9b8a0cef1a4c83,35874180,20000000,16899724428868531759 -fantom,1inch-LOP,3,2022-11-20,0x60219b7e2fea63be636203aa8feaeaae96edd76514aebe8042cd23204ac522e7,1,0x04068da6c83afcfa0e13ba15a6696662335d5b75,0x8d11ec38a3eb5e956b052f67da8bdc9bef8abf3e,51203066,999842,1000000000000000000 diff --git a/dbt_subprojects/dex/seeds/trades/oneinch_gnosis_base_trades_seed.csv b/dbt_subprojects/dex/seeds/trades/oneinch_gnosis_base_trades_seed.csv deleted file mode 100644 index 9b79be7cb68..00000000000 --- a/dbt_subprojects/dex/seeds/trades/oneinch_gnosis_base_trades_seed.csv +++ /dev/null @@ -1,3 +0,0 @@ -blockchain,project,version,block_date,tx_hash,evt_index,token_bought_address,token_sold_address,block_number,token_bought_amount_raw,token_sold_amount_raw -gnosis,1inch-LOP,2,2022-01-17,0xb0bfe04bdc2a2492173d561b19bbba1ccb0fda47050e6c3b25244e133e1e6977,1,0x4ecaba5870353805a9f068101a40e0f32ed605c6,0xe91d153e0b41518a2ce8dd3d7944fa863463a97d,20154733,2000000,1989653057978614462 -gnosis,1inch-LOP,3,2022-11-25,0xd94d1559f1c5bf2647da93659003d2dfab158ead080b79837c5a28e9d9160c7b,1,0xe91d153e0b41518a2ce8dd3d7944fa863463a97d,0x4ecaba5870353805a9f068101a40e0f32ed605c6,25150125,2000000000000000000,2000000 diff --git a/dbt_subprojects/dex/seeds/trades/oneinch_lop_own_trades_seed.csv b/dbt_subprojects/dex/seeds/trades/oneinch_lop_own_trades_seed.csv new file mode 100644 index 00000000000..d2c68d780ab --- /dev/null +++ b/dbt_subprojects/dex/seeds/trades/oneinch_lop_own_trades_seed.csv @@ -0,0 +1,5 @@ +blockchain,project,version,block_date,tx_hash,evt_index,token_bought_address,token_sold_address,block_number,token_bought_amount_raw,token_sold_amount_raw +ethereum,1inch-LOP,4.0,2026-05-16,0xb8d38865a070827d3df208dbe6b3790424da9224b817b18404f0edc4a1ecbf54,1,0xdac17f958d2ee523a2206206994597c13d831ec7,0xaaee1a9723aadb7afa2810263653a34ba2c21c7a,25107864,10154641,70000000000000000000000000 +arbitrum,1inch-LOP,4.0,2026-06-08,0x9434cdde51c5463751b9760c36b970372ebb43831c2c290d9e608ff5d2f986a0,1,0x82af49447d8a07e3bd95bd0d56f35241523fbab1,0xfd086bc7cd5c481dcc9c85ebe478a1c0b69fcbb9,471427337,1712611082806479,2893387 +base,1inch-LOP,4.0,2026-06-08,0x4426b7d0e4830ae4ab611332cff25057f34186fdb1febe4409e386453a079215,1,0x696f9436b67233384889472cd7cd58a6fb5df4f1,0x4200000000000000000000000000000000000006,47070377,487501861382986679693,29658843898843296 +polygon,1inch-LOP,4.0,2026-06-08,0x40d30937e539ec9c970ebfc9e1ff3f10b7b9b939f2ed90e4957e627ace4ccd8f,1,0x87bdfbe98ba55104701b2f2e999982a317905637,0xc2132d05d31c914a87c6611c10748aeb04b58e8f,88133333,3592533174852765541820,1917473 diff --git a/dbt_subprojects/dex/seeds/trades/oneinch_optimism_base_trades_seed.csv b/dbt_subprojects/dex/seeds/trades/oneinch_optimism_base_trades_seed.csv deleted file mode 100644 index 02c53ad4275..00000000000 --- a/dbt_subprojects/dex/seeds/trades/oneinch_optimism_base_trades_seed.csv +++ /dev/null @@ -1,3 +0,0 @@ -blockchain,project,version,block_date,tx_hash,evt_index,token_bought_address,token_sold_address,block_number,token_bought_amount_raw,token_sold_amount_raw -optimism,1inch-LOP,2,2022-08-09,0xdb2a1b694452ef009cf8899ad6e8bae2b18c84fc75e293a9508a5633bda26f79,1,0x8c6f28f2f1a3c87f0f938b96d27520d9751ec8d9,0xfe8b128ba8c78aabc59d4c64cee7ff28e9379921,18398109,1000000000000000000,1343028820855567920 -optimism,1inch-LOP,3,2022-11-25,0x7a40bb7f50e59c5e673afe94e8733494243acd0877d227a809aa9ba1c16ba33d,1,0x94b008aa00579c1307b0ef2c499ad98a8ce58e58,0xc5102fe9359fd9a28f877a67e36b0f050d81a3cc,42102561,1000000,12000000000000000000 diff --git a/dbt_subprojects/dex/seeds/trades/oneinch_polygon_base_trades_seed.csv b/dbt_subprojects/dex/seeds/trades/oneinch_polygon_base_trades_seed.csv deleted file mode 100644 index e717548178d..00000000000 --- a/dbt_subprojects/dex/seeds/trades/oneinch_polygon_base_trades_seed.csv +++ /dev/null @@ -1,7 +0,0 @@ -blockchain,project,version,block_date,tx_hash,evt_index,token_bought_address,token_sold_address,block_number,token_bought_amount_raw,token_sold_amount_raw -polygon,1inch-LOP,1,2021-06-10,0x4ec29b58b188d26022191edd51af35f155b9edec5e79303fd78b3aef0400e8bb,1,0x8f3cf7ad23cd3cadbd9735aff958023239c6a063,0x0d500b1d8e8ef31e21c99d1db9a6444d3adf1270,15535024,8000000000000000000,2666666666666666666 -polygon,1inch-LOP,1 RFQ,2021-06-21,0x30e49b6e23145b5904bc1cd776a65ad2309e61e95c00c0b452cbf578e957b2aa,1,0xc2132d05d31c914a87c6611c10748aeb04b58e8f,0x7ceb23fd6bc0add59e62ac25578270cff1b9f619,15986349,20000000,10257304255126252 -polygon,1inch-LOP,2,2021-12-16,0x9f883ed622c357df0756ea6552c525b1fef3ccdd785772a0a27acb3e83b147a9,1,0x8f3cf7ad23cd3cadbd9735aff958023239c6a063,0x2791bca1f2de4661ed88a30c99a7a9449aa84174,22596059,612715402673482003,613420 -polygon,1inch-LOP,2 RFQ,2022-04-08,0x7f4d4290f3b5fd42d8c148457aa0c5b0ae5ad6a52f538eb7d1f611a6551224a1,1,0x0d500b1d8e8ef31e21c99d1db9a6444d3adf1270,0x2791bca1f2de4661ed88a30c99a7a9449aa84174,26901432,15000000000000000000,22024800 -polygon,1inch-LOP,3,2022-11-16,0x4367e740ccdaf64bb9300d64ce071c691ecc305c2f1ac5aff3f7ba3fe19f82c8,1,0x7ceb23fd6bc0add59e62ac25578270cff1b9f619,0x0d500b1d8e8ef31e21c99d1db9a6444d3adf1270,35676160,74784778083080804,100000000000000000000 -polygon,1inch-LOP,3 RFQ,2022-11-24,0x5fc98b8f538e6258f554039c182aa9094b2d3f83293812ad86a8ec8ffe122092,1,0x2791bca1f2de4661ed88a30c99a7a9449aa84174,0xc2132d05d31c914a87c6611c10748aeb04b58e8f,35994237,20000,10000 diff --git a/dbt_subprojects/dex/seeds/trades/oneinch_zksync_base_trades_seed.csv b/dbt_subprojects/dex/seeds/trades/oneinch_zksync_base_trades_seed.csv deleted file mode 100644 index a2120cda087..00000000000 --- a/dbt_subprojects/dex/seeds/trades/oneinch_zksync_base_trades_seed.csv +++ /dev/null @@ -1,3 +0,0 @@ -blockchain,project,version,block_date,tx_hash,evt_index,token_bought_address,token_sold_address,block_number,token_bought_amount_raw,token_sold_amount_raw -zksync,1inch-LOP,3,2023-04-25,0xce890512f93dd7d2f1576214025a384a7e4d77d0696f7586b08aa7f2abbb3666,1,0x85d84c774cf8e9ff85342684b0e795df72a24908,0x5aea5775959fbc2557cc8789bc1bf90a239d9a91,2221692,, -zksync,1inch-LOP,3 RFQ,2023-05-02,0x96a6f0a3b6dca895ae56ad55b14366f9ec0993409754caad26c0921598beebf8,1,0x3355df6d4c9c3035724fd0e3914de96a5a83aaf4,0x5aea5775959fbc2557cc8789bc1bf90a239d9a91,2649529,, diff --git a/dbt_subprojects/dex/tests/oneinch_lop_venue_settled_excluded.sql b/dbt_subprojects/dex/tests/oneinch_lop_venue_settled_excluded.sql new file mode 100644 index 00000000000..b0eb47e707e --- /dev/null +++ b/dbt_subprojects/dex/tests/oneinch_lop_venue_settled_excluded.sql @@ -0,0 +1,15 @@ +-- venue-settled 1inch-LOP fills must NOT appear in oneinch_lop_own_trades (dex.trades side): +-- the underlying venue's own row already represents the trade there, and these fills are +-- reclassified into dex_aggregator.trades via oneinch_lop_aggregator_trades. +-- The txs below were live-verified as venue-settled (CUR2-2693). The test goes vacuous once +-- the upstream incremental windows age past these block dates - that's expected; it guards +-- the anti-join wiring at (and around) merge time, not the classification forever. + +select blockchain, tx_hash, evt_index +from {{ ref('oneinch_lop_own_trades') }} +where (blockchain, tx_hash) in ( + ('arbitrum', 0x92c5f2295c67cb1def44ba86667a02c6cd4d96b64825dde9fc407d987ddb07cb), -- settled on dodo v2 + ('arbitrum', 0xafefb0e48142bcce632cd5c67a55ca18dadc14390f9d01315cee75472ada376a), -- settled on uniswap + ('ethereum', 0x959f82dde57fea7d94eb091fa57919cae6fb67a92cf1d4c4b27eceb1a1be4a10) -- settled on a tracked venue, $1.85M fill +) +and block_date between date '2026-05-20' and date '2026-06-06'