mirror of
https://github.com/FlipsideCrypto/solana-models.git
synced 2026-02-06 13:56:50 +00:00
orca intermediate swaps model (#175)
This commit is contained in:
parent
5dff3cfc40
commit
6356037d7d
37
data/testing__swaps_intermediate_orca.csv
Normal file
37
data/testing__swaps_intermediate_orca.csv
Normal file
@ -0,0 +1,37 @@
|
||||
tx_id,succeeded,swapper,from_mint,from_amt,to_mint,to_amt,swap_index
|
||||
2QxzLChDGEBNfEHEAQogmVZv8VKqS3AzScNfJcrgsrMKVZSDGWBfbefpXYnPqYePdPDRg2K28gyafcqDhbAFfPv2,TRUE,HdGsWDaxSDBesEYXmAYsG7WZYkKxUv3qhGJgmXSXnm3d,EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v,765.228731,So11111111111111111111111111111111111111112,23.300788434,1
|
||||
5LsYW2yEZJERFRD6jykprokamCZWRvEZRMqufNR625x9GELRawThDvcfRiwnHSx7hRBBdZzUqUPzPzBK6cyeBtHb,TRUE,FnJZCfHc6LuZKCWMJGsHmpmqPeVVpxiJR3upiFp8TWsG,EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v,0.185291,9vMJfxuKxXBoEa7rM12mYLMwTacLMLDJqHozw96WQL8i,4.904269,1
|
||||
3FpKL3EjTkSEyRhYakEqZ9ErDPHVGzZZ6upyba3wYkmshus4hPoM5NZEgzkMGefPcLrtX9iANWnbA5KA6WERktk2,TRUE,FnJZCfHc6LuZKCWMJGsHmpmqPeVVpxiJR3upiFp8TWsG,So11111111111111111111111111111111111111112,0.089771208,EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v,2.926124,1
|
||||
3mcp7RNz4qjQ37Sr3MZUrChpEYV66LDNkrVDoZWaMND61vcD6HpicftULvG8cYZChKyxESfNW7D6ZY7NnAwGwPK4,TRUE,95DFFq1icXkx9tdFMCYKwB3GV5R4gE3Fj93BHBBGpSCZ,So11111111111111111111111111111111111111112,14.183999998,EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v,1384.017514,1
|
||||
3mcp7RNz4qjQ37Sr3MZUrChpEYV66LDNkrVDoZWaMND61vcD6HpicftULvG8cYZChKyxESfNW7D6ZY7NnAwGwPK4,TRUE,95DFFq1icXkx9tdFMCYKwB3GV5R4gE3Fj93BHBBGpSCZ,EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v,1382.714683,AFbX8oGjGpmVFywbVouvhQSRmiW2aR1mohfahi4Y2AdB,219.620024112,2
|
||||
4EbgFcL5CM7B87EgZqW7KyAyVKRrvcifpPWvwP26UDmgQ4nb1NZdqjqZigUtUWXat9gH97kLenYpBVWaRmJ98MmD,TRUE,FnJZCfHc6LuZKCWMJGsHmpmqPeVVpxiJR3upiFp8TWsG,So11111111111111111111111111111111111111112,0.015372265,2FPyTwcZLUg1MDrwsyoP4D6s1tM7hAkHYRjkNb5w6Pxk,0.000357,1
|
||||
4EbgFcL5CM7B87EgZqW7KyAyVKRrvcifpPWvwP26UDmgQ4nb1NZdqjqZigUtUWXat9gH97kLenYpBVWaRmJ98MmD,TRUE,FnJZCfHc6LuZKCWMJGsHmpmqPeVVpxiJR3upiFp8TWsG,SRMuApVNdxXokk5GT7XD5cUUgXMBCoAz2LHeuAoKWRt,0.597252,So11111111111111111111111111111111111111112,0.015520937,2
|
||||
KJ6M8YcsHbQr3CXSQpubh5pWxcgLyboZLg6HGJFZ6WUm9QFuqDrP1jQRfeMbbzzMqTJ4FzjxPYEpdnNBYtzM4wD,TRUE,AxTFCGaCtyizxoii9L1NcpdFzmuAd5Xm7yHEebLjmxN6,So11111111111111111111111111111111111111112,0.849975124,EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v,45.68329,1
|
||||
KJ6M8YcsHbQr3CXSQpubh5pWxcgLyboZLg6HGJFZ6WUm9QFuqDrP1jQRfeMbbzzMqTJ4FzjxPYEpdnNBYtzM4wD,TRUE,AxTFCGaCtyizxoii9L1NcpdFzmuAd5Xm7yHEebLjmxN6,EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v,45.68329,AFbX8oGjGpmVFywbVouvhQSRmiW2aR1mohfahi4Y2AdB,15.001785844,2
|
||||
3xsQC8Zn5juvP9bPPiVHRi3kp7NnLzaziWzBqFH7eyXcQNRzfDAUdKqz4Nv5kwK9PQpi6eozq5V1pUw1fg15FrJQ,TRUE,3LtjpMgF25NCaGdLAntnw9gSZwPbXNzP4fBtiPDV2CWW,So11111111111111111111111111111111111111112,0.049999997,orcaEKTdK7LKz57vaAYr9QeNsVEPfiu6QeMU1kektZE,1.928452,1
|
||||
3hPfLKsSs5dG9GWq3286PGJjTgRrzzPwmRigVcnwVJ3BjVygRHf3TNSf6T1xw6FzaKAaR4TykfuFSuv3PcdWbdMF,TRUE,GjMxHDsRz2BabBKbyc3NxGbxBUYug7ujT5JdQ2Eerxfk,So11111111111111111111111111111111111111112,0.000099984,SRMuApVNdxXokk5GT7XD5cUUgXMBCoAz2LHeuAoKWRt,0.004306,1
|
||||
5aSxXzFNBtkeSmuGV3Jq3UAf9B3LEXEZSvB5u2SVoQj3XDmYA7jrMjMK39Gw8eKDjtkYh2CaGtnzB71jn3FMEdT9,TRUE,9SoYUhp9x1NiR4gsrU8NYzUC4ZMXnpTh3TDm6ot1qd2J,So11111111111111111111111111111111111111112,0.049999995,EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v,2.49579,1
|
||||
4fK4xxJEEgQ4wcyMJr377uFfVyEmpoNLy2Wi5XD17yRoujNEoYJu7EpXHtcPAiEoBy7ZkirSiZhbJ2Hy1HbJGtYo,TRUE,3a9RHGL9HVxCsbtPpvJYZLEZrpGqpGG6g6LHzVBgPK1T,So11111111111111111111111111111111111111112,0.359662996,7xKXtg2CW87d97TXJSDpbD5jBkheTqA83TZRuJosgAsU,3331.554114357,1
|
||||
4fK4xxJEEgQ4wcyMJr377uFfVyEmpoNLy2Wi5XD17yRoujNEoYJu7EpXHtcPAiEoBy7ZkirSiZhbJ2Hy1HbJGtYo,TRUE,3a9RHGL9HVxCsbtPpvJYZLEZrpGqpGG6g6LHzVBgPK1T,7xKXtg2CW87d97TXJSDpbD5jBkheTqA83TZRuJosgAsU,3331.554098893,EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v,19.632909,2
|
||||
1kBLMk3k5rxtsT2CTabiLZrMngUH8YuBhsonRrcHh9gW1kcZ2xXMt3pUUAMPGxdGJv37eSn1NLC1LNNAhf5mXVV,TRUE,FnJZCfHc6LuZKCWMJGsHmpmqPeVVpxiJR3upiFp8TWsG,EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v,2.271457,So11111111111111111111111111111111111111112,0.050037222,1
|
||||
1kBLMk3k5rxtsT2CTabiLZrMngUH8YuBhsonRrcHh9gW1kcZ2xXMt3pUUAMPGxdGJv37eSn1NLC1LNNAhf5mXVV,TRUE,FnJZCfHc6LuZKCWMJGsHmpmqPeVVpxiJR3upiFp8TWsG,So11111111111111111111111111111111111111112,0.050037207,BQcdHdAQW1hczDbBi9hiegXAR7A98Q9jx3X3iBBBDiq4,1.76098,2
|
||||
1kBLMk3k5rxtsT2CTabiLZrMngUH8YuBhsonRrcHh9gW1kcZ2xXMt3pUUAMPGxdGJv37eSn1NLC1LNNAhf5mXVV,TRUE,FnJZCfHc6LuZKCWMJGsHmpmqPeVVpxiJR3upiFp8TWsG,BQcdHdAQW1hczDbBi9hiegXAR7A98Q9jx3X3iBBBDiq4,1.76098,EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v,2.278336,3
|
||||
2G1tUPa52pUZr3zdheC7bY6G3kyifFPMNh7F8HYSLDb6gwshr1RVRqMWL9YQfzvQ18nZdddBqk2RViTYoqBwDSPD,TRUE,E6rRQBgWFxJZ1T6Rs66VwkArz6EeTqhX2ULEfCvSeb4o,EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v,202.768742,4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R,38.540547,1
|
||||
2G1tUPa52pUZr3zdheC7bY6G3kyifFPMNh7F8HYSLDb6gwshr1RVRqMWL9YQfzvQ18nZdddBqk2RViTYoqBwDSPD,TRUE,E6rRQBgWFxJZ1T6Rs66VwkArz6EeTqhX2ULEfCvSeb4o,4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R,38.540162,So11111111111111111111111111111111111111112,1.41520601,2
|
||||
2G1tUPa52pUZr3zdheC7bY6G3kyifFPMNh7F8HYSLDb6gwshr1RVRqMWL9YQfzvQ18nZdddBqk2RViTYoqBwDSPD,TRUE,E6rRQBgWFxJZ1T6Rs66VwkArz6EeTqhX2ULEfCvSeb4o,So11111111111111111111111111111111111111112,1.414977011,9n4nbM75f5Ui33ZbPYXn59EwSgE8CGsHtAeTH5YFeJ9E,0.004818,3
|
||||
2G1tUPa52pUZr3zdheC7bY6G3kyifFPMNh7F8HYSLDb6gwshr1RVRqMWL9YQfzvQ18nZdddBqk2RViTYoqBwDSPD,TRUE,E6rRQBgWFxJZ1T6Rs66VwkArz6EeTqhX2ULEfCvSeb4o,9n4nbM75f5Ui33ZbPYXn59EwSgE8CGsHtAeTH5YFeJ9E,0.004818,EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v,207.989933,4
|
||||
5dTuKTQEBQEDs7V1WBfuv5MTkMstgkSucdZAvycPapPriBSU6pLXCYqCZ8ChVE21Sgn6prVTbuATbQkhz3ZNpBcF,TRUE,DT1mBDFsNBc1UXa25RdxNvnjL5Lro7su7gX1zpLyCmWe,4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R,0.000796,EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v,0.00085,1
|
||||
4oAVYzKr4t7tQJbme1G9Lo2kycgLXWFgzZSdxtfYwfxxPDYqBWvUbhAs359qfhoyy9mJZjQwX72HbJsAmTDpcdRV,TRUE,5a2vAasrNmMwsHS6GhWQfStbBaPs8XPc4nZqmTjWAg2M,EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v,2000,So11111111111111111111111111111111111111112,37.265600236,1
|
||||
4txTBFpBZT4tRAmZLkfQ2qiuhZEKKv9ks5j2DAxBcGPDvWZstXHapazCbC4voBB5XkTwh9CwBJ7aWHxtiFKH9PVM,TRUE,HiVf8RKNETMYVyVrqcaoMGAP8CyMZ67cLtnGfJJ82bCx,7xKXtg2CW87d97TXJSDpbD5jBkheTqA83TZRuJosgAsU,295.483796745,So11111111111111111111111111111111111111112,0.068308233,1
|
||||
sG5f1439MhvTafpgv8d8zKrAcUnkEH3YKSaP3wbZCoBfiWLsjdV8FjAmpHy3RkgL2azLm1v6MdpzRWhockKPxmY,TRUE,sx7E38PqhZ8NDYWoNzHoKF71SKHMDA5h2Wskbyiu4BB,EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v,1.554385,4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R,2.019437,1
|
||||
TwENfn52KvbVWajAyAbmq8VaaojPJVsMbU5SBS5pRcx8hLqMnMZyrEzVXjxLA4Td6YBjBccLfDHJhWVnctEa4aH,TRUE,C5vAhLenoUz9hWXnviFQJjyFZLjp3Ndh7BntS3yJfki5,EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v,21.861627,AGFEad2et2ZJif9jaGpdMixQqvW5i81aBdvKe7PHNfz3,0.688737,1
|
||||
24xxMyhpZPNZkEpteNgkFxy1okm21NtDBMoU9BXWBYUidiM6DCdabNsPq8Qxj9Qbrq9CoPHqXibQn7xY46Z6JUxJ,TRUE,C5vAhLenoUz9hWXnviFQJjyFZLjp3Ndh7BntS3yJfki5,2FPyTwcZLUg1MDrwsyoP4D6s1tM7hAkHYRjkNb5w6Pxk,0.000091,EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v,0.120178,1
|
||||
4L9qNjj5YVHK6Z55zMRFeK5ggVk9atktvmqK4KYjuBDrapg8FbR3748JW2yrQndJgvcU9voeE7jdN3Lmfshi3sWB,TRUE,GReSWJ89VBhPFVLFetnUA6r5Br4WemZp5CDHGvV85fwy,EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v,10,Saber2gLauYim4Mvftnrasomsv6NvAuncvMEZwcLpD1,2409.610112,1
|
||||
51aYyFt2b9dWKWHpS5VU3eFuuW1Ep7pNzT37vPkcDmzREQHP1HAWxnCdx2GU4hfS75aHZnkd1NqQiGaLM18Myq9P,TRUE,GaYVu6BDzEcTX8HVM8PGd1x1XUWZafVrMzDAe2VgiAAB,ATLASXmbPQxBUYbxPsV97usA3fPQYEqzQBUHgiFCUsXx,19.99990748,EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v,0.133885,1
|
||||
JpE6Qx8PGvcEDqitoSEgqSBGPxfm6EntvtUhz6JNB9cnYh26ErGWFLge6atiywH4NeMNjLWAj91QN7EHyVNjmBs,TRUE,C3csyuyMtcDBTqP3gL9n1PbuL9r37ed7wavooBZEtcx8,EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v,0.539,MangoCzJ36AjZyKwVj3VnYU4GTonjfVEnJmvvWaxLac,12.491308,1
|
||||
Ki2PGcudggRqtb3B9SnufSgGJkSwxdjAvEhBqAyVatXxaUcuzzxX3eKvJpUGykUDr1cYxwhJJppTZvia4Lx9dF2,TRUE,ogDsdvMKRRRMmsrT2hTPdkQBu1qY2z1jBDzgpi8HZri,7vfCXTUXx5WJV5JADk17DUJ4ksgau7utNKj4b963voxs,0.3866529,EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v,467.782806,1
|
||||
3X1fHTehR6UMfUMH9uPJir5YW6LjzgNfKr7QhKqnCq74VoY6jJHcmCL2YvNi2PA2CLjPLpCQaq3UKDxUyzQoxv3A,TRUE,Gfrpgxxk2Ds5f4BNPmngNZq2bcxupsqKnUZ6dBBLqHqH,So11111111111111111111111111111111111111112,6,EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v,219.405943,1
|
||||
4vnF6WX4Zcu4AskYsh79GcrJ2vHbuNpxshqYuSAJGWPegsULsmGFakoLYHkv3M2d6RZ4innAUfVPcknk5ToEuGtq,TRUE,GMJHfti4je12kPmrGJTstx38DB6vDhbeAfEijyGybwxK,EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v,0.01,So11111111111111111111111111111111111111112,0.0001983,1
|
||||
4vnF6WX4Zcu4AskYsh79GcrJ2vHbuNpxshqYuSAJGWPegsULsmGFakoLYHkv3M2d6RZ4innAUfVPcknk5ToEuGtq,TRUE,GMJHfti4je12kPmrGJTstx38DB6vDhbeAfEijyGybwxK,So11111111111111111111111111111111111111112,0.0001983,7dHbWXmci3dT8UFYWYZweBLXgycu7Y3iL6trKn1Y7ARj,0.000190827,2
|
||||
4vnF6WX4Zcu4AskYsh79GcrJ2vHbuNpxshqYuSAJGWPegsULsmGFakoLYHkv3M2d6RZ4innAUfVPcknk5ToEuGtq,TRUE,GMJHfti4je12kPmrGJTstx38DB6vDhbeAfEijyGybwxK,7dHbWXmci3dT8UFYWYZweBLXgycu7Y3iL6trKn1Y7ARj,0.000190827,USDH1SM1ojwWUga67PGrgFWUHibbjqMvuMaDkRJTgkX,0.009936,3
|
||||
4vnF6WX4Zcu4AskYsh79GcrJ2vHbuNpxshqYuSAJGWPegsULsmGFakoLYHkv3M2d6RZ4innAUfVPcknk5ToEuGtq,TRUE,GMJHfti4je12kPmrGJTstx38DB6vDhbeAfEijyGybwxK,USDH1SM1ojwWUga67PGrgFWUHibbjqMvuMaDkRJTgkX,0.009936,EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v,0.009959,4
|
||||
|
479
models/silver/swaps/silver__swaps_intermediate_orca.sql
Normal file
479
models/silver/swaps/silver__swaps_intermediate_orca.sql
Normal file
@ -0,0 +1,479 @@
|
||||
{{ config(
|
||||
materialized = 'incremental',
|
||||
unique_key = ["block_id","tx_id","swap_index"],
|
||||
merge_predicates = ["DBT_INTERNAL_DEST.block_timestamp::date >= LEAST(current_date-7,(select min(block_timestamp)::date from {{ this }}__dbt_tmp))"],
|
||||
cluster_by = ['block_timestamp::DATE','_inserted_timestamp::DATE'],
|
||||
post_hook = "ALTER TABLE {{ this }} ADD SEARCH OPTIMIZATION"
|
||||
) }}
|
||||
|
||||
WITH base_events AS(
|
||||
|
||||
SELECT
|
||||
*
|
||||
FROM
|
||||
{{ ref('silver__events') }}
|
||||
WHERE
|
||||
(
|
||||
program_id IN (
|
||||
-- Orca
|
||||
'9W959DqEETiGZocYWCQPaJ6sBmUzgfxXfqGeTEdp3aQP',
|
||||
'DjVE6JNiYqPL2QXyCUUh8rNjHrbz9hXHNYt99MQ59qw1',
|
||||
'whirLbMiicVdio4qvUfM5KAg6Ct8VwpYzGff3uctyCc',
|
||||
--program ids for acct mapping
|
||||
'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL',
|
||||
'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA',
|
||||
--program ids that identify the swapper in certain tx
|
||||
'8rGFmebhhTikfJP5bUe2uLHcejSiukdJhiLEKoit962a',
|
||||
'E16pm4Z4jiFxVEeBcSuYfJHy6TQYfYRAhGYt7cEUYfEV'
|
||||
|
||||
)
|
||||
)
|
||||
AND block_id > 111442741 -- token balances owner field not guaranteed to be populated before this slot
|
||||
|
||||
{% if is_incremental() %}
|
||||
-- AND block_timestamp :: DATE = '2022-11-01'
|
||||
AND _inserted_timestamp >= (
|
||||
SELECT
|
||||
MAX(_inserted_timestamp)
|
||||
FROM
|
||||
{{ this }}
|
||||
)
|
||||
{% else %}
|
||||
AND block_timestamp :: DATE >= '2021-12-14'
|
||||
{% endif %}
|
||||
),
|
||||
dex_txs AS (
|
||||
SELECT
|
||||
e.*,
|
||||
IFF(ARRAY_SIZE(signers) = 1, signers [0] :: STRING, NULL) AS swapper,
|
||||
signers
|
||||
FROM
|
||||
base_events e
|
||||
INNER JOIN {{ ref('silver__transactions') }}
|
||||
t
|
||||
ON t.tx_id = e.tx_id
|
||||
AND t.block_timestamp :: DATE = e.block_timestamp :: DATE
|
||||
WHERE
|
||||
program_id IN (
|
||||
-- Orca
|
||||
'9W959DqEETiGZocYWCQPaJ6sBmUzgfxXfqGeTEdp3aQP',
|
||||
'DjVE6JNiYqPL2QXyCUUh8rNjHrbz9hXHNYt99MQ59qw1',
|
||||
'whirLbMiicVdio4qvUfM5KAg6Ct8VwpYzGff3uctyCc'
|
||||
)
|
||||
AND inner_instruction_program_ids [0] <> 'DecZY86MU5Gj7kppfUCEmd4LbXXuyZH1yHaP2NTqdiZB'
|
||||
|
||||
{% if is_incremental() %}
|
||||
-- AND t.block_timestamp :: DATE = '2022-11-01'
|
||||
AND t._inserted_timestamp >= (
|
||||
SELECT
|
||||
MAX(_inserted_timestamp)
|
||||
FROM
|
||||
{{ this }}
|
||||
)
|
||||
{% else %}
|
||||
AND t.block_timestamp :: DATE >= '2021-12-14'
|
||||
{% endif %}
|
||||
),
|
||||
base_transfers AS (
|
||||
SELECT
|
||||
tr.*
|
||||
FROM
|
||||
{{ ref('silver__transfers') }}
|
||||
tr
|
||||
INNER JOIN (
|
||||
SELECT
|
||||
DISTINCT tx_id
|
||||
FROM
|
||||
dex_txs
|
||||
) d
|
||||
ON d.tx_id = tr.tx_id
|
||||
|
||||
{% if is_incremental() %}
|
||||
WHERE
|
||||
-- block_timestamp :: DATE = '2022-11-01'
|
||||
_inserted_timestamp >= (
|
||||
SELECT
|
||||
MAX(_inserted_timestamp)
|
||||
FROM
|
||||
{{ this }}
|
||||
)
|
||||
{% else %}
|
||||
WHERE
|
||||
block_timestamp :: DATE >= '2021-12-14'
|
||||
{% endif %}
|
||||
),
|
||||
base_post_token_balances AS (
|
||||
SELECT
|
||||
pb.*
|
||||
FROM
|
||||
{{ ref('silver___post_token_balances') }}
|
||||
pb
|
||||
INNER JOIN (
|
||||
SELECT
|
||||
DISTINCT tx_id
|
||||
FROM
|
||||
dex_txs
|
||||
) d
|
||||
ON d.tx_id = pb.tx_id
|
||||
|
||||
{% if is_incremental() %}
|
||||
WHERE
|
||||
-- block_timestamp :: DATE = '2022-11-01'
|
||||
_inserted_timestamp >= (
|
||||
SELECT
|
||||
MAX(_inserted_timestamp)
|
||||
FROM
|
||||
{{ this }}
|
||||
)
|
||||
{% else %}
|
||||
WHERE
|
||||
block_timestamp :: DATE >= '2021-12-14'
|
||||
{% endif %}
|
||||
),
|
||||
swapper_map_temp as(
|
||||
SELECT e.tx_id,
|
||||
e.instruction :accounts[0] :: STRING AS swapper
|
||||
from base_events e
|
||||
INNER JOIN (
|
||||
SELECT
|
||||
DISTINCT tx_id
|
||||
FROM
|
||||
dex_txs
|
||||
) d
|
||||
ON d.tx_id = e.tx_id
|
||||
WHERE program_id in ('8rGFmebhhTikfJP5bUe2uLHcejSiukdJhiLEKoit962a','E16pm4Z4jiFxVEeBcSuYfJHy6TQYfYRAhGYt7cEUYfEV')
|
||||
|
||||
),
|
||||
|
||||
swaps_temp AS(
|
||||
SELECT
|
||||
A.block_id,
|
||||
A.block_timestamp,
|
||||
A.tx_id,
|
||||
COALESCE(SPLIT_PART(INDEX :: text, '.', 1) :: INT, INDEX :: INT) AS INDEX,
|
||||
COALESCE(NULLIF(SPLIT_PART(INDEX :: text, '.', 2), '') :: INT, NULL) AS inner_index,
|
||||
A.program_id,
|
||||
A.tx_from,
|
||||
A.tx_to,
|
||||
A.amount,
|
||||
A.mint,
|
||||
A.succeeded,
|
||||
A._inserted_timestamp
|
||||
FROM
|
||||
base_transfers AS A
|
||||
WHERE
|
||||
A.tx_id IN (
|
||||
SELECT
|
||||
tx_id
|
||||
FROM
|
||||
dex_txs
|
||||
)
|
||||
),
|
||||
multisig_account_mapping AS(
|
||||
SELECT
|
||||
tx_id,
|
||||
instruction :parsed :info :account :: STRING AS associated_account,
|
||||
instruction :parsed :info :multisigOwner :: STRING AS owner
|
||||
FROM
|
||||
base_events
|
||||
WHERE
|
||||
program_id = 'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA'
|
||||
AND event_type = 'closeAccount'
|
||||
UNION
|
||||
SELECT
|
||||
tx_id,
|
||||
instruction :parsed :info :delegate :: STRING AS associated_account,
|
||||
instruction :parsed :info :multisigOwner :: STRING AS owner
|
||||
FROM
|
||||
base_events
|
||||
WHERE
|
||||
program_id = 'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA'
|
||||
AND event_type = 'approve'
|
||||
),
|
||||
account_mappings AS (
|
||||
SELECT
|
||||
*
|
||||
FROM
|
||||
multisig_account_mapping
|
||||
UNION
|
||||
SELECT
|
||||
tx_id,
|
||||
tx_to AS associated_account,
|
||||
tx_from AS owner
|
||||
FROM
|
||||
swaps_temp
|
||||
WHERE
|
||||
amount = 0.00203928
|
||||
AND mint = 'So11111111111111111111111111111111111111112'
|
||||
UNION
|
||||
SELECT
|
||||
tx_id,
|
||||
account AS associated_account,
|
||||
owner
|
||||
FROM
|
||||
base_post_token_balances
|
||||
UNION
|
||||
SELECT
|
||||
e.tx_id,
|
||||
e.instruction :parsed :info :account :: STRING AS associated_account,
|
||||
COALESCE(
|
||||
e.instruction :parsed :info :source :: STRING,
|
||||
e.instruction :parsed :info :owner :: STRING
|
||||
) AS owner
|
||||
FROM
|
||||
base_events e
|
||||
INNER JOIN (
|
||||
SELECT
|
||||
DISTINCT tx_id
|
||||
FROM
|
||||
dex_txs
|
||||
) d
|
||||
ON d.tx_id = e.tx_id
|
||||
WHERE
|
||||
(
|
||||
(
|
||||
e.program_id = 'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL'
|
||||
AND e.event_type = 'create'
|
||||
)
|
||||
OR (
|
||||
e.program_id = 'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA'
|
||||
AND e.event_type = 'closeAccount'
|
||||
)
|
||||
)
|
||||
UNION
|
||||
SELECT
|
||||
e.tx_id,
|
||||
e.instruction :parsed :info :delegate :: STRING AS associated_account,
|
||||
e.instruction :parsed :info :owner :: STRING AS owner
|
||||
FROM
|
||||
base_events e
|
||||
INNER JOIN (
|
||||
SELECT
|
||||
DISTINCT tx_id
|
||||
FROM
|
||||
dex_txs
|
||||
) d
|
||||
ON d.tx_id = e.tx_id
|
||||
WHERE
|
||||
(
|
||||
e.program_id = 'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA'
|
||||
AND e.event_type = 'approve'
|
||||
)
|
||||
),
|
||||
swaps_w_destination AS (
|
||||
SELECT
|
||||
s.block_id,
|
||||
s.block_timestamp,
|
||||
s.tx_id,
|
||||
s.index,
|
||||
s.inner_index,
|
||||
COALESCE(
|
||||
m1.owner,
|
||||
s.tx_from
|
||||
) AS tx_from,
|
||||
COALESCE(
|
||||
m2.owner,
|
||||
s.tx_to
|
||||
) AS tx_to,
|
||||
s.amount,
|
||||
s.mint,
|
||||
s.succeeded,
|
||||
s._inserted_timestamp,
|
||||
COALESCE(
|
||||
sm.swapper,
|
||||
e.swapper
|
||||
) AS tmp_swapper,
|
||||
e.signers,
|
||||
e.program_id
|
||||
FROM
|
||||
swaps_temp s
|
||||
LEFT OUTER JOIN dex_txs e
|
||||
ON s.tx_id = e.tx_id
|
||||
AND s.index = e.index
|
||||
LEFT OUTER JOIN account_mappings m1
|
||||
ON s.tx_id = m1.tx_id
|
||||
AND s.tx_from = m1.associated_account
|
||||
AND s.tx_to <> m1.owner
|
||||
LEFT OUTER JOIN account_mappings m2
|
||||
ON s.tx_id = m2.tx_id
|
||||
AND s.tx_to = m2.associated_account
|
||||
AND s.tx_from <> m2.owner
|
||||
left outer join swapper_map_temp sm
|
||||
on s.tx_id = sm.tx_id
|
||||
WHERE
|
||||
s.program_id <> '11111111111111111111111111111111'
|
||||
),
|
||||
multi_signer_swapper AS (
|
||||
SELECT
|
||||
tx_id,
|
||||
silver.udf_get_multi_signers_swapper(ARRAY_AGG(tx_from), ARRAY_AGG(tx_to), ARRAY_AGG(signers) [0]) AS swapper
|
||||
FROM
|
||||
swaps_w_destination
|
||||
WHERE
|
||||
succeeded
|
||||
AND ARRAY_SIZE(signers) > 1
|
||||
AND tmp_swapper IS NULL
|
||||
GROUP BY
|
||||
1
|
||||
),
|
||||
unique_tx_from_and_to AS(
|
||||
SELECT
|
||||
tx_id,
|
||||
INDEX,
|
||||
COUNT(DISTINCT(tx_from)) AS num_tx_from,
|
||||
COUNT(DISTINCT(tx_to)) AS num_tx_to
|
||||
FROM
|
||||
swaps_w_destination
|
||||
GROUP BY
|
||||
1,
|
||||
2
|
||||
HAVING
|
||||
num_tx_from > 1
|
||||
AND num_tx_to > 1),
|
||||
swaps_filtered_temp AS(
|
||||
SELECT
|
||||
s.*,
|
||||
COALESCE(
|
||||
s.tmp_swapper,
|
||||
m.swapper
|
||||
) AS swapper
|
||||
FROM
|
||||
swaps_w_destination s
|
||||
INNER JOIN unique_tx_from_and_to u
|
||||
ON s.tx_id = u.tx_id
|
||||
AND s.index = u.index
|
||||
LEFT OUTER JOIN multi_signer_swapper m
|
||||
ON s.tx_id = m.tx_id
|
||||
),
|
||||
min_inner_index_of_swapper AS(
|
||||
SELECT
|
||||
tx_id,
|
||||
INDEX,
|
||||
MIN(inner_index) AS min_inner_index_swapper
|
||||
FROM
|
||||
swaps_filtered_temp
|
||||
WHERE
|
||||
tx_from = swapper
|
||||
GROUP BY
|
||||
1,
|
||||
2
|
||||
),
|
||||
swaps AS(
|
||||
SELECT
|
||||
d.*,
|
||||
m.min_inner_index_swapper,
|
||||
ROW_NUMBER() over (
|
||||
PARTITION BY d.tx_id
|
||||
ORDER BY
|
||||
d.index,
|
||||
d.inner_index
|
||||
) AS rn,
|
||||
ROW_NUMBER() over (
|
||||
PARTITION BY d.tx_id,
|
||||
d.index
|
||||
ORDER BY
|
||||
d.inner_index
|
||||
) AS inner_rn
|
||||
FROM
|
||||
swaps_filtered_temp d
|
||||
LEFT JOIN min_inner_index_of_swapper m
|
||||
ON m.tx_id = d.tx_id
|
||||
AND m.index = d.index
|
||||
WHERE
|
||||
d.swapper IS NOT NULL
|
||||
),
|
||||
final_temp AS (
|
||||
SELECT
|
||||
s1.block_id,
|
||||
s1.block_timestamp,
|
||||
s1.tx_id,
|
||||
s1.succeeded,
|
||||
s1.program_id,
|
||||
s1.swapper,
|
||||
s1.mint,
|
||||
s1.amount,
|
||||
s1.rn,
|
||||
s1._inserted_timestamp,
|
||||
s2.mint AS to_mint,
|
||||
s2.amount AS to_amt
|
||||
FROM
|
||||
swaps s1
|
||||
LEFT OUTER JOIN swaps s2
|
||||
ON s1.tx_id = s2.tx_id
|
||||
AND s1.index = s2.index
|
||||
AND s1.inner_index <> s2.inner_index
|
||||
WHERE
|
||||
s1.inner_index = s1.min_inner_index_swapper
|
||||
AND s1.swapper = s2.tx_to
|
||||
AND s1.mint <> s2.mint
|
||||
UNION
|
||||
SELECT
|
||||
s1.block_id,
|
||||
s1.block_timestamp,
|
||||
s1.tx_id,
|
||||
s1.succeeded,
|
||||
s1.program_id,
|
||||
s1.swapper,
|
||||
s1.mint,
|
||||
s1.amount,
|
||||
s1.rn,
|
||||
s1._inserted_timestamp,
|
||||
NULL,
|
||||
NULL
|
||||
FROM
|
||||
swaps s1
|
||||
WHERE
|
||||
s1.inner_index <> s1.min_inner_index_swapper
|
||||
AND s1.tx_from = s1.swapper
|
||||
UNION
|
||||
SELECT
|
||||
s1.block_id,
|
||||
s1.block_timestamp,
|
||||
s1.tx_id,
|
||||
s1.succeeded,
|
||||
s1.program_id,
|
||||
s1.swapper,
|
||||
NULL AS mint,
|
||||
NULL AS amount,
|
||||
s1.rn,
|
||||
s1._inserted_timestamp,
|
||||
s1.mint AS to_mint,
|
||||
s1.amount AS to_amt
|
||||
FROM
|
||||
swaps s1
|
||||
LEFT OUTER JOIN swaps s2
|
||||
ON s1.tx_id = s2.tx_id
|
||||
AND s1.index = s2.index
|
||||
AND s2.inner_index = s2.min_inner_index_swapper
|
||||
WHERE(
|
||||
(
|
||||
s1.inner_index <> s1.min_inner_index_swapper
|
||||
AND s1.tx_to = s1.swapper
|
||||
AND s2.mint = s1.mint
|
||||
)
|
||||
OR s1.min_inner_index_swapper IS NULL
|
||||
)
|
||||
)
|
||||
SELECT
|
||||
block_id,
|
||||
block_timestamp,
|
||||
tx_id,
|
||||
succeeded,
|
||||
program_id,
|
||||
swapper,
|
||||
mint AS from_mint,
|
||||
amount AS from_amt,
|
||||
to_mint,
|
||||
to_amt,
|
||||
_inserted_timestamp,
|
||||
ROW_NUMBER() over (
|
||||
PARTITION BY tx_id
|
||||
ORDER BY
|
||||
rn
|
||||
) AS swap_index
|
||||
FROM
|
||||
final_temp
|
||||
WHERE
|
||||
(COALESCE(to_amt, 0) > 0
|
||||
OR COALESCE(from_amt, 0) > 0)
|
||||
AND program_id IS NOT NULL
|
||||
101
models/silver/swaps/silver__swaps_intermediate_orca.yml
Normal file
101
models/silver/swaps/silver__swaps_intermediate_orca.yml
Normal file
@ -0,0 +1,101 @@
|
||||
version: 2
|
||||
models:
|
||||
- name: silver__swaps_intermediate_orca
|
||||
tests:
|
||||
- dbt_utils.unique_combination_of_columns:
|
||||
combination_of_columns:
|
||||
- BLOCK_ID
|
||||
- TX_ID
|
||||
- SWAP_INDEX
|
||||
- compare_model_subset:
|
||||
name: silver__swaps_intermediate_orca_business_logic_test
|
||||
compare_model: ref('testing__swaps_intermediate_orca')
|
||||
compare_columns:
|
||||
- tx_id
|
||||
- succeeded
|
||||
- swapper
|
||||
- from_mint
|
||||
- from_amt
|
||||
- to_mint
|
||||
- to_amt
|
||||
- swap_index
|
||||
model_condition: "where tx_id in ('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')"
|
||||
- tx_excluded:
|
||||
name: silver__swaps_intermediate_orca_tx_excluded_test
|
||||
excluded_tx_ids:
|
||||
- 4VroTTqAjpsxYMTgnBzBSJG2P9uB2orenKxiEfvxbTBnAficioUuCijnAYotMmAH4pB6kgziKHvMgHNf7nU8g646
|
||||
- 5JHjPkrTy1bWJv6ph8n1Tpk5ABBBuD89NZdyANUpbjdY8Zr2HKUyhJEjSrffQVEfAwYA3d9kVqK84qwuqVSZELp8
|
||||
- 5e9ATFzcta5RfXB9tjCZfpE7qV1cBUh5H5ocNrwxSfC4D7KqRXTCRL3om4FTwNprwUmn9VMAUJAKm5qVYaJ8vsq6
|
||||
- 3wSxtF5Mqeh5ybZVH1U4nE577pZSrhCr3td8GbJeCfwZfanpP7wrDXMiCUdhd5njhkWW6FKGgEzptDKsY8CW33RA
|
||||
- 5hgT6wotqHT6c49iwJXexnvnCToteo5npbRStjFveMerx4RtR75azqXWKoaFyEWbXmLcEXR68EWwFgj5BzxjjXuy
|
||||
- 3PdQf87gUGqRKrTXWzqpuduUVhe2cCfSFbmDbbJWQg4MwmsQu43esBRz3HQPsGZ98a8ZjtcNsxNDsrxhV1LBWNJn
|
||||
- 4BhhKEKu1z7qXGPaoX1114oQ5Beqa2VWfgBvoW2dzcU6CmpAGPfztJZim2ZeF6MQsjdAAaiyr4ToChr3fa88mJpA
|
||||
- 2Mnf63t8QQr4K59nC2UHunvuVirmASru4R3dsnpT6GNs2ZbGBhjS7NHAFrnTHScVYsjo2EivsqPgBMfvrTxL6dtC
|
||||
- uxyRadaVq9gkEP7Z77iuDaHHbBpVeDh7pd6vn4ggzHhEpZEJAT7tT4L1TA6jVD5CAt6HhFipaygKKsZeHtEEmtM
|
||||
columns:
|
||||
- name: BLOCK_TIMESTAMP
|
||||
description: "{{ doc('block_timestamp') }}"
|
||||
tests:
|
||||
- not_null
|
||||
- dbt_expectations.expect_row_values_to_have_recent_data:
|
||||
datepart: day
|
||||
interval: 2
|
||||
- name: BLOCK_ID
|
||||
description: "{{ doc('block_id') }}"
|
||||
tests:
|
||||
- not_null
|
||||
- name: TX_ID
|
||||
description: "{{ doc('tx_id') }}"
|
||||
tests:
|
||||
- not_null
|
||||
- name: SUCCEEDED
|
||||
description: "{{ doc('tx_succeeded') }}"
|
||||
tests:
|
||||
- not_null
|
||||
- name: PROGRAM_ID
|
||||
description: "{{ doc('program_id') }}"
|
||||
- name: SWAPPER
|
||||
description: Address that initiated the swap
|
||||
- name: FROM_AMT
|
||||
description: Total amount of the token sent in to initiate the swap
|
||||
tests:
|
||||
- name: FROM_MINT
|
||||
description: Token being sent or swapped from
|
||||
tests:
|
||||
- name: TO_AMT
|
||||
description: Total amount of the token received in the swap
|
||||
tests:
|
||||
- name: TO_MINT
|
||||
description: Token being received or swapped for
|
||||
tests:
|
||||
- name: SWAP_INDEX
|
||||
description: Order in which the intermediate swap was executed
|
||||
tests:
|
||||
- not_null:
|
||||
where: succeeded = TRUE
|
||||
- name: _INSERTED_TIMESTAMP
|
||||
description: "{{ doc('_inserted_timestamp') }}"
|
||||
tests:
|
||||
- not_null
|
||||
Loading…
Reference in New Issue
Block a user