mirror of
https://github.com/FlipsideCrypto/fsc-evm.git
synced 2026-02-06 15:51:48 +00:00
morpho
This commit is contained in:
parent
7216dee783
commit
ce0c35d45b
@ -24,6 +24,7 @@
|
||||
'CURATED_DEFI_DEX_SWAPS_RECENCY_EXCLUSION_LIST': ['hashflow-v1','gmx-v1','woofi-v3','woofi-v1'],
|
||||
'CURATED_DEFI_DEX_LP_ACTIONS_RECENCY_EXCLUSION_LIST': ['trader_joe-v2','kyberswap-v1','kyberswap-v2','zyberswap-v2','fraxswap-v1'],
|
||||
'CURATED_DEFI_BRIDGE_RECENCY_EXCLUSION_LIST': ['hyperliquid-v1','across-v2','multichain-v7','symbiosis-v1','hop-v1','everclear-v1'],
|
||||
'CURATED_DEFI_TVL_MORPHO_BLUE_ADDRESS': '0x6c247b1f6182318877311737bac0844baa518f5e',
|
||||
'CURATED_DEFI_DEX_SWAPS_CONTRACT_MAPPING': {
|
||||
'uniswap': {
|
||||
'v2': {
|
||||
|
||||
@ -34,6 +34,7 @@
|
||||
'CURATED_DEFI_DEX_SWAPS_RECENCY_EXCLUSION_LIST': ['woofi-v3','woofi-v1','voodoo-v1'],
|
||||
'CURATED_DEFI_DEX_LP_ACTIONS_RECENCY_EXCLUSION_LIST': ['balancer-v1'],
|
||||
'CURATED_DEFI_BRIDGE_RECENCY_EXCLUSION_LIST': ['symbiosis-v1','hop-v1','across-v2'],
|
||||
'CURATED_DEFI_TVL_MORPHO_BLUE_ADDRESS': '0xbbbbbbbbbb9cc5e90e3b3af64bdaf62c37eeffcb',
|
||||
'CURATED_DEFI_DEX_SWAPS_CONTRACT_MAPPING': {
|
||||
'uniswap': {
|
||||
'v2': {
|
||||
|
||||
@ -28,6 +28,7 @@
|
||||
'CURATED_DEFI_LENDING_RECENCY_EXCLUSION_LIST': ['silo-v1','aave-v1','flux-v1','aave-v2','aave-v2.1','sturdy-v1','silo-v2'],
|
||||
'CURATED_DEFI_DEX_SWAPS_RECENCY_EXCLUSION_LIST': ['hashflow-v1','pancakeswap-v2','synthetix-v1','uniswap-v1'],
|
||||
'CURATED_DEFI_DEX_LP_ACTIONS_RECENCY_EXCLUSION_LIST': ['kyberswap-v2','uniswap-v1'],
|
||||
'CURATED_DEFI_TVL_MORPHO_BLUE_ADDRESS': '0xbbbbbbbbbb9cc5e90e3b3af64bdaf62c37eeffcb',
|
||||
'CURATED_DEFI_BRIDGE_RECENCY_EXCLUSION_LIST': ['ronin_axie_bridge-v1','multichain-v7','symbiosis-v1','axie_infinity-v2','across-v1','near_rainbow_bridge-v1','hop-v1','everclear-v1'],
|
||||
'CURATED_DEFI_DEX_SWAPS_CONTRACT_MAPPING': {
|
||||
'uniswap': {
|
||||
|
||||
@ -23,6 +23,7 @@
|
||||
'CURATED_DEFI_DEX_SWAPS_RECENCY_EXCLUSION_LIST': ['woofi-v1','hashflow-v1'],
|
||||
'CURATED_DEFI_DEX_LP_ACTIONS_RECENCY_EXCLUSION_LIST': ['fraxswap-v1','kyberswap-v2','sushiswap-v1','uniswap-v2'],
|
||||
'CURATED_DEFI_BRIDGE_RECENCY_EXCLUSION_LIST': ['eywa-v1','across-v2','meson-v1','symbiosis-v1','multichain-v7','hop-v1','everclear-v1'],
|
||||
'CURATED_DEFI_TVL_MORPHO_BLUE_ADDRESS': '0xce95afbb8ea029495c66020883f87aae8864af92',
|
||||
'CURATED_DEFI_DEX_SWAPS_CONTRACT_MAPPING': {
|
||||
'uniswap': {
|
||||
'v2': {
|
||||
|
||||
@ -25,6 +25,7 @@
|
||||
'CURATED_DEFI_DEX_SWAPS_RECENCY_EXCLUSION_LIST': ['woofi-v1','hashflow-v1'],
|
||||
'CURATED_DEFI_DEX_LP_ACTIONS_RECENCY_EXCLUSION_LIST': ['kyberswap-v2','curve-v1'],
|
||||
'CURATED_DEFI_BRIDGE_RECENCY_EXCLUSION_LIST': ['hop-v1','multichain-v7','symbiosis-v1','across-v2'],
|
||||
'CURATED_DEFI_TVL_MORPHO_BLUE_ADDRESS': '0x1bf0c2541f820e775182832f06c0b7fc27a25f67',
|
||||
'CURATED_DEFI_DEX_SWAPS_CONTRACT_MAPPING': {
|
||||
'uniswap': {
|
||||
'v2': {
|
||||
|
||||
@ -309,6 +309,9 @@
|
||||
|
||||
{# Curated Lending Variables #}
|
||||
{% set ns.CURATED_DEFI_LENDING_CONTRACT_MAPPING = get_var('CURATED_DEFI_LENDING_CONTRACT_MAPPING', {}) %}
|
||||
|
||||
{# Curated TVL Variables #}
|
||||
{% set ns.CURATED_DEFI_TVL_MORPHO_BLUE_ADDRESS = get_var('CURATED_DEFI_TVL_MORPHO_BLUE_ADDRESS', '') %}
|
||||
|
||||
{# Return the entire namespace as a dictionary #}
|
||||
{{ return(ns) }}
|
||||
|
||||
@ -0,0 +1,92 @@
|
||||
{# Get variables #}
|
||||
{% set vars = return_vars() %}
|
||||
{# Log configuration details #}
|
||||
{{ log_model_details() }}
|
||||
{{ config(
|
||||
materialized = 'incremental',
|
||||
incremental_strategy = 'delete+insert',
|
||||
unique_key = 'morpho_blue_v1_reads_id',
|
||||
tags = ['silver','contract_reads']
|
||||
) }}
|
||||
|
||||
WITH market_tokens AS (
|
||||
-- Get unique tokens from CreateMarket events
|
||||
|
||||
SELECT
|
||||
DISTINCT token_address
|
||||
FROM
|
||||
(
|
||||
-- Collateral tokens
|
||||
SELECT
|
||||
LOWER(
|
||||
decoded_log :marketParams :collateralToken :: STRING
|
||||
) AS token_address
|
||||
FROM
|
||||
{{ ref('core__ez_decoded_event_logs') }}
|
||||
WHERE
|
||||
contract_address = '{{ vars.CURATED_DEFI_TVL_MORPHO_BLUE_ADDRESS }}'
|
||||
AND event_name = 'CreateMarket'
|
||||
|
||||
{% if is_incremental() %}
|
||||
AND modified_timestamp > (
|
||||
SELECT
|
||||
MAX(modified_timestamp)
|
||||
FROM
|
||||
{{ this }}
|
||||
)
|
||||
{% endif %}
|
||||
UNION
|
||||
-- Loan tokens
|
||||
SELECT
|
||||
LOWER(
|
||||
decoded_log :marketParams :loanToken :: STRING
|
||||
) AS token_address
|
||||
FROM
|
||||
{{ ref('core__ez_decoded_event_logs') }}
|
||||
WHERE
|
||||
contract_address = '{{ vars.CURATED_DEFI_TVL_MORPHO_BLUE_ADDRESS }}'
|
||||
AND event_name = 'CreateMarket'
|
||||
|
||||
{% if is_incremental() %}
|
||||
AND modified_timestamp > (
|
||||
SELECT
|
||||
MAX(modified_timestamp)
|
||||
FROM
|
||||
{{ this }}
|
||||
)
|
||||
{% endif %}
|
||||
)
|
||||
WHERE
|
||||
token_address <> '0x0000000000000000000000000000000000000000'
|
||||
AND token_address IS NOT NULL
|
||||
)
|
||||
SELECT
|
||||
token_address AS contract_address,
|
||||
'{{ vars.CURATED_DEFI_TVL_MORPHO_BLUE_ADDRESS }}' AS address,
|
||||
'balanceOf' AS function_name,
|
||||
'0x70a08231' AS function_sig,
|
||||
CONCAT(
|
||||
'0x70a08231',
|
||||
LPAD(
|
||||
SUBSTR(
|
||||
'{{ vars.CURATED_DEFI_TVL_MORPHO_BLUE_ADDRESS }}',
|
||||
3
|
||||
),
|
||||
64,
|
||||
'0'
|
||||
)
|
||||
) AS input,
|
||||
NULL::VARIANT AS metadata,
|
||||
'morpho' AS protocol,
|
||||
'v1' AS version,
|
||||
CONCAT(
|
||||
protocol,
|
||||
'-',
|
||||
version
|
||||
) AS platform,
|
||||
{{ dbt_utils.generate_surrogate_key(['contract_address','address','input','platform']) }} AS morpho_blue_v1_reads_id,
|
||||
SYSDATE() AS inserted_timestamp,
|
||||
SYSDATE() AS modified_timestamp,
|
||||
'{{ invocation_id }}' AS _invocation_id
|
||||
FROM
|
||||
market_tokens
|
||||
@ -40,6 +40,7 @@
|
||||
{% set _ = models.append((ref('silver_reads__curve_v1_reads'), 'daily')) %}
|
||||
{% set _ = models.append((ref('silver_reads__tornado_cash_v1_reads'), 'daily')) %}
|
||||
{% set _ = models.append((ref('silver_reads__etherfi_v1_reads'), 'daily')) %}
|
||||
{% set _ = models.append((ref('silver_reads__morpho_blue_v1_reads'), 'daily')) %}
|
||||
|
||||
WITH all_records AS (
|
||||
{% for model, type in models %}
|
||||
|
||||
@ -78,7 +78,8 @@ strategy_tvl AS (
|
||||
CASE WHEN s.result_hex IS NOT NULL
|
||||
THEN TRY_CAST(utils.udf_hex_to_int(RTRIM(s.result_hex, '0')) AS BIGINT) END
|
||||
) AS amount_raw,
|
||||
'strategy' AS component
|
||||
'strategy' AS component,
|
||||
s._inserted_timestamp
|
||||
FROM {{ ref('silver__contract_reads') }} s
|
||||
LEFT JOIN {{ ref('silver__contract_reads') }} t
|
||||
ON s.contract_address = t.contract_address
|
||||
|
||||
@ -2,40 +2,47 @@
|
||||
{% set vars = return_vars() %}
|
||||
{# Log configuration details #}
|
||||
{{ log_model_details() }}
|
||||
|
||||
{{ config(
|
||||
materialized = 'incremental',
|
||||
incremental_strategy = 'delete+insert',
|
||||
unique_key = 'ethena_v1_tvl_id',
|
||||
tags = ['silver','defi','tvl','curated_daily']
|
||||
) }}
|
||||
|
||||
-- Ethena TVL: totalSupply of USDe (sourced from stablecoins reads)
|
||||
-- USDe: 0x4c9edd5852cd905f086c759e8383e09bff1e68b3
|
||||
|
||||
WITH reads AS (
|
||||
|
||||
SELECT
|
||||
block_number,
|
||||
block_date,
|
||||
contract_address,
|
||||
result_hex AS amount_hex,
|
||||
IFNULL(
|
||||
CASE WHEN LENGTH(result_hex) <= 4300 AND result_hex IS NOT NULL
|
||||
THEN TRY_CAST(utils.udf_hex_to_int(result_hex) AS BIGINT) END,
|
||||
CASE WHEN result_hex IS NOT NULL
|
||||
THEN TRY_CAST(utils.udf_hex_to_int(RTRIM(result_hex, '0')) AS BIGINT) END
|
||||
) AS amount_raw,
|
||||
modified_timestamp
|
||||
FROM {{ ref('silver__contract_reads') }}
|
||||
WHERE platform = 'stablecoins-v1'
|
||||
AND function_name = 'totalSupply'
|
||||
AND LOWER(contract_address) = LOWER('0x4c9edd5852cd905f086c759e8383e09bff1e68b3') -- USDe
|
||||
AND result_hex IS NOT NULL
|
||||
CASE
|
||||
WHEN LENGTH(result_hex) <= 4300
|
||||
AND result_hex IS NOT NULL THEN TRY_CAST(utils.udf_hex_to_int(result_hex) AS bigint)END,
|
||||
CASE
|
||||
WHEN result_hex IS NOT NULL THEN TRY_CAST(utils.udf_hex_to_int(RTRIM(result_hex, '0')) AS bigint)
|
||||
END
|
||||
) AS amount_raw,
|
||||
_inserted_timestamp
|
||||
FROM
|
||||
{{ ref('silver__contract_reads') }}
|
||||
WHERE
|
||||
platform = 'stablecoins-v1'
|
||||
AND function_name = 'totalSupply'
|
||||
AND LOWER(contract_address) = LOWER('0x4c9edd5852cd905f086c759e8383e09bff1e68b3') -- USDe
|
||||
AND result_hex IS NOT NULL
|
||||
|
||||
{% if is_incremental() %}
|
||||
AND modified_timestamp > (SELECT MAX(modified_timestamp) FROM {{ this }})
|
||||
AND modified_timestamp > (
|
||||
SELECT
|
||||
MAX(modified_timestamp)
|
||||
FROM
|
||||
{{ this }}
|
||||
)
|
||||
{% endif %}
|
||||
)
|
||||
|
||||
SELECT
|
||||
block_number,
|
||||
block_date,
|
||||
@ -46,11 +53,21 @@ SELECT
|
||||
amount_raw,
|
||||
'ethena' AS protocol,
|
||||
'v1' AS version,
|
||||
'ethena-v1' AS platform,
|
||||
{{ dbt_utils.generate_surrogate_key(['block_date','contract_address']) }} AS ethena_v1_tvl_id,
|
||||
CONCAT(
|
||||
protocol,
|
||||
'-',
|
||||
version
|
||||
) AS platform,
|
||||
{{ dbt_utils.generate_surrogate_key(['block_date','contract_address','platform']) }} AS ethena_v1_tvl_id,
|
||||
SYSDATE() AS inserted_timestamp,
|
||||
SYSDATE() AS modified_timestamp,
|
||||
'{{ invocation_id }}' AS _invocation_id
|
||||
FROM reads
|
||||
WHERE amount_raw IS NOT NULL AND amount_raw > 0
|
||||
QUALIFY ROW_NUMBER() OVER (PARTITION BY ethena_v1_tvl_id ORDER BY modified_timestamp DESC) = 1
|
||||
FROM
|
||||
reads
|
||||
WHERE
|
||||
amount_raw IS NOT NULL
|
||||
AND amount_raw > 0 qualify ROW_NUMBER() over (
|
||||
PARTITION BY ethena_v1_tvl_id
|
||||
ORDER BY
|
||||
modified_timestamp DESC
|
||||
) = 1
|
||||
|
||||
@ -0,0 +1,71 @@
|
||||
{# Get variables #}
|
||||
{% set vars = return_vars() %}
|
||||
{# Log configuration details #}
|
||||
{{ log_model_details() }}
|
||||
{{ config(
|
||||
materialized = 'incremental',
|
||||
incremental_strategy = 'delete+insert',
|
||||
unique_key = 'morpho_blue_v1_tvl_id',
|
||||
tags = ['silver','defi','tvl','curated_daily']
|
||||
) }}
|
||||
|
||||
WITH reads AS (
|
||||
|
||||
SELECT
|
||||
block_number,
|
||||
block_date,
|
||||
contract_address,
|
||||
address,
|
||||
result_hex AS amount_hex,
|
||||
IFNULL(
|
||||
CASE
|
||||
WHEN LENGTH(result_hex) <= 4300
|
||||
AND result_hex IS NOT NULL THEN TRY_CAST(utils.udf_hex_to_int(result_hex) AS bigint)END,
|
||||
CASE
|
||||
WHEN result_hex IS NOT NULL THEN TRY_CAST(utils.udf_hex_to_int(RTRIM(result_hex, '0')) AS bigint)
|
||||
END
|
||||
) AS amount_raw,
|
||||
protocol,
|
||||
version,
|
||||
platform,
|
||||
_inserted_timestamp
|
||||
FROM
|
||||
{{ ref('silver__contract_reads') }}
|
||||
WHERE
|
||||
platform = 'morpho-v1'
|
||||
AND function_name = 'balanceOf'
|
||||
AND result_hex IS NOT NULL
|
||||
|
||||
{% if is_incremental() %}
|
||||
AND modified_timestamp > (
|
||||
SELECT
|
||||
MAX(modified_timestamp)
|
||||
FROM
|
||||
{{ this }}
|
||||
)
|
||||
{% endif %}
|
||||
)
|
||||
SELECT
|
||||
block_number,
|
||||
block_date,
|
||||
contract_address,
|
||||
address,
|
||||
contract_address AS token_address,
|
||||
amount_hex,
|
||||
amount_raw,
|
||||
protocol,
|
||||
version,
|
||||
platform,
|
||||
{{ dbt_utils.generate_surrogate_key(['block_date','contract_address','address','platform']) }} AS morpho_blue_v1_tvl_id,
|
||||
SYSDATE() AS inserted_timestamp,
|
||||
SYSDATE() AS modified_timestamp,
|
||||
'{{ invocation_id }}' AS _invocation_id
|
||||
FROM
|
||||
reads
|
||||
WHERE
|
||||
amount_raw IS NOT NULL
|
||||
AND amount_raw > 0 qualify ROW_NUMBER() over (
|
||||
PARTITION BY morpho_blue_v1_tvl_id
|
||||
ORDER BY
|
||||
modified_timestamp DESC
|
||||
) = 1
|
||||
@ -0,0 +1,4 @@
|
||||
version: 2
|
||||
models:
|
||||
- name: silver_tvl__morpho_blue_v1_tvl
|
||||
description: '{{ doc("morpho_blue_v1_tvl_table_doc") }}'
|
||||
@ -29,7 +29,8 @@
|
||||
(ref('silver_tvl__uniswap_v1_tvl'), 9, 'uniswap-v1'),
|
||||
(ref('silver_tvl__uniswap_v2_tvl'), 9, 'uniswap-v2'),
|
||||
(ref('silver_tvl__uniswap_v3_tvl'), 9, 'uniswap-v3'),
|
||||
(ref('silver_tvl__uniswap_v4_tvl'), 9, 'uniswap-v4')
|
||||
(ref('silver_tvl__uniswap_v4_tvl'), 9, 'uniswap-v4'),
|
||||
(ref('silver_tvl__morpho_blue_v1_tvl'), 12, 'morpho-v1')
|
||||
] %}
|
||||
|
||||
WITH all_tvl AS (
|
||||
|
||||
@ -113,6 +113,13 @@ Sums (1) native ETH restaked via EigenPods by matching PodDeployed events with b
|
||||
{% docs ethena_v1_tvl_table_doc %}
|
||||
|
||||
Methodology:
|
||||
totalSupply of USDe (synthetic dollar)
|
||||
Total supply of USDe (synthetic dollar)
|
||||
|
||||
{% enddocs %}
|
||||
|
||||
{% docs morpho_blue_v1_tvl_table_doc %}
|
||||
|
||||
Methodology:
|
||||
Sums balanceOf each unique token (collateralToken + loanToken from CreateMarket events) held by the MorphoBlue singleton contract
|
||||
|
||||
{% enddocs %}
|
||||
Loading…
Reference in New Issue
Block a user