-
Notifications
You must be signed in to change notification settings - Fork 1.2k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Gains Network Perpetual for Base #7437
Changes from 7 commits
f7b5456
777f363
6216316
3e488f6
8866b1f
8be9700
de709c8
7a7d4b0
885b4b5
078ecb7
ed903c2
98e7a2a
5bd8bfb
41180e3
bd81594
2a9d4c6
5f3f43f
b2a1149
d5a3be9
cb81ee0
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change | ||||||||
---|---|---|---|---|---|---|---|---|---|---|
@@ -0,0 +1,46 @@ | ||||||||||
{{ config( | ||||||||||
schema = 'gains_network_perpetual_trades', | ||||||||||
alias = 'perpetual_trades', | ||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Please fix the schema:
Suggested change
|
||||||||||
post_hook='{{ expose_spells(\'["base"]\', | ||||||||||
Hosuke marked this conversation as resolved.
Show resolved
Hide resolved
|
||||||||||
spell_type = "project", | ||||||||||
spell_name = "gains_network", | ||||||||||
contributors = \'["princi"]\') }}' | ||||||||||
) | ||||||||||
}} | ||||||||||
|
||||||||||
{% set gains_network_base_perpetual_trade_models = [ | ||||||||||
ref('gains_network_v1_base_perpetual_trades') | ||||||||||
] %} | ||||||||||
|
||||||||||
SELECT * | ||||||||||
FROM | ||||||||||
( | ||||||||||
{% for gains_network_perpetual_trades in gains_network_base_perpetual_trade_models %} | ||||||||||
SELECT | ||||||||||
blockchain | ||||||||||
,block_date | ||||||||||
,block_month | ||||||||||
,block_time | ||||||||||
,virtual_asset | ||||||||||
PatelPrinci marked this conversation as resolved.
Show resolved
Hide resolved
|
||||||||||
,underlying_asset | ||||||||||
,market | ||||||||||
,market_address | ||||||||||
,volume_usd | ||||||||||
,fee_usd | ||||||||||
,margin_usd | ||||||||||
,trade | ||||||||||
,project | ||||||||||
,version | ||||||||||
,frontend | ||||||||||
,trader | ||||||||||
,volume_raw | ||||||||||
,tx_hash | ||||||||||
,tx_from | ||||||||||
,tx_to | ||||||||||
,evt_index | ||||||||||
FROM {{ gains_network_perpetual_trades }} | ||||||||||
{% if not loop.last %} | ||||||||||
UNION ALL | ||||||||||
{% endif %} | ||||||||||
{% endfor %} | ||||||||||
) |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,76 @@ | ||
version: 2 | ||
|
||
models: | ||
- name: gains_network_v1_base_perpetual_trades | ||
Hosuke marked this conversation as resolved.
Show resolved
Hide resolved
|
||
meta: | ||
blockchain: base | ||
sector: perpetual | ||
contributors: princi | ||
config: | ||
tags: ['base', 'perpetuals', 'perps', 'gains_network','cross-chain'] | ||
description: > | ||
Perpetual swaps/trades table on gains_network protocol across blockchains | ||
columns: | ||
PatelPrinci marked this conversation as resolved.
Show resolved
Hide resolved
|
||
- &blockchain | ||
name: blockchain | ||
description: "Blockchain where the perpetuals market is deployed" | ||
- &block_date | ||
name: block_date | ||
description: "Date of the transaction" | ||
- &block_time | ||
name: block_time | ||
description: "Time of the transaction" | ||
- &virtual_asset | ||
name: virtual_asset | ||
description: "How the protocol represents the underlying asset" | ||
- &underlying_asset | ||
name: underlying_asset | ||
description: "The real underlying asset that is represented in the swap" | ||
- &market | ||
name: market | ||
description: "The futures market involved in the transaction" | ||
- &market_address | ||
name: market_address | ||
description: "Contract address of the market" | ||
- &volume_usd | ||
name: volume_usd | ||
description: "The size of the position taken for the swap in USD; already in absolute value and decimal normalized" | ||
- &fee_usd | ||
name: fee_usd | ||
description: "The fees charged to the user for the swap in USD" | ||
- &margin_usd | ||
name: margin_usd | ||
description: "The amount of collateral/margin used in a trade in USD" | ||
- &trade | ||
name: trade | ||
description: "Indicates the trade's direction whether a short, long, of if a position is being closed" | ||
- &project | ||
name: project | ||
description: "The underlying protocol/project where the swap took place" | ||
- &version | ||
name: version | ||
description: "The version of the protocol/project" | ||
- &frontend | ||
name: frontend | ||
description: "The frontend protocol/project where the specific swap was executed; built on top of the 'project' and defaults to the 'project' if no other frontend is specified" | ||
- &trader | ||
name: trader | ||
description: "The address which made the swap in the protocol" | ||
- &volume_raw | ||
name: volume_raw | ||
description: "The size of the position in raw form" | ||
- &tx_hash | ||
name: tx_hash | ||
description: "The hash of the transaction" | ||
- &tx_from | ||
name: tx_from | ||
description: "The address that originated the transaction; based on the base.transactions table" | ||
- &tx_to | ||
name: tx_to | ||
description: "The address receiving the transaction; based on the base.transactions table" | ||
- &evt_index | ||
name: evt_index | ||
description: "Event index number" | ||
- &block_month | ||
name: block_month | ||
description: "Month of the transaction" |
Original file line number | Diff line number | Diff line change | ||||
---|---|---|---|---|---|---|
@@ -0,0 +1,198 @@ | ||||||
{{ config( | ||||||
schema = 'gains_network_base', | ||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
|
||||||
alias = 'perpetual_trades', | ||||||
partition_by = ['block_month'], | ||||||
materialized = 'incremental', | ||||||
file_format = 'delta', | ||||||
incremental_strategy = 'merge', | ||||||
Hosuke marked this conversation as resolved.
Show resolved
Hide resolved
|
||||||
unique_key = ['block_date', 'blockchain', 'project', 'version', 'tx_hash', 'evt_index'], | ||||||
post_hook='{{ expose_spells(\'["base"]\', | ||||||
spell_type = "project", | ||||||
spell_name = "gains_network", | ||||||
contributors = \'["princi"]\') }}' | ||||||
) | ||||||
}} | ||||||
|
||||||
-- {% set project_start_date = '2024-01-01' %} | ||||||
|
||||||
WITH position_changes AS ( | ||||||
-- Position Size Decreases | ||||||
SELECT | ||||||
evt_block_time, | ||||||
evt_block_number, | ||||||
evt_tx_hash, | ||||||
evt_tx_from, | ||||||
evt_tx_to, | ||||||
evt_index, | ||||||
contract_address, | ||||||
trader, | ||||||
pairIndex, | ||||||
long, | ||||||
collateralDelta, | ||||||
collateralPriceUsd, | ||||||
oraclePrice, | ||||||
leverageDelta, | ||||||
"values" as value_data, | ||||||
'decrease' as action | ||||||
FROM {{source('gains_network_base','GNSMultiCollatDiamond_evt_PositionSizeDecreaseExecuted')}} | ||||||
Hosuke marked this conversation as resolved.
Show resolved
Hide resolved
|
||||||
|
||||||
UNION ALL | ||||||
|
||||||
-- Position Size Increases | ||||||
SELECT | ||||||
evt_block_time, | ||||||
evt_block_number, | ||||||
evt_tx_hash, | ||||||
evt_tx_from, | ||||||
evt_tx_to, | ||||||
evt_index, | ||||||
contract_address, | ||||||
trader, | ||||||
pairIndex, | ||||||
long, | ||||||
collateralDelta, | ||||||
collateralPriceUsd, | ||||||
oraclePrice, | ||||||
leverageDelta, | ||||||
"values" as value_data, | ||||||
'increase' as action | ||||||
FROM {{ source('gains_network_base','GNSMultiCollatDiamond_evt_PositionSizeIncreaseExecuted')}} | ||||||
Hosuke marked this conversation as resolved.
Show resolved
Hide resolved
|
||||||
), | ||||||
|
||||||
perps AS ( | ||||||
SELECT | ||||||
evt_block_time AS block_time, | ||||||
evt_block_number AS block_number, | ||||||
CASE pairIndex | ||||||
WHEN 0 THEN 'BTC-USD' | ||||||
WHEN 1 THEN 'ETH-USD' | ||||||
WHEN 2 THEN 'LINK-USD' | ||||||
WHEN 3 THEN 'DOGE-USD' | ||||||
WHEN 4 THEN 'MATIC-USD' | ||||||
WHEN 5 THEN 'ADA-USD' | ||||||
WHEN 6 THEN 'SUSHI-USD' | ||||||
WHEN 7 THEN 'AAVE-USD' | ||||||
WHEN 8 THEN 'ALGO-USD' | ||||||
WHEN 9 THEN 'BAT-USD' | ||||||
WHEN 10 THEN 'COMP-USD' | ||||||
WHEN 11 THEN 'DOT-USD' | ||||||
WHEN 12 THEN 'EOS-USD' | ||||||
WHEN 13 THEN 'LTC-USD' | ||||||
WHEN 14 THEN 'MANA-USD' | ||||||
WHEN 15 THEN 'OMG-USD' | ||||||
WHEN 16 THEN 'SNX-USD' | ||||||
WHEN 17 THEN 'UNI-USD' | ||||||
WHEN 18 THEN 'XLM-USD' | ||||||
WHEN 19 THEN 'XRP-USD' | ||||||
WHEN 20 THEN 'ZEC-USD' | ||||||
WHEN 31 THEN 'LUNA-USD' | ||||||
WHEN 32 THEN 'YFI-USD' | ||||||
WHEN 33 THEN 'SOL-USD' | ||||||
ELSE CONCAT('pair_index_', CAST(pairIndex as VARCHAR)) | ||||||
END AS virtual_asset, | ||||||
|
||||||
CASE pairIndex | ||||||
WHEN 0 THEN 'BTC-USD' | ||||||
WHEN 1 THEN 'ETH-USD' | ||||||
WHEN 2 THEN 'LINK-USD' | ||||||
WHEN 3 THEN 'DOGE-USD' | ||||||
WHEN 4 THEN 'MATIC-USD' | ||||||
WHEN 5 THEN 'ADA-USD' | ||||||
WHEN 6 THEN 'SUSHI-USD' | ||||||
WHEN 7 THEN 'AAVE-USD' | ||||||
WHEN 8 THEN 'ALGO-USD' | ||||||
WHEN 9 THEN 'BAT-USD' | ||||||
WHEN 10 THEN 'COMP-USD' | ||||||
WHEN 11 THEN 'DOT-USD' | ||||||
WHEN 12 THEN 'EOS-USD' | ||||||
WHEN 13 THEN 'LTC-USD' | ||||||
WHEN 14 THEN 'MANA-USD' | ||||||
WHEN 15 THEN 'OMG-USD' | ||||||
WHEN 16 THEN 'SNX-USD' | ||||||
WHEN 17 THEN 'UNI-USD' | ||||||
WHEN 18 THEN 'XLM-USD' | ||||||
WHEN 19 THEN 'XRP-USD' | ||||||
WHEN 20 THEN 'ZEC-USD' | ||||||
WHEN 31 THEN 'LUNA-USD' | ||||||
WHEN 32 THEN 'YFI-USD' | ||||||
WHEN 33 THEN 'SOL-USD' | ||||||
ELSE CONCAT('pair_index_', CAST(pairIndex as VARCHAR)) | ||||||
END AS underlying_asset, | ||||||
|
||||||
CASE pairIndex | ||||||
WHEN 0 THEN 'BTC-USD' | ||||||
WHEN 1 THEN 'ETH-USD' | ||||||
WHEN 2 THEN 'LINK-USD' | ||||||
WHEN 3 THEN 'DOGE-USD' | ||||||
WHEN 4 THEN 'MATIC-USD' | ||||||
WHEN 5 THEN 'ADA-USD' | ||||||
WHEN 6 THEN 'SUSHI-USD' | ||||||
WHEN 7 THEN 'AAVE-USD' | ||||||
WHEN 8 THEN 'ALGO-USD' | ||||||
WHEN 9 THEN 'BAT-USD' | ||||||
WHEN 10 THEN 'COMP-USD' | ||||||
WHEN 11 THEN 'DOT-USD' | ||||||
WHEN 12 THEN 'EOS-USD' | ||||||
WHEN 13 THEN 'LTC-USD' | ||||||
WHEN 14 THEN 'MANA-USD' | ||||||
WHEN 15 THEN 'OMG-USD' | ||||||
WHEN 16 THEN 'SNX-USD' | ||||||
WHEN 17 THEN 'UNI-USD' | ||||||
WHEN 18 THEN 'XLM-USD' | ||||||
WHEN 19 THEN 'XRP-USD' | ||||||
WHEN 20 THEN 'ZEC-USD' | ||||||
WHEN 31 THEN 'LUNA-USD' | ||||||
WHEN 32 THEN 'YFI-USD' | ||||||
WHEN 33 THEN 'SOL-USD' | ||||||
ELSE CONCAT('pair_index_', CAST(pairIndex as VARCHAR)) | ||||||
END AS market, | ||||||
|
||||||
contract_address AS market_address, | ||||||
(collateralDelta * collateralPriceUsd * leverageDelta) / 1e36 AS volume_usd, | ||||||
CAST(JSON_EXTRACT(value_data, '$.vaultFeeCollateral') AS double) / 1e18 AS fee_usd, -- Changed to JSON_EXTRACT | ||||||
collateralDelta / 1e18 AS margin_usd, | ||||||
|
||||||
CASE | ||||||
WHEN action = 'increase' AND long = true THEN 'long' | ||||||
WHEN action = 'increase' AND long = false THEN 'short' | ||||||
WHEN action = 'decrease' AND long = true THEN 'close_long' | ||||||
WHEN action = 'decrease' AND long = false THEN 'close_short' | ||||||
END AS trade, | ||||||
|
||||||
'gains_network' AS project, | ||||||
'1' AS version, | ||||||
'gains_network' AS frontend, | ||||||
trader, | ||||||
collateralDelta * leverageDelta AS volume_raw, | ||||||
evt_tx_hash AS tx_hash, | ||||||
evt_index | ||||||
FROM position_changes | ||||||
) | ||||||
|
||||||
SELECT | ||||||
'base' AS blockchain, | ||||||
CAST(date_trunc('DAY', perps.block_time) AS date) AS block_date, | ||||||
CAST(date_trunc('MONTH', perps.block_time) AS date) AS block_month, | ||||||
perps.block_time, | ||||||
perps.virtual_asset, | ||||||
perps.underlying_asset, | ||||||
perps.market, | ||||||
perps.market_address, | ||||||
perps.volume_usd, | ||||||
perps.fee_usd, | ||||||
perps.margin_usd, | ||||||
perps.trade, | ||||||
perps.project, | ||||||
perps.version, | ||||||
perps.frontend, | ||||||
perps.trader, | ||||||
CAST(perps.volume_raw as UINT256) as volume_raw, | ||||||
perps.tx_hash, | ||||||
tx."from" AS tx_from, | ||||||
tx."to" AS tx_to, | ||||||
perps.evt_index | ||||||
FROM perps | ||||||
INNER JOIN {{ source('base', 'transactions') }} AS tx | ||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. We can make a |
||||||
ON perps.tx_hash = tx.hash | ||||||
AND perps.block_number = tx.block_number | ||||||
AND tx.block_time >= DATE '2024-01-01' |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,10 @@ | ||
version: 2 | ||
|
||
sources: | ||
- name: gains_network_base | ||
description: base decoded tables related to Gains Network | ||
tables: | ||
- name: GNSMultiCollatDiamond_evt_PositionSizeIncreaseExecuted | ||
description: "Details the new positions opened" | ||
- name: GNSMultiCollatDiamond_evt_PositionSizeDecreaseExecuted | ||
description: "Details the swaps to close existing positions" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Please rename this file to match
schema
+alias
:gains_network_perpetual_trades.sql