mirror of
https://github.com/FlipsideCrypto/ethereum-models.git
synced 2026-02-06 15:36:50 +00:00
AN-3561/dim-dex-lp (#620)
* complete lp * complete dex lp updates * uni sushi pools filter * dodo v1 pools * curve seed * curve complet * balancer complete * updated complete dex swaps to match pool names * gold layer and descriptions * yml name * incremental logic * group by * overview docs
This commit is contained in:
parent
4f219eaa84
commit
eafbc05e18
File diff suppressed because it is too large
Load Diff
@ -1,17 +1,3 @@
|
||||
pool_address,base_token_symbol,quote_token_symbol,base_token,quote_token
|
||||
0x75c23271661d9d143dcb617222bc4bec783eff34, WETH, USDC, 0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2, 0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48
|
||||
0x562c0b218cc9ba06d9eb42f3aef54c54cc5a4650, LINK, USDC, 0x514910771af9ca656af840dff83e8264ecf986ca, 0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48
|
||||
0x0d04146b2fe5d267629a7eb341fb4388dcdbd22f, COMP, USDC, 0xc00e94cb662c3520282e6f5717214004a7f26888, 0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48
|
||||
0xca7b0632bd0e646b0f823927d3d2e61b00fe4d80, SNX, USDC, 0xc011a73ee8576fb46f5e1c5751ca3b9fe0af2a6f, 0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48
|
||||
0xc226118fcd120634400ce228d61e1538fb21755f, LEND, USDC, 0x80fb784b7ed66730e8b1dbd9820afd29931aab03, 0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48
|
||||
0x2109f78b46a789125598f5ad2b7f243751c2934d, WBTC, USDC, 0x2260fac5e5542a773aa44fbcfedf7c193bc2c599, 0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48
|
||||
0x1b7902a66f133d899130bf44d7d879da89913b2e, YFI, USDC, 0x0bc529c00c6401aef6d220be8c6ea1667f6ad93e, 0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48
|
||||
0x1a7fe5d6f0bb2d071e16bdd52c863233bbfd38e9,WETH,USDT,0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2,0xdac17f958d2ee523a2206206994597c13d831ec7
|
||||
0xc9f93163c99695c6526b799ebca2207fdf7d61ad,USDT,USDC,0xdac17f958d2ee523a2206206994597c13d831ec7,0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48
|
||||
0xd4a36b0acfe2931cf922ea3d91063ddfe4aff01f,sUSD,USDT,0x57ab1ec28d129707052df4df418d58a2d46d5f51,0xdac17f958d2ee523a2206206994597c13d831ec7
|
||||
0x8876819535b48b551c9e97ebc07332c7482b4b2d,DODO,USDT,0x43dfc4159d86f3a37a5a4b3d4580b888ad7d4ddd,0xdac17f958d2ee523a2206206994597c13d831ec7
|
||||
0x9d9793e1e18cdee6cf63818315d55244f73ec006,FIN,USDT,0x054f76beed60ab6dbeb23502178c52d6c5debe40,0xdac17f958d2ee523a2206206994597c13d831ec7
|
||||
0x94512fd4fb4feb63a6c0f4bedecc4a00ee260528,AAVE,USDC,0x7fc66500c84a76ad7e9c93437bfc5ac33e2ddae9,0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48
|
||||
0x85f9569b69083c3e6aeffd301bb2c65606b5d575,wCRESt,USDT,0xa0afaa285ce85974c3c881256cb7f225e3a1178a,0xdac17f958d2ee523a2206206994597c13d831ec7
|
||||
0x181D93EA28023bf40C8bB94796c55138719803B4,WOO,USDT,0x4691937a7508860F876c9c0a2a617E7d9E945D4B,0xdAC17F958D2ee523a2206206994597C13D831ec7
|
||||
0xd48c86156D53c0F775f40883391a113fC0D690d0,ibEUR,USDT,0x96E61422b6A9bA0e068B6c5ADd4fFaBC6a4aae27,0xdAC17F958D2ee523a2206206994597C13D831ec7
|
||||
0x181d93ea28023bf40c8bb94796c55138719803b4,WOO,USDT,0x4691937a7508860f876c9c0a2a617e7d9e945d4b,0xdac17f958d2ee523a2206206994597c13d831ec7
|
||||
0x8876819535b48b551c9e97ebc07332c7482b4b2d,DODO,USDT,0x43dfc4159d86f3a37a5a4b3d4580b888ad7d4ddd,0xdac17f958d2ee523a2206206994597c13d831ec7
|
||||
|
15
data/silver_dex__curve_pools_traces_backfill.csv
Normal file
15
data/silver_dex__curve_pools_traces_backfill.csv
Normal file
@ -0,0 +1,15 @@
|
||||
POOL_ADDRESS,TOKEN_ADDRESS,TOKEN_INDEX,TOKEN_TYPE,TOKEN_SYMBOL,TOKEN_DECIMALS,TOKEN_NAME,POOL_NAME,POOL_ID,_INSERTED_TIMESTAMP,DEPLOYER_ADDRESS,TX_HASH,BLOCK_NUMBER,BLOCK_TIMESTAMP,_CALL_ID
|
||||
0x52ea46506b9cc5ef470c5bf89f17dc28bb35d85c,0xdac17f958d2ee523a2206206994597c13d831ec7,2,coins,USDT,6,Tether USD,Curve.fi Pool: cDAI-cUSDC-USDT,0x52ea46506b9cc5ef470c5bf89f17dc28bb35d85c0xdac17f958d2ee523a2206206994597c13d831ec7,2020-01-01T00:00:00Z,0xc447fcaf1def19a583f97b3620627bf69c05b5fb,0x230a00553d373fe696304795818d35e8d9fded6e9a3c5907bb46709c0e3b3e64,9456293,2020-02-10T04:45:58Z,9456293-13-CREATE_ORIGIN
|
||||
0x52ea46506b9cc5ef470c5bf89f17dc28bb35d85c,0x5d3a536e4d6dbd6114cc1ead35777bab948e3643,0,coins,cDAI,8,Compound Dai,Curve.fi Pool: cDAI-cUSDC-USDT,0x52ea46506b9cc5ef470c5bf89f17dc28bb35d85c0x5d3a536e4d6dbd6114cc1ead35777bab948e3643,2020-01-01T00:00:00Z,0xc447fcaf1def19a583f97b3620627bf69c05b5fb,0x230a00553d373fe696304795818d35e8d9fded6e9a3c5907bb46709c0e3b3e64,9456293,2020-02-10T04:45:58Z,9456293-13-CREATE_ORIGIN
|
||||
0x52ea46506b9cc5ef470c5bf89f17dc28bb35d85c,0x39aa39c021dfbae8fac545936693ac917d5e7563,1,coins,cUSDC,8,Compound USD Coin,Curve.fi Pool: cDAI-cUSDC-USDT,0x52ea46506b9cc5ef470c5bf89f17dc28bb35d85c0x39aa39c021dfbae8fac545936693ac917d5e7563,2020-01-01T00:00:00Z,0xc447fcaf1def19a583f97b3620627bf69c05b5fb,0x230a00553d373fe696304795818d35e8d9fded6e9a3c5907bb46709c0e3b3e64,9456293,2020-02-10T04:45:58Z,9456293-13-CREATE_ORIGIN
|
||||
0x7fc77b5c7614e1533320ea6ddc2eb61fa00a9714,0xfe18be6b3bd88a2d2a7f928d00292e7a9963cfc6,2,coins,sBTC,18,Synth sBTC,Curve.fi Pool: renBTC-WBTC-sBTC,0x7fc77b5c7614e1533320ea6ddc2eb61fa00a97140xfe18be6b3bd88a2d2a7f928d00292e7a9963cfc6,2020-01-01T00:00:00Z,0xc447fcaf1def19a583f97b3620627bf69c05b5fb,0x6d1ef1e56febb5fdacedd5470aeb7ecbfe767963934821b62de9ad28da81179a,10276641,2020-06-16T011:57:02Z,10276641-42-CREATE_ORIGIN
|
||||
0x7fc77b5c7614e1533320ea6ddc2eb61fa00a9714,0xeb4c2781e4eba804ce9a9803c67d0893436bb27d,0,coins,renBTC,8,renBTC,Curve.fi Pool: renBTC-WBTC-sBTC,0x7fc77b5c7614e1533320ea6ddc2eb61fa00a97140xeb4c2781e4eba804ce9a9803c67d0893436bb27d,2020-01-01T00:00:00Z,0xc447fcaf1def19a583f97b3620627bf69c05b5fb,0x6d1ef1e56febb5fdacedd5470aeb7ecbfe767963934821b62de9ad28da81179a,10276641,2020-06-16T011:57:02Z,10276641-42-CREATE_ORIGIN
|
||||
0x7fc77b5c7614e1533320ea6ddc2eb61fa00a9714,0x2260fac5e5542a773aa44fbcfedf7c193bc2c599,1,coins,WBTC,8,Wrapped BTC,Curve.fi Pool: renBTC-WBTC-sBTC,0x7fc77b5c7614e1533320ea6ddc2eb61fa00a97140x2260fac5e5542a773aa44fbcfedf7c193bc2c599,2020-01-01T00:00:00Z,0xc447fcaf1def19a583f97b3620627bf69c05b5fb,0x6d1ef1e56febb5fdacedd5470aeb7ecbfe767963934821b62de9ad28da81179a,10276641,2020-06-16T011:57:02Z,10276641-42-CREATE_ORIGIN
|
||||
0x93054188d876f558f4a66b2ef1d97d16edf0895b,0xeb4c2781e4eba804ce9a9803c67d0893436bb27d,0,coins,renBTC,8,renBTC,Curve.fi Pool: renBTC-WBTC,0x93054188d876f558f4a66b2ef1d97d16edf0895b0xeb4c2781e4eba804ce9a9803c67d0893436bb27d,2020-01-01T00:00:00Z,0xc447fcaf1def19a583f97b3620627bf69c05b5fb,0x12422cd099f0b6a09fb6fb53e66ee1ec6a1bd8377718b5025c5998176cd27935,10151385,2020-05-28T01:50:43Z,10151385-5-CREATE_ORIGIN
|
||||
0x93054188d876f558f4a66b2ef1d97d16edf0895b,0x2260fac5e5542a773aa44fbcfedf7c193bc2c599,1,coins,WBTC,8,Wrapped BTC,Curve.fi Pool: renBTC-WBTC,0x93054188d876f558f4a66b2ef1d97d16edf0895b0x2260fac5e5542a773aa44fbcfedf7c193bc2c599,2020-01-01T00:00:00Z,0xc447fcaf1def19a583f97b3620627bf69c05b5fb,0x12422cd099f0b6a09fb6fb53e66ee1ec6a1bd8377718b5025c5998176cd27935,10151385,2020-05-28T01:50:43Z,10151385-5-CREATE_ORIGIN
|
||||
0xa2b47e3d5c44877cca798226b7b8118f9bfb7a56,0x5d3a536e4d6dbd6114cc1ead35777bab948e3643,0,coins,cDAI,8,Compound Dai,Curve.fi Pool: cDAI-cUSDC,0xa2b47e3d5c44877cca798226b7b8118f9bfb7a560x5d3a536e4d6dbd6114cc1ead35777bab948e3643,2020-01-01T00:00:00Z,0xc447fcaf1def19a583f97b3620627bf69c05b5fb,0x39f6f83e7b1b7dab4afa05020c0b3b4b1cbc64bfd583af46122d26ef87f2d3f9,9554040,2020-02-25T05:48:31Z,9554040-22-CREATE_ORIGIN
|
||||
0xa2b47e3d5c44877cca798226b7b8118f9bfb7a56,0x39aa39c021dfbae8fac545936693ac917d5e7563,1,coins,cUSDC,8,Compound USD Coin,Curve.fi Pool: cDAI-cUSDC,0xa2b47e3d5c44877cca798226b7b8118f9bfb7a560x39aa39c021dfbae8fac545936693ac917d5e7563,2020-01-01T00:00:00Z,0xc447fcaf1def19a583f97b3620627bf69c05b5fb,0x39f6f83e7b1b7dab4afa05020c0b3b4b1cbc64bfd583af46122d26ef87f2d3f9,9554040,2020-02-25T05:48:31Z,9554040-22-CREATE_ORIGIN
|
||||
0xa5407eae9ba41422680e2e00537571bcc53efbfd,0xdac17f958d2ee523a2206206994597c13d831ec7,2,coins,USDT,6,Tether USD,Curve.fi Pool: DAI-USDC-USDT-sUSD,0xa5407eae9ba41422680e2e00537571bcc53efbfd0xdac17f958d2ee523a2206206994597c13d831ec7,2020-01-01T00:00:00Z,0xc447fcaf1def19a583f97b3620627bf69c05b5fb,0x51aca4a03a395de8855fa2ca59b7febe520c2a223e69c502066162f7c1a95ec2,9906598,2020-04-20T02:14:04Z,9906598-78-CREATE_ORIGIN
|
||||
0xa5407eae9ba41422680e2e00537571bcc53efbfd,0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48,1,coins,USDC,6,USD Coin,Curve.fi Pool: DAI-USDC-USDT-sUSD,0xa5407eae9ba41422680e2e00537571bcc53efbfd0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48,2020-01-01T00:00:00Z,0xc447fcaf1def19a583f97b3620627bf69c05b5fb,0x51aca4a03a395de8855fa2ca59b7febe520c2a223e69c502066162f7c1a95ec2,9906598,2020-04-20T02:14:04Z,9906598-78-CREATE_ORIGIN
|
||||
0xa5407eae9ba41422680e2e00537571bcc53efbfd,0x6b175474e89094c44da98b954eedeac495271d0f,0,coins,DAI,18,Dai Stablecoin,Curve.fi Pool: DAI-USDC-USDT-sUSD,0xa5407eae9ba41422680e2e00537571bcc53efbfd0x6b175474e89094c44da98b954eedeac495271d0f,2020-01-01T00:00:00Z,0xc447fcaf1def19a583f97b3620627bf69c05b5fb,0x51aca4a03a395de8855fa2ca59b7febe520c2a223e69c502066162f7c1a95ec2,9906598,2020-04-20T02:14:04Z,9906598-78-CREATE_ORIGIN
|
||||
0xa5407eae9ba41422680e2e00537571bcc53efbfd,0x57ab1ec28d129707052df4df418d58a2d46d5f51,3,coins,sUSD,18,Synth sUSD,Curve.fi Pool: DAI-USDC-USDT-sUSD,0xa5407eae9ba41422680e2e00537571bcc53efbfd0x57ab1ec28d129707052df4df418d58a2d46d5f51,2020-01-01T00:00:00Z,0xc447fcaf1def19a583f97b3620627bf69c05b5fb,0x51aca4a03a395de8855fa2ca59b7febe520c2a223e69c502066162f7c1a95ec2,9906598,2020-04-20T02:14:04Z,9906598-78-CREATE_ORIGIN
|
||||
|
6
models/doc_descriptions/dex/dex_lp_deprecation.md
Normal file
6
models/doc_descriptions/dex/dex_lp_deprecation.md
Normal file
@ -0,0 +1,6 @@
|
||||
{% docs dex_lp_deprecation %}
|
||||
|
||||
Deprecating soon: This table will be upgraded to include liquidity pools for all applicable dexes. Please migrate queries to `defi.dim_dex_liquidity_pools`. This table will be deprecated on 08/17/2023.
|
||||
|
||||
{% enddocs %}
|
||||
|
||||
5
models/doc_descriptions/dex/eth_dex_creation_block.md
Normal file
5
models/doc_descriptions/dex/eth_dex_creation_block.md
Normal file
@ -0,0 +1,5 @@
|
||||
{% docs eth_dex_creation_block %}
|
||||
|
||||
The block number of when this pool was created.
|
||||
|
||||
{% enddocs %}
|
||||
@ -1,5 +1,5 @@
|
||||
{% docs eth_dex_creation_time %}
|
||||
|
||||
When this pool was created, where possible.
|
||||
The block timestamp of when this pool was created.
|
||||
|
||||
{% enddocs %}
|
||||
@ -1,5 +1,5 @@
|
||||
{% docs eth_dex_creation_tx %}
|
||||
|
||||
The transaction where this contract was created, where possible.
|
||||
The transaction where this contract was created.
|
||||
|
||||
{% enddocs %}
|
||||
@ -1,5 +1,5 @@
|
||||
{% docs eth_dex_factory_address %}
|
||||
|
||||
The address that created or deployed this pool, where possible.
|
||||
The address that created or deployed this pool, where available.
|
||||
|
||||
{% enddocs %}
|
||||
15
models/doc_descriptions/dex/eth_dex_lp_decimals.md
Normal file
15
models/doc_descriptions/dex/eth_dex_lp_decimals.md
Normal file
@ -0,0 +1,15 @@
|
||||
{% docs eth_dex_lp_decimals %}
|
||||
|
||||
The # of decimals for the token included in the liquidity pool, as a JSON object, where available.
|
||||
|
||||
Query example to access the key:value pairing within the object:
|
||||
SELECT
|
||||
DISTINCT pool_address AS unique_pools,
|
||||
tokens :token0 :: STRING AS token0,
|
||||
symbols: token0 :: STRING AS token0_symbol,
|
||||
decimals: token0 :: STRING AS token0_decimal
|
||||
FROM ethereum.defi.dim_dex_liquidity_pools
|
||||
WHERE token0_decimal = 6
|
||||
;
|
||||
|
||||
{% enddocs %}
|
||||
15
models/doc_descriptions/dex/eth_dex_lp_symbols.md
Normal file
15
models/doc_descriptions/dex/eth_dex_lp_symbols.md
Normal file
@ -0,0 +1,15 @@
|
||||
{% docs eth_dex_lp_symbols %}
|
||||
|
||||
The symbol for the token included in the liquidity pool, as a JSON object, where available.
|
||||
|
||||
Query example to access the key:value pairing within the object:
|
||||
SELECT
|
||||
DISTINCT pool_address AS unique_pools,
|
||||
tokens :token0 :: STRING AS token0,
|
||||
symbols: token0 :: STRING AS token0_symbol,
|
||||
decimals: token0 :: STRING AS token0_decimal
|
||||
FROM ethereum.defi.dim_dex_liquidity_pools
|
||||
WHERE token0_symbol = 'WETH'
|
||||
;
|
||||
|
||||
{% enddocs %}
|
||||
@ -1,5 +1,5 @@
|
||||
{% docs eth_dex_lp_table_doc %}
|
||||
|
||||
This table contains details on different Liquidity Pools on the Ethereum blockchain, including the tokens within each pool as well as platform and contract creation info where possible.
|
||||
This table contains details on decentralized exchange (DEX) liquidity pools (LP) on the Ethereum blockchain, including the tokens, symbols and decimals within each pool alongside the following protocols: BALANCER, CURVE, DODO, FRAXSWAP, KYBERSWAP, MAVERICK, PANCAKESWAP, SHIBASWAP, SUSHISWAP, UNISWAP .
|
||||
|
||||
{% enddocs %}
|
||||
15
models/doc_descriptions/dex/eth_dex_lp_tokens.md
Normal file
15
models/doc_descriptions/dex/eth_dex_lp_tokens.md
Normal file
@ -0,0 +1,15 @@
|
||||
{% docs eth_dex_lp_tokens %}
|
||||
|
||||
The address for the token included in the liquidity pool, as a JSON object.
|
||||
|
||||
Query example to access the key:value pairing within the object:
|
||||
SELECT
|
||||
DISTINCT pool_address AS unique_pools,
|
||||
tokens :token0 :: STRING AS token0,
|
||||
symbols: token0 :: STRING AS token0_symbol,
|
||||
decimals: token0 :: STRING AS token0_decimal
|
||||
FROM ethereum.defi.dim_dex_liquidity_pools
|
||||
WHERE token0 = '0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2'
|
||||
;
|
||||
|
||||
{% enddocs %}
|
||||
@ -1,5 +1,5 @@
|
||||
{% docs eth_dex_platform %}
|
||||
|
||||
This field denotes which application the liquidity pool belongs to.
|
||||
The protocol or platform that the liquidity pool belongs to or swap occurred on.
|
||||
|
||||
{% enddocs %}
|
||||
@ -1,5 +1,5 @@
|
||||
{% docs eth_dex_pool_name %}
|
||||
|
||||
The name of the liquidity pool, where possible.
|
||||
The name of the liquidity pool, where available. In some cases, the pool name is a concatenation of symbols or token addresses.
|
||||
|
||||
{% enddocs %}
|
||||
@ -1,5 +0,0 @@
|
||||
{% docs eth_dex_tokens %}
|
||||
|
||||
This field contains the tokens within the liquidity pool as a JSON objects.
|
||||
|
||||
{% enddocs %}
|
||||
@ -52,6 +52,7 @@ There is more information on how to use dbt docs in the last section of this doc
|
||||
- [ez_token_transfers](https://flipsidecrypto.github.io/ethereum-models/#!/model/model.ethereum_models.core__ez_token_transfers)
|
||||
|
||||
### DeFi Tables (ethereum.defi)
|
||||
- [dim_dex_liquidity_pools](https://flipsidecrypto.github.io/ethereum-models/#!/model/model.ethereum_models.defi__dim_dex_liquidity_pools)
|
||||
- [ez_liquid_staking_deposits](https://flipsidecrypto.github.io/ethereum-models/#!/model/model.ethereum_models.defi__ez_liquid_staking_deposits)
|
||||
- [ez_liquid_staking_withdrawals](https://flipsidecrypto.github.io/ethereum-models/#!/model/model.ethereum_models.defi__ez_liquid_staking_withdrawals)
|
||||
|
||||
|
||||
27
models/gold/defi/defi__dim_dex_liquidity_pools.sql
Normal file
27
models/gold/defi/defi__dim_dex_liquidity_pools.sql
Normal file
@ -0,0 +1,27 @@
|
||||
{{ config(
|
||||
materialized = 'view',
|
||||
persist_docs ={ "relation": true,
|
||||
"columns": true },
|
||||
meta={
|
||||
'database_tags':{
|
||||
'table': {
|
||||
'PROTOCOL': 'BALANCER, CURVE, DODO, FRAXSWAP, KYBERSWAP, MAVERICK, PANCAKESWAP, SHIBASWAP, SUSHISWAP, UNISWAP',
|
||||
'PURPOSE': 'DEX, LIQUIDITY, POOLS, LP, SWAPS',
|
||||
}
|
||||
}
|
||||
}
|
||||
) }}
|
||||
|
||||
SELECT
|
||||
block_number AS creation_block,
|
||||
block_timestamp AS creation_time,
|
||||
tx_hash AS creation_tx,
|
||||
platform,
|
||||
contract_address AS factory_address,
|
||||
pool_address,
|
||||
pool_name,
|
||||
tokens,
|
||||
symbols,
|
||||
decimals
|
||||
FROM
|
||||
{{ ref('silver_dex__complete_dex_liquidity_pools') }}
|
||||
27
models/gold/defi/defi__dim_dex_liquidity_pools.yml
Normal file
27
models/gold/defi/defi__dim_dex_liquidity_pools.yml
Normal file
@ -0,0 +1,27 @@
|
||||
version: 2
|
||||
models:
|
||||
- name: defi__dim_dex_liquidity_pools
|
||||
description: '{{ doc("eth_dex_lp_table_doc") }}'
|
||||
|
||||
columns:
|
||||
- name: CREATION_BLOCK
|
||||
description: '{{ doc("eth_dex_creation_block") }}'
|
||||
- name: CREATION_TIME
|
||||
description: '{{ doc("eth_dex_creation_time") }}'
|
||||
- name: CREATION_TX
|
||||
description: '{{ doc("eth_dex_creation_tx") }}'
|
||||
- name: FACTORY_ADDRESS
|
||||
description: '{{ doc("eth_dex_factory_address") }}'
|
||||
- name: PLATFORM
|
||||
description: '{{ doc("eth_dex_platform") }}'
|
||||
- name: POOL_ADDRESS
|
||||
description: '{{ doc("eth_dex_pool_address") }}'
|
||||
- name: POOL_NAME
|
||||
description: '{{ doc("eth_dex_pool_name") }}'
|
||||
- name: TOKENS
|
||||
description: '{{ doc("eth_dex_lp_tokens") }}'
|
||||
- name: SYMBOLS
|
||||
description: '{{ doc("eth_dex_lp_symbols") }}'
|
||||
- name: DECIMALS
|
||||
description: '{{ doc("eth_dex_lp_decimals") }}'
|
||||
|
||||
@ -1,30 +1,5 @@
|
||||
version: 2
|
||||
models:
|
||||
- name: core__dim_dex_liquidity_pools
|
||||
description: '{{ doc("eth_dex_lp_table_doc") }}'
|
||||
description: '{{ doc("dex_lp_deprecation") }}'
|
||||
|
||||
|
||||
columns:
|
||||
- name: CREATION_TIME
|
||||
description: '{{ doc("eth_dex_creation_time") }}'
|
||||
- name: CREATION_TX
|
||||
description: '{{ doc("eth_dex_creation_tx") }}'
|
||||
- name: FACTORY_ADDRESS
|
||||
description: '{{ doc("eth_dex_factory_address") }}'
|
||||
- name: POOL_NAME
|
||||
description: '{{ doc("eth_dex_pool_name") }}'
|
||||
- name: POOL_ADDRESS
|
||||
description: '{{ doc("eth_dex_pool_address") }}'
|
||||
- name: TOKEN0
|
||||
description: '{{ doc("eth_dex_token0") }}'
|
||||
- name: TOKEN1
|
||||
description: '{{ doc("eth_dex_token1") }}'
|
||||
- name: PLATFORM
|
||||
description: '{{ doc("eth_dex_platform") }}'
|
||||
- name: TOKENS
|
||||
description: '{{ doc("eth_dex_platform") }}'
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@ -1,34 +1,72 @@
|
||||
{{ config(
|
||||
materialized = 'incremental',
|
||||
unique_key = "pool_address",
|
||||
full_refresh = false
|
||||
unique_key = "pool_address"
|
||||
) }}
|
||||
|
||||
WITH pool_creation AS (
|
||||
-- full_refresh = false
|
||||
|
||||
WITH pools_registered AS (
|
||||
|
||||
SELECT
|
||||
tx_hash,
|
||||
topics [1] :: STRING AS pool_id,
|
||||
SUBSTR(topics [1] :: STRING,1,42) AS contract_address,
|
||||
block_number,
|
||||
block_timestamp,
|
||||
event_index,
|
||||
tx_hash,
|
||||
contract_address,
|
||||
topics [1] :: STRING AS pool_id,
|
||||
SUBSTR(topics [1] :: STRING,1,42) AS pool_address,
|
||||
_log_id,
|
||||
_inserted_timestamp,
|
||||
ROW_NUMBER() OVER (ORDER BY contract_address) AS row_num
|
||||
ROW_NUMBER() OVER (ORDER BY pool_address) AS row_num
|
||||
FROM
|
||||
{{ ref('silver__logs') }}
|
||||
WHERE
|
||||
topics[0]::STRING = '0x3c13bc30b8e878c53fd2a36b679409c073afd75950be43d8858768e956fbc20e'
|
||||
topics[0]::STRING = '0x3c13bc30b8e878c53fd2a36b679409c073afd75950be43d8858768e956fbc20e' --PoolRegistered
|
||||
AND contract_address = '0xba12222222228d8ba445958a75a0704d566bf2c8'
|
||||
{% if is_incremental() %}
|
||||
AND contract_address NOT IN (
|
||||
SELECT
|
||||
DISTINCT pool_address
|
||||
FROM
|
||||
{{ this }}
|
||||
)
|
||||
AND _inserted_timestamp >= (
|
||||
SELECT
|
||||
MAX(_inserted_timestamp) :: DATE - 2
|
||||
FROM
|
||||
{{ this }}
|
||||
)
|
||||
{% endif %}
|
||||
|
||||
),
|
||||
|
||||
tokens_registered AS (
|
||||
|
||||
SELECT
|
||||
block_number,
|
||||
block_timestamp,
|
||||
event_index,
|
||||
tx_hash,
|
||||
contract_address,
|
||||
decoded_flat :poolId :: STRING AS pool_id,
|
||||
decoded_flat :tokens AS tokens,
|
||||
tokens[0] :: STRING AS token0,
|
||||
tokens[1] :: STRING AS token1,
|
||||
tokens[2] :: STRING AS token2,
|
||||
tokens[3] :: STRING AS token3,
|
||||
tokens[4] :: STRING AS token4,
|
||||
tokens[5] :: STRING AS token5,
|
||||
tokens[6] :: STRING AS token6,
|
||||
tokens[7] :: STRING AS token7,
|
||||
decoded_flat :assetManagers AS asset_managers,
|
||||
_log_id,
|
||||
_inserted_timestamp
|
||||
FROM ethereum.silver.decoded_logs
|
||||
WHERE
|
||||
topics[0]::STRING = '0xf5847d3f2197b16cdcd2098ec95d0905cd1abdaf415f07bb7cef2bba8ac5dec4' --TokensRegistered
|
||||
AND contract_address = '0xba12222222228d8ba445958a75a0704d566bf2c8'
|
||||
AND tx_hash IN (
|
||||
SELECT
|
||||
tx_hash
|
||||
FROM
|
||||
pools_registered
|
||||
)
|
||||
),
|
||||
|
||||
function_sigs AS (
|
||||
|
||||
SELECT
|
||||
@ -47,12 +85,12 @@ SELECT
|
||||
inputs_pools AS (
|
||||
|
||||
SELECT
|
||||
contract_address,
|
||||
pool_address,
|
||||
block_number,
|
||||
function_sig,
|
||||
(ROW_NUMBER() OVER (PARTITION BY contract_address
|
||||
(ROW_NUMBER() OVER (PARTITION BY pool_address
|
||||
ORDER BY block_number)) - 1 AS function_input
|
||||
FROM pool_creation
|
||||
FROM pools_registered
|
||||
JOIN function_sigs ON 1=1
|
||||
),
|
||||
|
||||
@ -72,13 +110,13 @@ FROM (
|
||||
CONCAT('[', LISTAGG(read_input, ','), ']') AS batch_read
|
||||
FROM (
|
||||
SELECT
|
||||
contract_address,
|
||||
pool_address,
|
||||
block_number,
|
||||
function_sig,
|
||||
function_input,
|
||||
CONCAT(
|
||||
'[\'',
|
||||
contract_address,
|
||||
pool_address,
|
||||
'\',',
|
||||
block_number,
|
||||
',\'',
|
||||
@ -89,7 +127,7 @@ FROM (
|
||||
) AS read_input,
|
||||
row_num
|
||||
FROM inputs_pools
|
||||
LEFT JOIN pool_creation USING(contract_address)
|
||||
LEFT JOIN pools_registered USING(pool_address)
|
||||
) ready_reads_pools
|
||||
WHERE row_num BETWEEN {{ item * 50 + 1 }} AND {{ (item + 1) * 50}}
|
||||
) batch_reads_pools
|
||||
@ -113,7 +151,7 @@ SELECT
|
||||
read_id,
|
||||
'-'
|
||||
) AS read_id_object,
|
||||
read_id_object [0] :: STRING AS contract_address,
|
||||
read_id_object [0] :: STRING AS pool_address,
|
||||
read_id_object [1] :: STRING AS block_number,
|
||||
read_id_object [2] :: STRING AS function_sig,
|
||||
read_id_object [3] :: STRING AS function_input,
|
||||
@ -128,7 +166,7 @@ FROM
|
||||
pool_details AS (
|
||||
|
||||
SELECT
|
||||
contract_address AS pool_address,
|
||||
pool_address,
|
||||
function_sig,
|
||||
function_name,
|
||||
read_result,
|
||||
@ -142,7 +180,9 @@ FINAL AS (
|
||||
SELECT
|
||||
pool_address,
|
||||
MIN(CASE WHEN function_name = 'symbol' THEN TRY_HEX_DECODE_STRING(segmented_output [2] :: STRING) END) AS pool_symbol,
|
||||
MIN(CASE WHEN function_name = 'symbol' THEN utils.udf_hex_to_string(segmented_output [2] :: STRING) END) AS pool_symbol2,
|
||||
MIN(CASE WHEN function_name = 'name' THEN TRY_HEX_DECODE_STRING(segmented_output [2] :: STRING) END) AS pool_name,
|
||||
MIN(CASE WHEN function_name = 'name' THEN utils.udf_hex_to_string(segmented_output [2] :: STRING) END) AS pool_name2,
|
||||
MIN(CASE
|
||||
WHEN read_result::STRING = '0x' THEN NULL
|
||||
ELSE utils.udf_hex_to_int(LEFT(read_result::STRING,66))
|
||||
@ -153,11 +193,30 @@ GROUP BY 1
|
||||
)
|
||||
|
||||
SELECT
|
||||
pool_address,
|
||||
pool_symbol,
|
||||
pool_name,
|
||||
pool_decimals,
|
||||
_inserted_timestamp
|
||||
FROM FINAL
|
||||
WHERE pool_name IS NOT NULL
|
||||
AND pool_symbol IS NOT NULL
|
||||
p.block_number,
|
||||
p.block_timestamp,
|
||||
p.event_index,
|
||||
p.tx_hash,
|
||||
p.contract_address,
|
||||
p.pool_id,
|
||||
f.pool_address,
|
||||
f.pool_symbol,
|
||||
f.pool_symbol2,
|
||||
f.pool_name,
|
||||
f.pool_name2,
|
||||
f.pool_decimals,
|
||||
t.token0,
|
||||
t.token1,
|
||||
t.token2,
|
||||
t.token3,
|
||||
t.token4,
|
||||
t.token5,
|
||||
t.token6,
|
||||
t.token7,
|
||||
t.asset_managers,
|
||||
p._log_id,
|
||||
f._inserted_timestamp
|
||||
FROM FINAL f
|
||||
LEFT JOIN pools_registered p ON f.pool_address = p.pool_address
|
||||
LEFT JOIN tokens_registered t ON p.pool_id = t.pool_id
|
||||
WHERE t.token0 IS NOT NULL
|
||||
@ -1,8 +1,8 @@
|
||||
{{ config(
|
||||
materialized = 'incremental',
|
||||
unique_key = "pool_id",
|
||||
full_refresh = false
|
||||
unique_key = "pool_id"
|
||||
) }}
|
||||
-- full_refresh = false
|
||||
|
||||
WITH contract_deployments AS (
|
||||
|
||||
@ -12,6 +12,7 @@ SELECT
|
||||
block_timestamp,
|
||||
from_address AS deployer_address,
|
||||
to_address AS contract_address,
|
||||
_call_id,
|
||||
_inserted_timestamp,
|
||||
ROW_NUMBER() OVER (ORDER BY contract_address) AS row_num
|
||||
FROM
|
||||
@ -180,7 +181,7 @@ FROM inputs_pool_details
|
||||
|
||||
pool_token_reads AS (
|
||||
|
||||
{% for item in range(10) %}
|
||||
{% for item in range(20) %}
|
||||
(
|
||||
SELECT
|
||||
ethereum.streamline.udf_json_rpc_read_calls(
|
||||
@ -214,7 +215,7 @@ FROM (
|
||||
FROM all_inputs
|
||||
LEFT JOIN contract_deployments USING(contract_address)
|
||||
) ready_reads_pools
|
||||
WHERE row_num BETWEEN {{ item * 500 + 1 }} AND {{ (item + 1) * 500}}
|
||||
WHERE row_num BETWEEN {{ item * 250 + 1 }} AND {{ (item + 1) * 250}}
|
||||
) batch_reads_pools
|
||||
JOIN {{ source(
|
||||
'streamline_crosschain',
|
||||
@ -288,9 +289,9 @@ SELECT
|
||||
CONCAT('0x',SUBSTRING(t.segmented_token_address,25,40)) AS token_address,
|
||||
function_input AS token_id,
|
||||
function_name AS token_type,
|
||||
MIN(CASE WHEN p.function_name = 'symbol' THEN TRY_HEX_DECODE_STRING(RTRIM(p.segmented_output [2] :: STRING, 0)) END) AS pool_symbol,
|
||||
MIN(CASE WHEN p.function_name = 'name' THEN CONCAT(TRY_HEX_DECODE_STRING(p.segmented_output [2] :: STRING),
|
||||
TRY_HEX_DECODE_STRING(segmented_output [3] :: STRING)) END) AS pool_name,
|
||||
MIN(CASE WHEN p.function_name = 'symbol' THEN utils.udf_hex_to_string(RTRIM(p.segmented_output [2] :: STRING,0)) END) AS pool_symbol,
|
||||
MIN(CASE WHEN p.function_name = 'name' THEN CONCAT(utils.udf_hex_to_string(p.segmented_output [2] :: STRING),
|
||||
utils.udf_hex_to_string(p.segmented_output [3] :: STRING)) END) AS pool_name,
|
||||
MIN(CASE
|
||||
WHEN p.read_result::STRING = '0x' THEN NULL
|
||||
ELSE utils.udf_hex_to_int(LEFT(p.read_result::STRING,66))
|
||||
@ -314,6 +315,10 @@ GROUP BY 1,2,3,4
|
||||
|
||||
FINAL AS (
|
||||
SELECT
|
||||
block_number,
|
||||
block_timestamp,
|
||||
tx_hash,
|
||||
deployer_address,
|
||||
pool_address,
|
||||
CASE
|
||||
WHEN token_address = '0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee' THEN '0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2'
|
||||
@ -333,56 +338,84 @@ SELECT
|
||||
ELSE pool_decimals
|
||||
END AS pool_decimals,
|
||||
pool_id,
|
||||
_call_id,
|
||||
a._inserted_timestamp
|
||||
FROM all_pools a
|
||||
LEFT JOIN {{ ref('silver__contracts') }} c ON a.token_address = c.address
|
||||
LEFT JOIN {{ ref('silver__contracts') }} c
|
||||
ON a.token_address = c.address
|
||||
LEFT JOIN contract_deployments d
|
||||
ON a.pool_address = d.contract_address
|
||||
QUALIFY(ROW_NUMBER() OVER(PARTITION BY pool_address, token_address ORDER BY a._inserted_timestamp DESC)) = 1
|
||||
),
|
||||
|
||||
pool_backfill AS (
|
||||
|
||||
SELECT
|
||||
block_number,
|
||||
block_timestamp :: TIMESTAMP AS block_timestamp,
|
||||
tx_hash,
|
||||
deployer_address,
|
||||
pool_address,
|
||||
token_address,
|
||||
token_index :: INTEGER AS token_id,
|
||||
token_index :: STRING AS token_id,
|
||||
token_type,
|
||||
token_symbol AS pool_symbol,
|
||||
pool_name,
|
||||
token_decimals :: INTEGER AS pool_decimals,
|
||||
pool_id,
|
||||
_inserted_timestamp
|
||||
FROM {{ ref('silver__curve_pools_20230308') }}
|
||||
WHERE pool_address NOT IN (
|
||||
SELECT pool_address
|
||||
FROM FINAL
|
||||
)
|
||||
)
|
||||
|
||||
SELECT
|
||||
pool_address,
|
||||
token_address,
|
||||
token_id,
|
||||
token_type,
|
||||
pool_symbol,
|
||||
pool_name,
|
||||
pool_decimals,
|
||||
pool_id,
|
||||
_inserted_timestamp
|
||||
FROM FINAL
|
||||
UNION
|
||||
SELECT
|
||||
pool_address,
|
||||
token_address,
|
||||
token_id,
|
||||
token_type,
|
||||
pool_symbol,
|
||||
pool_name,
|
||||
pool_decimals,
|
||||
CONCAT(
|
||||
pool_id,
|
||||
'-',
|
||||
token_id,
|
||||
'-',
|
||||
COALESCE(token_type,'null')
|
||||
token_type
|
||||
) AS pool_id,
|
||||
_call_id,
|
||||
_inserted_timestamp :: TIMESTAMP AS _inserted_timestamp
|
||||
FROM {{ ref('silver_dex__curve_pools_traces_backfill') }}
|
||||
WHERE pool_address NOT IN (
|
||||
SELECT pool_address
|
||||
FROM FINAL
|
||||
)
|
||||
),
|
||||
|
||||
final_pools AS (
|
||||
|
||||
SELECT
|
||||
block_number,
|
||||
block_timestamp,
|
||||
tx_hash,
|
||||
deployer_address,
|
||||
pool_address,
|
||||
token_address,
|
||||
token_id,
|
||||
token_type,
|
||||
pool_symbol,
|
||||
pool_name,
|
||||
pool_decimals,
|
||||
pool_id,
|
||||
_call_id,
|
||||
_inserted_timestamp
|
||||
FROM pool_backfill
|
||||
FROM FINAL
|
||||
UNION
|
||||
SELECT
|
||||
block_number,
|
||||
block_timestamp,
|
||||
tx_hash,
|
||||
deployer_address,
|
||||
pool_address,
|
||||
token_address,
|
||||
token_id,
|
||||
token_type,
|
||||
pool_symbol,
|
||||
pool_name,
|
||||
pool_decimals,
|
||||
pool_id,
|
||||
_call_id,
|
||||
_inserted_timestamp
|
||||
FROM pool_backfill
|
||||
)
|
||||
|
||||
SELECT
|
||||
*,
|
||||
ROW_NUMBER() OVER (PARTITION BY pool_address ORDER BY token_address ASC) AS token_num
|
||||
FROM final_pools
|
||||
@ -8,33 +8,14 @@ WITH pool_meta AS (
|
||||
|
||||
SELECT
|
||||
DISTINCT pool_address,
|
||||
CASE
|
||||
WHEN pool_name IS NULL AND pool_symbol IS NULL THEN CONCAT('Curve.fi Pool: ',SUBSTRING(pool_address, 1, 5),'...',SUBSTRING(pool_address, 39, 42))
|
||||
WHEN pool_name IS NULL THEN CONCAT('Curve.fi Pool: ',replace(regexp_replace(agg_symbol, '[^[:alnum:],]', '', 1, 0), ',', '-'))
|
||||
ELSE pool_name
|
||||
END AS pool_name,
|
||||
token_address,
|
||||
pool_symbol AS symbol,
|
||||
token_id::INTEGER AS token_id,
|
||||
token_type::STRING AS token_type
|
||||
pool_name,
|
||||
token_address,
|
||||
pool_symbol AS symbol,
|
||||
token_id::INTEGER AS token_id,
|
||||
token_type::STRING AS token_type
|
||||
FROM
|
||||
{{ ref('silver_dex__curve_pools') }}
|
||||
LEFT JOIN (
|
||||
SELECT
|
||||
pool_address,
|
||||
array_agg(DISTINCT pool_symbol)::STRING AS agg_symbol
|
||||
FROM {{ ref('silver_dex__curve_pools') }}
|
||||
GROUP BY 1
|
||||
) USING(pool_address)
|
||||
),
|
||||
|
||||
pools AS (
|
||||
|
||||
SELECT
|
||||
DISTINCT pool_address,
|
||||
pool_name
|
||||
FROM pool_meta
|
||||
QUALIFY (ROW_NUMBER() OVER (PARTITION BY pool_address ORDER BY pool_name ASC)) = 1
|
||||
QUALIFY (ROW_NUMBER() OVER (PARTITION BY pool_address ORDER BY pool_name ASC)) = 1
|
||||
),
|
||||
|
||||
curve_base AS (
|
||||
@ -70,9 +51,9 @@ curve_base AS (
|
||||
_log_id,
|
||||
_inserted_timestamp
|
||||
FROM
|
||||
{{ ref('silver__logs') }}
|
||||
INNER JOIN pools
|
||||
ON pools.pool_address = contract_address
|
||||
{{ ref('silver__logs') }} l
|
||||
INNER JOIN pool_meta m
|
||||
ON m.pool_address = l.contract_address
|
||||
WHERE
|
||||
topics [0] :: STRING IN (
|
||||
'0x8b3e96f2b889fa771c53c981b40daf005f63f637f1869f707052d15a3dd97140',
|
||||
|
||||
100
models/silver/dex/dodo/silver_dex__dodo_v1_pools.sql
Normal file
100
models/silver/dex/dodo/silver_dex__dodo_v1_pools.sql
Normal file
@ -0,0 +1,100 @@
|
||||
{{ config(
|
||||
materialized = 'incremental',
|
||||
unique_key = "pool_address"
|
||||
) }}
|
||||
|
||||
WITH pool_events AS (
|
||||
|
||||
SELECT
|
||||
block_number,
|
||||
block_timestamp,
|
||||
tx_hash,
|
||||
event_index,
|
||||
contract_address,
|
||||
regexp_substr_all(SUBSTR(DATA, 3, len(DATA)), '.{64}') AS segmented_data,
|
||||
CONCAT('0x', SUBSTR(segmented_data [0] :: STRING, 25, 40)) AS newBorn,
|
||||
CONCAT('0x', SUBSTR(segmented_data [1] :: STRING, 25, 40)) AS baseToken,
|
||||
CONCAT('0x', SUBSTR(segmented_data [2] :: STRING, 25, 40)) AS quoteToken,
|
||||
_log_id,
|
||||
_inserted_timestamp
|
||||
FROM
|
||||
{{ ref ('silver__logs') }}
|
||||
WHERE
|
||||
contract_address IN (
|
||||
'0xbd337924f000dceb119153d4d3b1744b22364d25',
|
||||
'0xe1b5d7a770cb1b40c859a52696e7e3dd1c57b0ba',
|
||||
'0x3a97247df274a17c59a3bd12735ea3fcdfb49950'
|
||||
) --DODOZoo
|
||||
AND topics [0] :: STRING = '0x5c428a2e12ecaa744a080b25b4cda8b86359c82d726575d7d747e07708071f93' --DODOBirth
|
||||
|
||||
{% if is_incremental() %}
|
||||
AND _inserted_timestamp >= (
|
||||
SELECT
|
||||
MAX(_inserted_timestamp) :: DATE - 1
|
||||
FROM
|
||||
{{ this }}
|
||||
)
|
||||
{% endif %}
|
||||
),
|
||||
pool_calls AS (
|
||||
SELECT
|
||||
block_number,
|
||||
block_timestamp,
|
||||
tx_hash,
|
||||
from_address AS deployer_address,
|
||||
to_address AS pool_address,
|
||||
base_token,
|
||||
quote_token,
|
||||
base_token_symbol,
|
||||
quote_token_symbol,
|
||||
_call_id,
|
||||
_inserted_timestamp
|
||||
FROM
|
||||
{{ ref('silver__traces') }} t
|
||||
INNER JOIN {{ref('silver__dodo_v1_pools')}} s ON t.to_address = s.pool_address
|
||||
WHERE
|
||||
from_address IN (
|
||||
'0x5e5a7b76462e4bdf83aa98795644281bdba80b88',
|
||||
'0x17dbfa501f2f376d092fa69d3223a09bba4efdf7'
|
||||
) --DODO deployer contracts
|
||||
AND TYPE ILIKE 'create%'
|
||||
AND tx_status = 'SUCCESS'
|
||||
AND trace_status = 'SUCCESS'
|
||||
AND block_timestamp :: DATE >= '2020-08-07'
|
||||
|
||||
{% if is_incremental() %}
|
||||
AND _inserted_timestamp >= (
|
||||
SELECT
|
||||
MAX(_inserted_timestamp) :: DATE - 1
|
||||
FROM
|
||||
{{ this }}
|
||||
)
|
||||
{% endif %}
|
||||
)
|
||||
SELECT
|
||||
block_number,
|
||||
block_timestamp,
|
||||
tx_hash,
|
||||
event_index,
|
||||
contract_address,
|
||||
newBorn AS pool_address,
|
||||
baseToken AS base_token,
|
||||
quoteToken AS quote_token,
|
||||
_log_id AS _id,
|
||||
_inserted_timestamp
|
||||
FROM
|
||||
pool_events
|
||||
UNION ALL
|
||||
SELECT
|
||||
block_number,
|
||||
block_timestamp,
|
||||
tx_hash,
|
||||
NULL AS event_index,
|
||||
deployer_address AS contract_address,
|
||||
pool_address,
|
||||
base_token,
|
||||
quote_token,
|
||||
_call_id AS _id,
|
||||
_inserted_timestamp
|
||||
FROM
|
||||
pool_calls
|
||||
17
models/silver/dex/dodo/silver_dex__dodo_v1_pools.yml
Normal file
17
models/silver/dex/dodo/silver_dex__dodo_v1_pools.yml
Normal file
@ -0,0 +1,17 @@
|
||||
version: 2
|
||||
models:
|
||||
- name: silver_dex__dodo_v1_pools
|
||||
tests:
|
||||
- dbt_utils.unique_combination_of_columns:
|
||||
combination_of_columns:
|
||||
- POOL_ADDRESS
|
||||
columns:
|
||||
- name: POOL_ADDRESS
|
||||
tests:
|
||||
- not_null
|
||||
- name: _INSERTED_TIMESTAMP
|
||||
tests:
|
||||
- dbt_expectations.expect_column_values_to_be_in_type_list:
|
||||
column_type_list:
|
||||
- TIMESTAMP_LTZ
|
||||
- TIMESTAMP_NTZ
|
||||
@ -8,11 +8,9 @@ WITH pools AS (
|
||||
|
||||
SELECT
|
||||
pool_address,
|
||||
base_token_symbol,
|
||||
quote_token_symbol,
|
||||
base_token,
|
||||
quote_token
|
||||
FROM {{ ref('silver__dodo_v1_pools') }}
|
||||
FROM {{ ref('silver_dex__dodo_v1_pools') }}
|
||||
),
|
||||
proxies AS (
|
||||
SELECT
|
||||
|
||||
@ -49,6 +49,7 @@ SELECT
|
||||
block_timestamp,
|
||||
tx_hash,
|
||||
event_index,
|
||||
factory_address,
|
||||
token0,
|
||||
token1,
|
||||
pool_address,
|
||||
|
||||
@ -11,6 +11,7 @@ WITH contract_deployments AS (
|
||||
block_timestamp,
|
||||
from_address AS deployer_address,
|
||||
to_address AS contract_address,
|
||||
_call_id,
|
||||
_inserted_timestamp
|
||||
FROM
|
||||
{{ ref('silver__traces') }}
|
||||
@ -49,5 +50,6 @@ SELECT
|
||||
block_timestamp,
|
||||
deployer_address,
|
||||
contract_address AS pool_address,
|
||||
_call_id,
|
||||
_inserted_timestamp
|
||||
FROM contract_deployments
|
||||
|
||||
@ -52,6 +52,7 @@ SELECT
|
||||
block_timestamp,
|
||||
tx_hash,
|
||||
event_index,
|
||||
contract_address,
|
||||
token0,
|
||||
token1,
|
||||
pool_address,
|
||||
|
||||
@ -58,6 +58,7 @@ SELECT
|
||||
block_timestamp,
|
||||
tx_hash,
|
||||
event_index,
|
||||
contract_address,
|
||||
token0,
|
||||
token1,
|
||||
pool_address,
|
||||
|
||||
@ -49,6 +49,7 @@ SELECT
|
||||
block_timestamp,
|
||||
tx_hash,
|
||||
event_index,
|
||||
contract_address,
|
||||
token0,
|
||||
token1,
|
||||
swapFeeUnits AS swap_fee_units,
|
||||
|
||||
@ -46,6 +46,7 @@ SELECT
|
||||
block_timestamp,
|
||||
tx_hash,
|
||||
event_index,
|
||||
contract_address,
|
||||
token0,
|
||||
token1,
|
||||
pool_address,
|
||||
|
||||
@ -10,6 +10,7 @@ WITH created_pools AS (
|
||||
block_number,
|
||||
block_timestamp,
|
||||
tx_hash,
|
||||
contract_address,
|
||||
regexp_substr_all(SUBSTR(DATA, 3, len(DATA)), '.{64}') AS segmented_data,
|
||||
CONCAT('0x', SUBSTR(topics [1] :: STRING, 27, 40)) AS token0_address,
|
||||
CONCAT('0x', SUBSTR(topics [2] :: STRING, 27, 40)) AS token1_address,
|
||||
@ -50,6 +51,7 @@ FINAL AS (
|
||||
block_number,
|
||||
block_timestamp,
|
||||
tx_hash,
|
||||
contract_address,
|
||||
token0_address,
|
||||
token1_address,
|
||||
fee :: INTEGER AS fee,
|
||||
@ -58,6 +60,7 @@ FINAL AS (
|
||||
) :: FLOAT AS fee_percent,
|
||||
tickSpacing AS tick_spacing,
|
||||
pool_address,
|
||||
_log_id,
|
||||
_inserted_timestamp
|
||||
FROM
|
||||
created_pools
|
||||
|
||||
@ -46,6 +46,7 @@ SELECT
|
||||
block_timestamp,
|
||||
tx_hash,
|
||||
event_index,
|
||||
contract_address,
|
||||
token0,
|
||||
token1,
|
||||
pool_address,
|
||||
|
||||
529
models/silver/dex/silver_dex__complete_dex_liquidity_pools.sql
Normal file
529
models/silver/dex/silver_dex__complete_dex_liquidity_pools.sql
Normal file
@ -0,0 +1,529 @@
|
||||
{{ config(
|
||||
materialized = 'incremental',
|
||||
unique_key = "_id",
|
||||
cluster_by = ['block_timestamp::DATE']
|
||||
) }}
|
||||
|
||||
WITH contracts AS (
|
||||
|
||||
SELECT
|
||||
address,
|
||||
symbol,
|
||||
decimals,
|
||||
_inserted_timestamp
|
||||
FROM
|
||||
{{ ref('silver__contracts') }}
|
||||
),
|
||||
|
||||
balancer AS (
|
||||
|
||||
SELECT
|
||||
block_number,
|
||||
block_timestamp,
|
||||
tx_hash,
|
||||
contract_address,
|
||||
pool_address,
|
||||
pool_name,
|
||||
'balancer' AS platform,
|
||||
_log_id AS _id,
|
||||
_inserted_timestamp,
|
||||
token0,
|
||||
token1,
|
||||
token2,
|
||||
token3,
|
||||
token4,
|
||||
token5,
|
||||
token6,
|
||||
token7
|
||||
FROM
|
||||
{{ ref('silver_dex__balancer_pools') }}
|
||||
{% if is_incremental() %}
|
||||
WHERE
|
||||
_inserted_timestamp >= (
|
||||
SELECT
|
||||
MAX(_inserted_timestamp) :: DATE - 1
|
||||
FROM
|
||||
{{ this }}
|
||||
)
|
||||
{% endif %}
|
||||
),
|
||||
|
||||
curve AS (
|
||||
|
||||
SELECT
|
||||
block_number,
|
||||
block_timestamp,
|
||||
tx_hash,
|
||||
deployer_address AS contract_address,
|
||||
pool_address,
|
||||
pool_name,
|
||||
'curve' AS platform,
|
||||
_call_id AS _id,
|
||||
_inserted_timestamp,
|
||||
MAX(CASE WHEN token_num = 1 THEN token_address END) AS token0,
|
||||
MAX(CASE WHEN token_num = 2 THEN token_address END) AS token1,
|
||||
MAX(CASE WHEN token_num = 3 THEN token_address END) AS token2,
|
||||
MAX(CASE WHEN token_num = 4 THEN token_address END) AS token3,
|
||||
MAX(CASE WHEN token_num = 5 THEN token_address END) AS token4,
|
||||
MAX(CASE WHEN token_num = 6 THEN token_address END) AS token5,
|
||||
MAX(CASE WHEN token_num = 7 THEN token_address END) AS token6,
|
||||
MAX(CASE WHEN token_num = 8 THEN token_address END) AS token7
|
||||
FROM
|
||||
{{ ref('silver_dex__curve_pools') }}
|
||||
{% if is_incremental() %}
|
||||
WHERE
|
||||
_inserted_timestamp >= (
|
||||
SELECT
|
||||
MAX(_inserted_timestamp) :: DATE - 1
|
||||
FROM
|
||||
{{ this }}
|
||||
)
|
||||
{% endif %}
|
||||
GROUP BY all
|
||||
),
|
||||
|
||||
dodo_v1 AS (
|
||||
|
||||
SELECT
|
||||
block_number,
|
||||
block_timestamp,
|
||||
tx_hash,
|
||||
contract_address,
|
||||
pool_address,
|
||||
base_token AS token0,
|
||||
quote_token AS token1,
|
||||
'dodo-v1' AS platform,
|
||||
_id,
|
||||
_inserted_timestamp
|
||||
FROM
|
||||
{{ ref('silver_dex__dodo_v1_pools') }}
|
||||
{% if is_incremental() %}
|
||||
WHERE
|
||||
_inserted_timestamp >= (
|
||||
SELECT
|
||||
MAX(_inserted_timestamp) :: DATE - 1
|
||||
FROM
|
||||
{{ this }}
|
||||
)
|
||||
{% endif %}
|
||||
),
|
||||
|
||||
dodo_v2 AS (
|
||||
|
||||
SELECT
|
||||
block_number,
|
||||
block_timestamp,
|
||||
tx_hash,
|
||||
contract_address,
|
||||
pool_address,
|
||||
base_token AS token0,
|
||||
quote_token AS token1,
|
||||
'dodo-v2' AS platform,
|
||||
_log_id AS _id,
|
||||
_inserted_timestamp
|
||||
FROM
|
||||
{{ ref('silver_dex__dodo_v2_pools') }}
|
||||
{% if is_incremental() %}
|
||||
WHERE
|
||||
_inserted_timestamp >= (
|
||||
SELECT
|
||||
MAX(_inserted_timestamp) :: DATE - 1
|
||||
FROM
|
||||
{{ this }}
|
||||
)
|
||||
{% endif %}
|
||||
),
|
||||
|
||||
frax AS (
|
||||
|
||||
SELECT
|
||||
block_number,
|
||||
block_timestamp,
|
||||
tx_hash,
|
||||
factory_address AS contract_address,
|
||||
pool_address,
|
||||
token0,
|
||||
token1,
|
||||
'fraxswap' AS platform,
|
||||
_log_id AS _id,
|
||||
_inserted_timestamp
|
||||
FROM
|
||||
{{ ref('silver_dex__fraxswap_pools') }}
|
||||
{% if is_incremental() %}
|
||||
WHERE
|
||||
_inserted_timestamp >= (
|
||||
SELECT
|
||||
MAX(_inserted_timestamp) :: DATE - 1
|
||||
FROM
|
||||
{{ this }}
|
||||
)
|
||||
{% endif %}
|
||||
),
|
||||
|
||||
kyberswap_v1_dynamic AS (
|
||||
|
||||
SELECT
|
||||
block_number,
|
||||
block_timestamp,
|
||||
tx_hash,
|
||||
contract_address,
|
||||
pool_address,
|
||||
token0,
|
||||
token1,
|
||||
'kyberswap-v1' AS platform,
|
||||
_log_id AS _id,
|
||||
_inserted_timestamp
|
||||
FROM
|
||||
{{ ref('silver_dex__kyberswap_v1_dynamic_pools') }}
|
||||
{% if is_incremental() %}
|
||||
WHERE
|
||||
_inserted_timestamp >= (
|
||||
SELECT
|
||||
MAX(_inserted_timestamp) :: DATE - 1
|
||||
FROM
|
||||
{{ this }}
|
||||
)
|
||||
{% endif %}
|
||||
),
|
||||
|
||||
kyberswap_v1_static AS (
|
||||
|
||||
SELECT
|
||||
block_number,
|
||||
block_timestamp,
|
||||
tx_hash,
|
||||
contract_address,
|
||||
pool_address,
|
||||
token0,
|
||||
token1,
|
||||
'kyberswap-v1' AS platform,
|
||||
_log_id AS _id,
|
||||
_inserted_timestamp
|
||||
FROM
|
||||
{{ ref('silver_dex__kyberswap_v1_static_pools') }}
|
||||
{% if is_incremental() %}
|
||||
WHERE
|
||||
_inserted_timestamp >= (
|
||||
SELECT
|
||||
MAX(_inserted_timestamp) :: DATE - 1
|
||||
FROM
|
||||
{{ this }}
|
||||
)
|
||||
{% endif %}
|
||||
),
|
||||
|
||||
kyberswap_v2_elastic AS (
|
||||
|
||||
SELECT
|
||||
block_number,
|
||||
block_timestamp,
|
||||
tx_hash,
|
||||
contract_address,
|
||||
pool_address,
|
||||
token0,
|
||||
token1,
|
||||
'kyberswap-v2' AS platform,
|
||||
_log_id AS _id,
|
||||
_inserted_timestamp
|
||||
FROM
|
||||
{{ ref('silver_dex__kyberswap_v2_elastic_pools') }}
|
||||
{% if is_incremental() %}
|
||||
WHERE
|
||||
_inserted_timestamp >= (
|
||||
SELECT
|
||||
MAX(_inserted_timestamp) :: DATE - 1
|
||||
FROM
|
||||
{{ this }}
|
||||
)
|
||||
{% endif %}
|
||||
),
|
||||
|
||||
maverick AS (
|
||||
|
||||
SELECT
|
||||
block_number,
|
||||
block_timestamp,
|
||||
tx_hash,
|
||||
contract_address,
|
||||
pool_address,
|
||||
tokenA AS token0,
|
||||
tokenB AS token1,
|
||||
'maverick' AS platform,
|
||||
_log_id AS _id,
|
||||
_inserted_timestamp
|
||||
FROM
|
||||
{{ ref('silver_dex__maverick_pools') }}
|
||||
{% if is_incremental() %}
|
||||
WHERE
|
||||
_inserted_timestamp >= (
|
||||
SELECT
|
||||
MAX(_inserted_timestamp) :: DATE - 1
|
||||
FROM
|
||||
{{ this }}
|
||||
)
|
||||
{% endif %}
|
||||
),
|
||||
|
||||
shibaswap AS (
|
||||
|
||||
SELECT
|
||||
block_number,
|
||||
block_timestamp,
|
||||
tx_hash,
|
||||
contract_address,
|
||||
pool_address,
|
||||
token0,
|
||||
token1,
|
||||
'shibaswap' AS platform,
|
||||
_log_id AS _id,
|
||||
_inserted_timestamp
|
||||
FROM
|
||||
{{ ref('silver_dex__shibaswap_pools') }}
|
||||
{% if is_incremental() %}
|
||||
WHERE
|
||||
_inserted_timestamp >= (
|
||||
SELECT
|
||||
MAX(_inserted_timestamp) :: DATE - 1
|
||||
FROM
|
||||
{{ this }}
|
||||
)
|
||||
{% endif %}
|
||||
),
|
||||
|
||||
pancakeswap_v2_amm AS (
|
||||
|
||||
SELECT
|
||||
block_number,
|
||||
block_timestamp,
|
||||
tx_hash,
|
||||
contract_address,
|
||||
pool_address,
|
||||
token0,
|
||||
token1,
|
||||
'pancakeswap-v2' AS platform,
|
||||
_log_id AS _id,
|
||||
_inserted_timestamp
|
||||
FROM
|
||||
{{ ref('silver_dex__pancakeswap_v2_amm_pools') }}
|
||||
{% if is_incremental() %}
|
||||
WHERE
|
||||
_inserted_timestamp >= (
|
||||
SELECT
|
||||
MAX(_inserted_timestamp) :: DATE - 1
|
||||
FROM
|
||||
{{ this }}
|
||||
)
|
||||
{% endif %}
|
||||
),
|
||||
|
||||
pancakeswap_v3 AS (
|
||||
|
||||
SELECT
|
||||
block_number,
|
||||
block_timestamp,
|
||||
tx_hash,
|
||||
contract_address,
|
||||
pool_address,
|
||||
NULL AS pool_name,
|
||||
fee,
|
||||
tick_spacing,
|
||||
token0_address AS token0,
|
||||
token1_address AS token1,
|
||||
'pancakeswap-v3' AS platform,
|
||||
_log_id AS _id,
|
||||
_inserted_timestamp
|
||||
FROM
|
||||
{{ ref('silver_dex__pancakeswap_v3_pools') }}
|
||||
{% if is_incremental() %}
|
||||
WHERE
|
||||
_inserted_timestamp >= (
|
||||
SELECT
|
||||
MAX(_inserted_timestamp) :: DATE - 1
|
||||
FROM
|
||||
{{ this }}
|
||||
)
|
||||
{% endif %}
|
||||
),
|
||||
|
||||
uni_sushi_v2_v3 AS (
|
||||
|
||||
SELECT
|
||||
creation_block AS block_number,
|
||||
creation_time AS block_timestamp,
|
||||
creation_tx AS tx_hash,
|
||||
factory_address AS contract_address,
|
||||
pool_address,
|
||||
pool_name,
|
||||
fee,
|
||||
tickSpacing AS tick_spacing,
|
||||
token0,
|
||||
token1,
|
||||
platform,
|
||||
_log_id AS _id,
|
||||
_inserted_timestamp
|
||||
FROM
|
||||
{{ ref('silver_dex__pools') }}
|
||||
{% if is_incremental() %}
|
||||
WHERE
|
||||
_inserted_timestamp >= (
|
||||
SELECT
|
||||
MAX(_inserted_timestamp) :: DATE - 1
|
||||
FROM
|
||||
{{ this }}
|
||||
)
|
||||
{% endif %}
|
||||
),
|
||||
|
||||
all_pools_standard AS (
|
||||
SELECT *
|
||||
FROM dodo_v1
|
||||
UNION ALL
|
||||
SELECT *
|
||||
FROM dodo_v2
|
||||
UNION ALL
|
||||
SELECT *
|
||||
FROM frax
|
||||
UNION ALL
|
||||
SELECT *
|
||||
FROM kyberswap_v1_dynamic
|
||||
UNION ALL
|
||||
SELECT *
|
||||
FROM kyberswap_v1_static
|
||||
UNION ALL
|
||||
SELECT *
|
||||
FROM kyberswap_v2_elastic
|
||||
UNION ALL
|
||||
SELECT *
|
||||
FROM maverick
|
||||
UNION ALL
|
||||
SELECT *
|
||||
FROM shibaswap
|
||||
UNION ALL
|
||||
SELECT *
|
||||
FROM pancakeswap_v2_amm
|
||||
),
|
||||
|
||||
all_pools_v3 AS (
|
||||
SELECT *
|
||||
FROM uni_sushi_v2_v3
|
||||
UNION ALL
|
||||
SELECT *
|
||||
FROM pancakeswap_v3
|
||||
),
|
||||
|
||||
all_pools_other AS (
|
||||
SELECT *
|
||||
FROM balancer
|
||||
UNION ALL
|
||||
SELECT *
|
||||
FROM curve
|
||||
),
|
||||
|
||||
FINAL AS (
|
||||
SELECT
|
||||
block_number,
|
||||
block_timestamp,
|
||||
tx_hash,
|
||||
contract_address,
|
||||
pool_address,
|
||||
CONCAT(
|
||||
COALESCE(c0.symbol,CONCAT(SUBSTRING(token0, 1, 5),'...',SUBSTRING(token0, 39, 42))),
|
||||
'-',
|
||||
COALESCE(c1.symbol,CONCAT(SUBSTRING(token1, 1, 5),'...',SUBSTRING(token1, 39, 42)))
|
||||
) AS pool_name,
|
||||
OBJECT_CONSTRUCT('token0',token0,'token1',token1) AS tokens,
|
||||
OBJECT_CONSTRUCT('token0',c0.symbol,'token1',c1.symbol) AS symbols,
|
||||
OBJECT_CONSTRUCT('token0',c0.decimals,'token1',c1.decimals) AS decimals,
|
||||
platform,
|
||||
_id,
|
||||
p._inserted_timestamp
|
||||
FROM all_pools_standard p
|
||||
LEFT JOIN contracts c0
|
||||
ON c0.address = p.token0
|
||||
LEFT JOIN contracts c1
|
||||
ON c1.address = p.token1
|
||||
UNION ALL
|
||||
SELECT
|
||||
block_number,
|
||||
block_timestamp,
|
||||
tx_hash,
|
||||
contract_address,
|
||||
pool_address,
|
||||
CASE
|
||||
WHEN pool_name IS NULL AND platform = 'sushiswap'
|
||||
THEN CONCAT(COALESCE(c0.symbol,CONCAT(SUBSTRING(token0, 1, 5),'...',SUBSTRING(token0, 39, 42))),'-',COALESCE(c1.symbol,CONCAT(SUBSTRING(token1, 1, 5),'...',SUBSTRING(token1, 39, 42))),' SLP')
|
||||
WHEN pool_name IS NULL AND platform = 'uniswap-v2'
|
||||
THEN CONCAT(COALESCE(c0.symbol,CONCAT(SUBSTRING(token0, 1, 5),'...',SUBSTRING(token0, 39, 42))),'-',COALESCE(c1.symbol,CONCAT(SUBSTRING(token1, 1, 5),'...',SUBSTRING(token1, 39, 42))),' UNI-V2 LP')
|
||||
WHEN pool_name IS NULL AND platform = 'uniswap-v3'
|
||||
THEN CONCAT(COALESCE(c0.symbol,CONCAT(SUBSTRING(token0, 1, 5),'...',SUBSTRING(token0, 39, 42))),'-',COALESCE(c1.symbol,CONCAT(SUBSTRING(token1, 1, 5),'...',SUBSTRING(token1, 39, 42))),' ',COALESCE(fee,0),' ',COALESCE(tick_spacing,0),' UNI-V3 LP')
|
||||
WHEN pool_name IS NULL AND platform = 'pancakeswap-v3'
|
||||
THEN CONCAT(COALESCE(c0.symbol,CONCAT(SUBSTRING(token0, 1, 5),'...',SUBSTRING(token0, 39, 42))),'-',COALESCE(c1.symbol,CONCAT(SUBSTRING(token1, 1, 5),'...',SUBSTRING(token1, 39, 42))),' ',COALESCE(fee,0),' ',COALESCE(tick_spacing,0),' PCS-V3 LP')
|
||||
ELSE pool_name
|
||||
END AS pool_name,
|
||||
OBJECT_CONSTRUCT('token0',token0,'token1',token1) AS tokens,
|
||||
OBJECT_CONSTRUCT('token0',c0.symbol,'token1',c1.symbol) AS symbols,
|
||||
OBJECT_CONSTRUCT('token0',c0.decimals,'token1',c1.decimals) AS decimals,
|
||||
platform,
|
||||
_id,
|
||||
p._inserted_timestamp
|
||||
FROM all_pools_v3 p
|
||||
LEFT JOIN contracts c0
|
||||
ON c0.address = p.token0
|
||||
LEFT JOIN contracts c1
|
||||
ON c1.address = p.token1
|
||||
UNION ALL
|
||||
SELECT
|
||||
block_number,
|
||||
block_timestamp,
|
||||
tx_hash,
|
||||
contract_address,
|
||||
pool_address,
|
||||
CONCAT(
|
||||
COALESCE(c0.symbol, SUBSTRING(token0, 1, 5) || '...' || SUBSTRING(token0, 39, 42)),
|
||||
CASE WHEN token1 IS NOT NULL THEN '-' || COALESCE(c1.symbol, SUBSTRING(token1, 1, 5) || '...' || SUBSTRING(token1, 39, 42)) ELSE '' END,
|
||||
CASE WHEN token2 IS NOT NULL THEN '-' || COALESCE(c2.symbol, SUBSTRING(token2, 1, 5) || '...' || SUBSTRING(token2, 39, 42)) ELSE '' END,
|
||||
CASE WHEN token3 IS NOT NULL THEN '-' || COALESCE(c3.symbol, SUBSTRING(token3, 1, 5) || '...' || SUBSTRING(token3, 39, 42)) ELSE '' END,
|
||||
CASE WHEN token4 IS NOT NULL THEN '-' || COALESCE(c4.symbol, SUBSTRING(token4, 1, 5) || '...' || SUBSTRING(token4, 39, 42)) ELSE '' END,
|
||||
CASE WHEN token5 IS NOT NULL THEN '-' || COALESCE(c5.symbol, SUBSTRING(token5, 1, 5) || '...' || SUBSTRING(token5, 39, 42)) ELSE '' END,
|
||||
CASE WHEN token6 IS NOT NULL THEN '-' || COALESCE(c6.symbol, SUBSTRING(token6, 1, 5) || '...' || SUBSTRING(token6, 39, 42)) ELSE '' END,
|
||||
CASE WHEN token7 IS NOT NULL THEN '-' || COALESCE(c7.symbol, SUBSTRING(token7, 1, 5) || '...' || SUBSTRING(token7, 39, 42)) ELSE '' END
|
||||
) AS pool_name,
|
||||
OBJECT_CONSTRUCT('token0', token0, 'token1', token1, 'token2', token2, 'token3', token3, 'token4', token4, 'token5', token5, 'token6', token6, 'token7', token7) AS tokens,
|
||||
OBJECT_CONSTRUCT('token0', c0.symbol, 'token1', c1.symbol, 'token2', c2.symbol, 'token3', c3.symbol, 'token4', c4.symbol, 'token5', c5.symbol, 'token6', c6.symbol, 'token7', c7.symbol) AS symbols,
|
||||
OBJECT_CONSTRUCT('token0', c0.decimals, 'token1', c1.decimals, 'token2', c2.decimals, 'token3', c3.decimals, 'token4', c4.decimals, 'token5', c5.decimals, 'token6', c6.decimals, 'token7', c7.decimals) AS decimals,
|
||||
platform,
|
||||
_id,
|
||||
p._inserted_timestamp
|
||||
FROM all_pools_other p
|
||||
LEFT JOIN contracts c0
|
||||
ON c0.address = p.token0
|
||||
LEFT JOIN contracts c1
|
||||
ON c1.address = p.token1
|
||||
LEFT JOIN contracts c2
|
||||
ON c2.address = p.token2
|
||||
LEFT JOIN contracts c3
|
||||
ON c3.address = p.token3
|
||||
LEFT JOIN contracts c4
|
||||
ON c4.address = p.token4
|
||||
LEFT JOIN contracts c5
|
||||
ON c5.address = p.token5
|
||||
LEFT JOIN contracts c6
|
||||
ON c6.address = p.token6
|
||||
LEFT JOIN contracts c7
|
||||
ON c7.address = p.token7
|
||||
)
|
||||
|
||||
SELECT
|
||||
block_number,
|
||||
block_timestamp,
|
||||
tx_hash,
|
||||
platform,
|
||||
contract_address,
|
||||
pool_address,
|
||||
pool_name,
|
||||
tokens,
|
||||
symbols,
|
||||
decimals,
|
||||
_id,
|
||||
_inserted_timestamp
|
||||
FROM FINAL
|
||||
@ -0,0 +1,46 @@
|
||||
version: 2
|
||||
models:
|
||||
- name: silver_dex__complete_dex_liquidity_pools
|
||||
tests:
|
||||
- dbt_utils.unique_combination_of_columns:
|
||||
combination_of_columns:
|
||||
- _ID
|
||||
columns:
|
||||
- name: BLOCK_NUMBER
|
||||
tests:
|
||||
- not_null
|
||||
- dbt_expectations.expect_column_values_to_be_in_type_list:
|
||||
column_type_list:
|
||||
- NUMBER
|
||||
- FLOAT
|
||||
- name: BLOCK_TIMESTAMP
|
||||
tests:
|
||||
- not_null
|
||||
- dbt_expectations.expect_column_values_to_be_in_type_list:
|
||||
column_type_list:
|
||||
- TIMESTAMP_LTZ
|
||||
- TIMESTAMP_NTZ
|
||||
- name: TX_HASH
|
||||
tests:
|
||||
- not_null
|
||||
- dbt_expectations.expect_column_values_to_match_regex:
|
||||
regex: 0[xX][0-9a-fA-F]+
|
||||
- name: CONTRACT_ADDRESS
|
||||
tests:
|
||||
- not_null
|
||||
- dbt_expectations.expect_column_values_to_match_regex:
|
||||
regex: 0[xX][0-9a-fA-F]+
|
||||
- name: POOL_ADDRESS
|
||||
tests:
|
||||
- not_null
|
||||
- dbt_expectations.expect_column_values_to_match_regex:
|
||||
regex: 0[xX][0-9a-fA-F]+
|
||||
- name: PLATFORM
|
||||
tests:
|
||||
- dbt_expectations.expect_column_values_to_be_in_type_list:
|
||||
column_type_list:
|
||||
- STRING
|
||||
- VARCHAR
|
||||
- name: _ID
|
||||
tests:
|
||||
- not_null
|
||||
@ -10,8 +10,7 @@ WITH contracts AS (
|
||||
address,
|
||||
symbol,
|
||||
NAME,
|
||||
decimals,
|
||||
contract_metadata
|
||||
decimals
|
||||
FROM
|
||||
{{ ref('silver__contracts') }}
|
||||
),
|
||||
@ -48,15 +47,7 @@ univ3_swaps AS (
|
||||
origin_from_address,
|
||||
origin_to_address,
|
||||
pool_address AS contract_address,
|
||||
CONCAT(
|
||||
c1.symbol,
|
||||
'-',
|
||||
c2.symbol,
|
||||
' ',
|
||||
fee,
|
||||
' ',
|
||||
tick_spacing
|
||||
) AS pool_name,
|
||||
NULL AS pool_name,
|
||||
'Swap' AS event_name,
|
||||
amount0_unadj / pow(10, COALESCE(c1.decimals, 18)) AS amount0_adjusted,
|
||||
amount1_unadj / pow(10, COALESCE(c2.decimals, 18)) AS amount1_adjusted,
|
||||
@ -189,10 +180,7 @@ uni_sushi_v2_swaps AS (
|
||||
token_out,
|
||||
c1.symbol AS symbol_in,
|
||||
c2.symbol AS symbol_out,
|
||||
CASE
|
||||
WHEN pool_name IS NULL THEN CONCAT(LEAST(symbol_in, symbol_out), '-', GREATEST(symbol_in, symbol_out))
|
||||
ELSE pool_name
|
||||
END AS pool_name,
|
||||
NULL AS pool_name,
|
||||
sender,
|
||||
tx_to,
|
||||
event_index,
|
||||
@ -245,7 +233,7 @@ curve_swaps AS (
|
||||
c2.symbol,
|
||||
s.symbol_out
|
||||
) AS token_symbol_out,
|
||||
pool_name,
|
||||
NULL AS pool_name,
|
||||
c1.decimals AS decimals_in,
|
||||
CASE
|
||||
WHEN decimals_in IS NOT NULL THEN s.tokens_sold / pow(
|
||||
@ -296,7 +284,7 @@ balancer_swaps AS (
|
||||
origin_from_address,
|
||||
origin_to_address,
|
||||
contract_address,
|
||||
pool_name,
|
||||
NULL AS pool_name,
|
||||
event_name,
|
||||
c1.decimals AS decimals_in,
|
||||
c1.symbol AS symbol_in,
|
||||
@ -439,7 +427,7 @@ fraxswap_swaps AS (
|
||||
platform,
|
||||
token_in,
|
||||
token_out,
|
||||
CONCAT(LEAST(symbol_in, symbol_out), '-', GREATEST(symbol_in, symbol_out)) AS pool_name,
|
||||
NULL AS pool_name,
|
||||
_log_id,
|
||||
_inserted_timestamp
|
||||
FROM
|
||||
@ -490,7 +478,7 @@ shibaswap_swaps AS (
|
||||
platform,
|
||||
token_in,
|
||||
token_out,
|
||||
CONCAT(LEAST(symbol_in, symbol_out), '-', GREATEST(symbol_in, symbol_out)) AS pool_name,
|
||||
NULL AS pool_name,
|
||||
_log_id,
|
||||
_inserted_timestamp
|
||||
FROM
|
||||
@ -541,7 +529,7 @@ dodo_v1_swaps AS (
|
||||
platform,
|
||||
token_in,
|
||||
token_out,
|
||||
CONCAT(LEAST(symbol_in, symbol_out), '-', GREATEST(symbol_in, symbol_out)) AS pool_name,
|
||||
NULL AS pool_name,
|
||||
_log_id,
|
||||
_inserted_timestamp
|
||||
FROM
|
||||
@ -592,7 +580,7 @@ dodo_v2_swaps AS (
|
||||
platform,
|
||||
token_in,
|
||||
token_out,
|
||||
CONCAT(LEAST(symbol_in, symbol_out), '-', GREATEST(symbol_in, symbol_out)) AS pool_name,
|
||||
NULL AS pool_name,
|
||||
_log_id,
|
||||
_inserted_timestamp
|
||||
FROM
|
||||
@ -643,7 +631,17 @@ hashflow_swaps AS (
|
||||
platform,
|
||||
token_in,
|
||||
token_out,
|
||||
CONCAT(LEAST(symbol_in, symbol_out), '-', GREATEST(symbol_in, symbol_out)) AS pool_name,
|
||||
CONCAT(
|
||||
LEAST(
|
||||
COALESCE(c1.symbol, CONCAT(SUBSTRING(c1.address, 1, 5), '...', SUBSTRING(c1.address, 39, 42))),
|
||||
COALESCE(c2.symbol, CONCAT(SUBSTRING(c2.address, 1, 5), '...', SUBSTRING(c2.address, 39, 42)))
|
||||
),
|
||||
'-',
|
||||
GREATEST(
|
||||
COALESCE(c1.symbol, CONCAT(SUBSTRING(c1.address, 1, 5), '...', SUBSTRING(c1.address, 39, 42))),
|
||||
COALESCE(c2.symbol, CONCAT(SUBSTRING(c2.address, 1, 5), '...', SUBSTRING(c2.address, 39, 42)))
|
||||
)
|
||||
) AS pool_name,
|
||||
_log_id,
|
||||
_inserted_timestamp
|
||||
FROM
|
||||
@ -694,7 +692,7 @@ maverick_swaps AS (
|
||||
platform,
|
||||
token_in,
|
||||
token_out,
|
||||
CONCAT(LEAST(symbol_in, symbol_out), '-', GREATEST(symbol_in, symbol_out)) AS pool_name,
|
||||
NULL AS pool_name,
|
||||
_log_id,
|
||||
_inserted_timestamp
|
||||
FROM
|
||||
@ -745,7 +743,7 @@ kyberswap_v1_dynamic AS (
|
||||
platform,
|
||||
token_in,
|
||||
token_out,
|
||||
CONCAT(LEAST(symbol_in, symbol_out), '-', GREATEST(symbol_in, symbol_out)) AS pool_name,
|
||||
NULL AS pool_name,
|
||||
_log_id,
|
||||
_inserted_timestamp
|
||||
FROM
|
||||
@ -796,7 +794,7 @@ kyberswap_v1_static AS (
|
||||
platform,
|
||||
token_in,
|
||||
token_out,
|
||||
CONCAT(LEAST(symbol_in, symbol_out), '-', GREATEST(symbol_in, symbol_out)) AS pool_name,
|
||||
NULL AS pool_name,
|
||||
_log_id,
|
||||
_inserted_timestamp
|
||||
FROM
|
||||
@ -847,7 +845,7 @@ kyberswap_v2_elastic AS (
|
||||
platform,
|
||||
token_in,
|
||||
token_out,
|
||||
CONCAT(LEAST(symbol_in, symbol_out), '-', GREATEST(symbol_in, symbol_out)) AS pool_name,
|
||||
NULL AS pool_name,
|
||||
_log_id,
|
||||
_inserted_timestamp
|
||||
FROM
|
||||
@ -898,7 +896,7 @@ pancakeswap_v2_amm_swaps AS (
|
||||
platform,
|
||||
token_in,
|
||||
token_out,
|
||||
CONCAT(LEAST(symbol_in, symbol_out), '-', GREATEST(symbol_in, symbol_out)) AS pool_name,
|
||||
NULL AS pool_name,
|
||||
_log_id,
|
||||
_inserted_timestamp
|
||||
FROM
|
||||
@ -949,7 +947,17 @@ pancakeswap_v2_mm_swaps AS (
|
||||
platform,
|
||||
token_in,
|
||||
token_out,
|
||||
CONCAT(LEAST(symbol_in, symbol_out), '-', GREATEST(symbol_in, symbol_out)) AS pool_name,
|
||||
CONCAT(
|
||||
LEAST(
|
||||
COALESCE(c1.symbol, CONCAT(SUBSTRING(c1.address, 1, 5), '...', SUBSTRING(c1.address, 39, 42))),
|
||||
COALESCE(c2.symbol, CONCAT(SUBSTRING(c2.address, 1, 5), '...', SUBSTRING(c2.address, 39, 42)))
|
||||
),
|
||||
'-',
|
||||
GREATEST(
|
||||
COALESCE(c1.symbol, CONCAT(SUBSTRING(c1.address, 1, 5), '...', SUBSTRING(c1.address, 39, 42))),
|
||||
COALESCE(c2.symbol, CONCAT(SUBSTRING(c2.address, 1, 5), '...', SUBSTRING(c2.address, 39, 42)))
|
||||
)
|
||||
) AS pool_name,
|
||||
_log_id,
|
||||
_inserted_timestamp
|
||||
FROM
|
||||
@ -979,15 +987,7 @@ pancakeswap_v3_swaps AS (
|
||||
origin_from_address,
|
||||
origin_to_address,
|
||||
pool_address AS contract_address,
|
||||
CONCAT(
|
||||
c1.symbol,
|
||||
'-',
|
||||
c2.symbol,
|
||||
' ',
|
||||
fee,
|
||||
' ',
|
||||
tick_spacing
|
||||
) AS pool_name,
|
||||
NULL AS pool_name,
|
||||
'Swap' AS event_name,
|
||||
amount0 AS amount0_unadj,
|
||||
amount1 AS amount1_unadj,
|
||||
@ -1668,14 +1668,17 @@ FINAL AS (
|
||||
all_dex_custom C
|
||||
)
|
||||
SELECT
|
||||
block_number,
|
||||
block_timestamp,
|
||||
tx_hash,
|
||||
f.block_number,
|
||||
f.block_timestamp,
|
||||
f.tx_hash,
|
||||
origin_function_signature,
|
||||
origin_from_address,
|
||||
origin_to_address,
|
||||
contract_address,
|
||||
pool_name,
|
||||
f.contract_address,
|
||||
CASE
|
||||
WHEN f.pool_name IS NULL THEN p.pool_name
|
||||
ELSE f.pool_name
|
||||
END AS pool_name,
|
||||
event_name,
|
||||
amount_in_unadj,
|
||||
amount_in,
|
||||
@ -1696,12 +1699,14 @@ SELECT
|
||||
sender,
|
||||
tx_to,
|
||||
event_index,
|
||||
platform,
|
||||
f.platform,
|
||||
token_in,
|
||||
token_out,
|
||||
symbol_in,
|
||||
symbol_out,
|
||||
_log_id,
|
||||
_inserted_timestamp
|
||||
f._log_id,
|
||||
f._inserted_timestamp
|
||||
FROM
|
||||
FINAL
|
||||
FINAL f
|
||||
LEFT JOIN {{ ref('silver_dex__complete_dex_liquidity_pools') }} p
|
||||
ON f.contract_address = p.pool_address
|
||||
|
||||
@ -206,6 +206,12 @@ SELECT
|
||||
FROM
|
||||
all_pools
|
||||
WHERE
|
||||
pool_address IS NOT NULL qualify(ROW_NUMBER() over(PARTITION BY pool_address
|
||||
pool_address IS NOT NULL
|
||||
AND platform IN (
|
||||
'uniswap-v2',
|
||||
'uniswap-v3',
|
||||
'sushiswap'
|
||||
)
|
||||
qualify(ROW_NUMBER() over(PARTITION BY pool_address
|
||||
ORDER BY
|
||||
model_weight ASC)) = 1
|
||||
|
||||
Loading…
Reference in New Issue
Block a user