Skip to content

Commit

Permalink
Merge branch 'main' of https://github.com/duneanalytics/spellbook int…
Browse files Browse the repository at this point in the history
…o work-on-automated-dex-trades
  • Loading branch information
0xBoxer committed Jan 20, 2025
2 parents f370cc4 + df73c4b commit 814e5de
Show file tree
Hide file tree
Showing 224 changed files with 7,720 additions and 913 deletions.
2 changes: 1 addition & 1 deletion dbt_macros/shared/balancer/balancer_bpt_prices_macro.sql
Original file line number Diff line number Diff line change
Expand Up @@ -402,7 +402,7 @@ WITH pool_labels AS (
decimals,
APPROX_PERCENTILE(median_price, 0.5) AS price,
DATE_TRUNC ('day', next_change) AS next_change
FROM {{ ref('balancer_v3_erc4626_token_prices') }}
FROM {{ source('balancer_v3' , 'erc4626_token_prices') }}
WHERE blockchain = '{{blockchain}}'
GROUP BY 1, 2, 3, 5
),
Expand Down
18 changes: 9 additions & 9 deletions dbt_macros/shared/balancer/balancer_liquidity_macro.sql
Original file line number Diff line number Diff line change
Expand Up @@ -31,10 +31,10 @@ WITH pool_labels AS (
approx_percentile(median_price, 0.5) AS price,
sum(sample_size) AS sample_size
FROM {{ source('dex', 'prices') }}
WHERE
('{{blockchain}}' != 'fantom' OR
('{{blockchain}}' = 'fantom' AND contract_address NOT IN (0xde1e704dae0b4051e80dabb26ab6ad6c12262da0, 0x5ddb92a5340fd0ead3987d3661afcd6104c3b757))) --broken price feeds
AND blockchain = '{{blockchain}}'
WHERE
(('{{blockchain}}' = 'sonic' AND contract_address != 0x039e2fb66102314ce7b64ce5ce3e5183bc94ad38)
OR ('{{blockchain}}' = 'fantom' AND contract_address NOT IN (0xde1e704dae0b4051e80dabb26ab6ad6c12262da0, 0x5ddb92a5340fd0ead3987d3661afcd6104c3b757)))
AND blockchain = '{{blockchain}}'
GROUP BY 1, 2
HAVING sum(sample_size) > 3
),
Expand Down Expand Up @@ -339,10 +339,10 @@ WITH pool_labels AS (
approx_percentile(median_price, 0.5) AS price,
sum(sample_size) AS sample_size
FROM {{ source('dex', 'prices') }}
WHERE
('{{blockchain}}' != 'fantom' OR
('{{blockchain}}' = 'fantom' AND contract_address NOT IN (0xde1e704dae0b4051e80dabb26ab6ad6c12262da0, 0x5ddb92a5340fd0ead3987d3661afcd6104c3b757))) --broken price feeds
AND blockchain = '{{blockchain}}'
WHERE
(('{{blockchain}}' = 'sonic' AND contract_address != 0x039e2fb66102314ce7b64ce5ce3e5183bc94ad38)
OR ('{{blockchain}}' = 'fantom' AND contract_address NOT IN (0xde1e704dae0b4051e80dabb26ab6ad6c12262da0, 0x5ddb92a5340fd0ead3987d3661afcd6104c3b757)))
AND blockchain = '{{blockchain}}'
GROUP BY 1, 2
HAVING sum(sample_size) > 3
),
Expand Down Expand Up @@ -394,7 +394,7 @@ WITH pool_labels AS (
decimals,
APPROX_PERCENTILE(median_price, 0.5) AS price,
DATE_TRUNC ('day', next_change) AS next_change
FROM {{ ref('balancer_v3_erc4626_token_prices') }}
FROM {{ source('balancer_v3' , 'erc4626_token_prices') }}
WHERE blockchain = '{{blockchain}}'
GROUP BY 1, 2, 3, 5
),
Expand Down
45 changes: 26 additions & 19 deletions dbt_macros/shared/balancer/balancer_protocol_fee_macro.sql
Original file line number Diff line number Diff line change
Expand Up @@ -31,12 +31,15 @@ WITH pool_labels AS (

dex_prices_1 AS (
SELECT
date_trunc('day', hour) AS DAY,
date_trunc('day', HOUR) AS DAY,
contract_address AS token,
approx_percentile(median_price, 0.5) AS price,
sum(sample_size) AS sample_size
FROM {{ source('dex', 'prices') }}
WHERE blockchain = '{{blockchain}}'
WHERE
(('{{blockchain}}' = 'sonic' AND contract_address != 0x039e2fb66102314ce7b64ce5ce3e5183bc94ad38)
OR ('{{blockchain}}' = 'fantom' AND contract_address NOT IN (0xde1e704dae0b4051e80dabb26ab6ad6c12262da0, 0x5ddb92a5340fd0ead3987d3661afcd6104c3b757)))
AND blockchain = '{{blockchain}}'
GROUP BY 1, 2
HAVING sum(sample_size) > 3
),
Expand Down Expand Up @@ -146,7 +149,7 @@ WITH pool_labels AS (
WHEN day < DATE '2022-07-03' THEN 0.25 -- veBAL release
WHEN day >= DATE '2022-07-03' AND day < DATE '2023-01-23' THEN 0.25 -- BIP 19
WHEN day >= DATE '2023-01-23' AND day < DATE '2023-07-24' THEN 0.35 -- BIP 161
WHEN day >= DATE '2023-07-24' THEN 0.175 -- BIP 371
WHEN day >= DATE '2023-07-24' THEN 0.175 -- BIP 371 and BIP 734
END AS treasury_share
FROM UNNEST(SEQUENCE(DATE '2022-03-01', CURRENT_DATE, INTERVAL '1' DAY)) AS date(day)
)
Expand All @@ -155,19 +158,20 @@ WITH pool_labels AS (
SELECT
f.day,
f.pool_id,
BYTEARRAY_SUBSTRING(f.pool_id,1,20) as pool_address,
BYTEARRAY_SUBSTRING(f.pool_id,1,20) AS pool_address,
l.name AS pool_symbol,
'{{version}}' as version,
'{{blockchain}}' as blockchain,
'{{version}}' AS version,
'{{blockchain}}' AS blockchain,
l.pool_type,
'v2' AS fee_type,
f.token_address,
f.token_symbol,
SUM(f.token_amount_raw) as token_amount_raw,
SUM(f.token_amount) as token_amount,
SUM(f.protocol_fee_collected_usd) as protocol_fee_collected_usd,
SUM(f.token_amount_raw) AS token_amount_raw,
SUM(f.token_amount) AS token_amount,
SUM(f.protocol_fee_collected_usd) AS protocol_fee_collected_usd,
r.treasury_share,
SUM(f.protocol_fee_collected_usd) * r.treasury_share as treasury_revenue_usd
SUM(f.protocol_fee_collected_usd) * r.treasury_share AS treasury_fee_usd,
SUM(f.protocol_fee_collected_usd) AS lp_fee_collected_usd
FROM decorated_protocol_fee f
INNER JOIN revenue_share r
ON r.day = f.day
Expand Down Expand Up @@ -212,12 +216,15 @@ WITH pool_labels AS (

dex_prices_1 AS (
SELECT
date_trunc('day', hour) AS DAY,
date_trunc('day', HOUR) AS DAY,
contract_address AS token,
approx_percentile(median_price, 0.5) AS price,
sum(sample_size) AS sample_size
FROM {{ source('dex', 'prices') }}
WHERE blockchain = '{{blockchain}}'
WHERE
(('{{blockchain}}' = 'sonic' AND contract_address != 0x039e2fb66102314ce7b64ce5ce3e5183bc94ad38)
OR ('{{blockchain}}' = 'fantom' AND contract_address NOT IN (0xde1e704dae0b4051e80dabb26ab6ad6c12262da0, 0x5ddb92a5340fd0ead3987d3661afcd6104c3b757)))
AND blockchain = '{{blockchain}}'
GROUP BY 1, 2
HAVING sum(sample_size) > 3
),
Expand Down Expand Up @@ -272,7 +279,7 @@ WITH pool_labels AS (
decimals,
APPROX_PERCENTILE(median_price, 0.5) AS price,
DATE_TRUNC ('day', next_change) AS next_change
FROM {{ ref('balancer_v3_erc4626_token_prices') }}
FROM {{ source('balancer_v3' , 'erc4626_token_prices') }}
WHERE blockchain = '{{blockchain}}'
GROUP BY 1, 2, 3, 5
),
Expand Down Expand Up @@ -342,12 +349,9 @@ WITH pool_labels AS (
SELECT
day,
CASE
WHEN day < DATE '2022-07-03' THEN 0.25 -- veBAL release
WHEN day >= DATE '2022-07-03' AND day < DATE '2023-01-23' THEN 0.25 -- BIP 19
WHEN day >= DATE '2023-01-23' AND day < DATE '2023-07-24' THEN 0.35 -- BIP 161
WHEN day >= DATE '2023-07-24' THEN 0.175 -- BIP 371
WHEN day >= DATE '2024-12-01' THEN 0.175 -- BIP 734
END AS treasury_share
FROM UNNEST(SEQUENCE(DATE '2022-03-01', CURRENT_DATE, INTERVAL '1' DAY)) AS date(day)
FROM UNNEST(SEQUENCE(DATE '2024-12-01', CURRENT_DATE, INTERVAL '1' DAY)) AS date(day)
)


Expand All @@ -366,7 +370,10 @@ WITH pool_labels AS (
SUM(f.token_amount) as token_amount,
SUM(f.protocol_fee_collected_usd) as protocol_fee_collected_usd,
r.treasury_share,
SUM(f.protocol_fee_collected_usd) * r.treasury_share as treasury_revenue_usd
SUM(f.protocol_fee_collected_usd) * r.treasury_share as treasury_fee_usd,
SUM(CASE WHEN f.fee_type = 'swap_fee' THEN f.protocol_fee_collected_usd
WHEN f.fee_type = 'yield_fee' THEN f.protocol_fee_collected_usd * 9 END)
AS lp_fee_collected_usd
FROM decorated_protocol_fee f
INNER JOIN revenue_share r
ON r.day = f.day
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,8 +25,12 @@ WITH
approx_percentile(median_price, 0.5) AS price,
sum(sample_size) AS sample_size
FROM {{ source('dex', 'prices') }}
WHERE
(('{{blockchain}}' = 'sonic' AND contract_address != 0x039e2fb66102314ce7b64ce5ce3e5183bc94ad38)
OR ('{{blockchain}}' = 'fantom' AND contract_address NOT IN (0xde1e704dae0b4051e80dabb26ab6ad6c12262da0, 0x5ddb92a5340fd0ead3987d3661afcd6104c3b757)))
AND blockchain = '{{blockchain}}'
{% if is_incremental() %}
WHERE {{ incremental_predicate('hour') }}
AND {{ incremental_predicate('hour') }}
{% endif %}
GROUP BY 1, 2
HAVING sum(sample_size) > 3
Expand Down Expand Up @@ -212,8 +216,12 @@ WITH
approx_percentile(median_price, 0.5) AS price,
sum(sample_size) AS sample_size
FROM {{ source('dex', 'prices') }}
WHERE
(('{{blockchain}}' = 'sonic' AND contract_address != 0x039e2fb66102314ce7b64ce5ce3e5183bc94ad38)
OR ('{{blockchain}}' = 'fantom' AND contract_address NOT IN (0xde1e704dae0b4051e80dabb26ab6ad6c12262da0, 0x5ddb92a5340fd0ead3987d3661afcd6104c3b757)))
AND blockchain = '{{blockchain}}'
{% if is_incremental() %}
WHERE {{ incremental_predicate('hour') }}
AND {{ incremental_predicate('hour') }}
{% endif %}
GROUP BY 1, 2
HAVING sum(sample_size) > 3
Expand Down Expand Up @@ -271,7 +279,7 @@ WITH
decimals,
APPROX_PERCENTILE(median_price, 0.5) AS price,
DATE_TRUNC ('day', next_change) AS next_change
FROM {{ ref('balancer_v3_erc4626_token_prices') }}
FROM {{ source('balancer_v3' , 'erc4626_token_prices') }}
WHERE blockchain = '{{blockchain}}'
GROUP BY 1, 2, 3, 5
),
Expand Down
2 changes: 1 addition & 1 deletion dbt_subprojects/daily_spellbook/README.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
## Daily Spellbook

This is a DBT sub project for the the main models of Spellbook that runs on a daily candence.
This is a DBT sub project for the main models of Spellbook that runs on a daily cadence.
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ WITH fantasy_configs AS (
, requiresWhitelist AS whitelist
, maxPacksPerAddress AS max_pack_per_address
, fixedPrice/POWER(10, 18) AS token_amount
, NULL AS traded_with
, CAST(NULL AS varbinary) AS traded_with
, paymentToken AS token_address
, maxPacks AS max_packs
, cardsPerPack AS cards_per_pack
Expand All @@ -30,7 +30,7 @@ WITH fantasy_configs AS (
, evt_tx_hash AS tx_hash
, evt_index
, contract_address
, NULL AS is_wash_trade
, CAST(NULL AS boolean) AS is_wash_trade
FROM {{ source('fantasy_blast', 'Minter_evt_NewMintConfig')}}
)

Expand All @@ -56,15 +56,15 @@ SELECT m.evt_block_time AS block_time
, m.firstTokenId+80, m.firstTokenId+81, m.firstTokenId+82, m.firstTokenId+83, m.firstTokenId+84, m.firstTokenId+85, m.firstTokenId+86, m.firstTokenId+87, m.firstTokenId+88, m.firstTokenId+89
, m.firstTokenId+90, m.firstTokenId+91, m.firstTokenId+92, m.firstTokenId+93, m.firstTokenId+94, m.firstTokenId+95, m.firstTokenId+96, m.firstTokenId+97, m.firstTokenId+98, m.firstTokenId+99
], x -> x <= lastTokenId) AS minted_ids
, NULL AS burned_ids
, NULL AS traded_ids
, NULL AS traded_with
, CAST(NULL AS ARRAY<UINT256>) AS burned_ids
, CAST(NULL AS DOUBLE) AS traded_ids
, CAST(NULL AS varbinary) AS traded_with
, m.evt_tx_from AS tx_from
, m.evt_tx_to AS tx_to
, m.evt_tx_hash AS tx_hash
, m.evt_tx_index AS tx_index
, m.contract_address
, NULL AS is_wash_trade
, CAST(NULL AS boolean) AS is_wash_trade
, 'WETH' AS token_symbol
, 0x4300000000000000000000000000000000000004 AS token_address
, m.price/POWER(10, 18) AS token_amount
Expand All @@ -88,21 +88,21 @@ SELECT evt_block_time AS block_time
, evt_block_date AS block_date
, 'Level Up' AS evt_type
, caller AS user_address
, NULL AS whitelist
, CAST(NULL AS boolean) AS whitelist
, collection
, CAST(1 AS double) AS cards_minted
, CAST(cardinality(burntTokenIds) AS double) AS cards_burned
, ARRAY[mintedTokenId] AS minted_ids
, burntTokenIds AS burned_ids
, NULL AS traded_ids
, NULL AS traded_with
, CAST(NULL AS DOUBLE) AS traded_ids
, CAST(NULL AS varbinary) AS traded_with
, evt_tx_from AS tx_from
, evt_tx_to AS tx_to
, evt_tx_hash AS tx_hash
, evt_tx_index AS tx_index
, contract_address
, NULL AS is_wash_trade
, NULL AS token_symbol
, CAST(NULL AS boolean) AS is_wash_trade
, CAST(NULL AS varchar) AS token_symbol
, CAST(NULL AS varbinary) AS token_address
, 0 AS token_amount
, 0 AS price_usd
Expand All @@ -121,21 +121,21 @@ SELECT evt_block_time AS block_time
, evt_block_date AS block_date
, 'Burn to Draw' AS evt_type
, caller AS user_address
, NULL AS whitelist
, CAST(NULL AS boolean) AS whitelist
, collection
, CAST(cardinality(mintedTokenIds) AS double) AS cards_minted
, CAST(cardinality(burntTokenIds) AS double) AS cards_burned
, mintedTokenIds AS minted_ids
, burntTokenIds AS burned_ids
, NULL AS traded_ids
, NULL AS traded_with
, CAST(NULL AS DOUBLE) AS traded_ids
, CAST(NULL AS varbinary) AS traded_with
, evt_tx_from AS tx_from
, evt_tx_to AS tx_to
, evt_tx_hash AS tx_hash
, evt_tx_index AS tx_index
, contract_address
, NULL AS is_wash_trade
, NULL AS token_symbol
, CAST(NULL AS boolean) AS is_wash_trade
, CAST(NULL AS varchar) AS token_symbol
, CAST(NULL AS varbinary) AS token_address
, 0 AS token_amount
, 0 AS price_usd
Expand All @@ -158,8 +158,8 @@ SELECT nftt.block_time
, nftt.nft_contract_address AS collection
, CAST(0 AS double) AS cards_minted
, CAST(0 AS double) AS cards_burned
, NULL AS minted_ids
, NULL AS burned_ids
, CAST(NULL AS ARRAY<UINT256>) AS minted_ids
, CAST(NULL AS ARRAY<UINT256>) AS burned_ids
, nftt.token_id AS traded_ids
, CASE WHEN nftt.trade_category='Buy' THEN nftt.seller ELSE nftt.buyer END AS traded_with
, nftt.tx_from
Expand Down Expand Up @@ -195,19 +195,19 @@ SELECT block_time
, 'Tactics Purchase' AS evt_type
, tx_from AS user_address
, false AS whitelist
, NULL AS collection
, CAST(NULL AS varbinary) AS collection
, CAST(0 AS double) AS cards_minted
, CAST(0 AS double) AS cards_burned
, NULL AS minted_ids
, NULL AS burned_ids
, NULL AS traded_ids
, NULL AS traded_with
, CAST(NULL AS ARRAY<UINT256>) AS minted_ids
, CAST(NULL AS ARRAY<UINT256>) AS burned_ids
, CAST(NULL AS DOUBLE) AS traded_ids
, CAST(NULL AS varbinary) AS traded_with
, tx_from
, tx_to
, tx_hash
, tx_index
, NULL AS contract_address
, NULL AS is_wash_trade
, CAST(NULL AS varbinary) AS contract_address
, CAST(NULL AS boolean) AS is_wash_trade
, symbol AS token_symbol
, contract_address AS token_address
, amount AS token_amount
Expand Down
Loading

0 comments on commit 814e5de

Please sign in to comment.