This commit is contained in:
Matt Romano 2026-01-26 18:00:02 -08:00 committed by GitHub
commit 91e3182b80
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
9 changed files with 152 additions and 102 deletions

View File

@ -273,7 +273,9 @@
},
'euler': {
'v1': {
'euler_origin_to_address': '0x7f321498a801a191a93c840750ed637149ddf8d0'
'euler_origin_to_address': ['0x7f321498a801a191a93c840750ed637149ddf8d0',
'0xd5e966db359f1cb2a01280fccbeb839ac572ce35',
'0xa76c7b314c310abb3fb7c68778c0c3369caf24fc']
},
},
'granary': {

View File

@ -261,7 +261,9 @@
},
'euler': {
'v1': {
'euler_origin_to_address': '0x7f53e2755eb3c43824e162f7f6f087832b9c9df6'
'euler_origin_to_address': ['0x7f53e2755eb3c43824e162f7f6f087832b9c9df6',
'0x5bb012482fa43c44a29168c6393657130fdf0506',
'0x3ba1566ed39f865baf4c1eb9ace53f3d2062be65']
}
},
'morpho': {

View File

@ -365,7 +365,11 @@
},
'euler': {
'v1': {
'euler_origin_to_address': '0x29a56a1b8214d9cf7c5561811750d5cbdb45cc8e'
'euler_origin_to_address': ['0x29a56a1b8214d9cf7c5561811750d5cbdb45cc8e',
'0xdd84a24eedde63f10ec3e928f1c8302a47538b6b',
'0xb5eb1d005e389bef38161691e2083b4d86ff647a',
'0x19a2b03446931e630c876119edc1ec8f7ca32e9e',
'0xf726311f85d45a7fecffbc94bd8508a0a39958c6']
}
},
'silo': {

View File

@ -0,0 +1,97 @@
{# Get variables #}
{% set vars = return_vars() %}
{# Log configuration details #}
{{ log_model_details() }}
{{ config(
materialized = 'incremental',
incremental_strategy = 'delete+insert',
unique_key = "block_number",
cluster_by = ['block_timestamp::DATE'],
tags = ['silver','defi','lending','curated','euler']
) }}
WITH token_meta AS (
SELECT
contract_address,
token_name,
token_symbol,
token_decimals,
underlying_address,
underlying_name,
underlying_symbol,
underlying_decimals,
protocol,
version,
dToken
FROM
{{ ref('silver_lending__euler_tokens') }}
),
base AS (
SELECT
tx_hash,
block_number,
block_timestamp,
event_index,
origin_from_address,
origin_to_address,
origin_function_signature,
contract_address,
regexp_substr_all(SUBSTR(DATA, 3, len(DATA)), '.{64}') AS segmented_data,
CONCAT('0x', SUBSTR(topics [1] :: STRING, 27, 40)) AS account,
utils.udf_hex_to_int(
segmented_data [0] :: STRING
) :: INTEGER AS interest_amount,
modified_timestamp,
CONCAT(
tx_hash :: STRING,
'-',
event_index :: STRING
) AS _log_id
FROM
{{ ref('core__fact_event_logs') }}
WHERE
topics [0] :: STRING = '0x5e804d42ae3b860f881d11cb44a4bb1f2f0d5b3d081f5539a32d6f97b629d978'
AND contract_address IN (
SELECT
DISTINCT(contract_address)
FROM
token_meta
)
{% if is_incremental() %}
AND modified_timestamp >= (
SELECT
MAX(modified_timestamp) - INTERVAL '{{ vars.CURATED_LOOKBACK_HOURS }}'
FROM
{{ this }}
)
AND modified_timestamp >= SYSDATE() - INTERVAL '{{ vars.CURATED_LOOKBACK_DAYS }}'
{% endif %}
AND tx_succeeded
)
SELECT
tx_hash,
block_number,
block_timestamp,
event_index,
origin_from_address,
origin_to_address,
origin_function_signature,
d.contract_address,
t.dToken AS protocol_market,
t.underlying_address AS token_address,
interest_amount AS amount_unadj,
account,
t.protocol || '-' || t.version AS platform,
t.protocol,
t.version,
d._log_id,
d.modified_timestamp,
'InterestAccrued' AS event_name
FROM
base d
LEFT JOIN token_meta t
ON d.contract_address = t.contract_address
QUALIFY (ROW_NUMBER() OVER (PARTITION BY d._log_id ORDER BY d.modified_timestamp DESC)) = 1

View File

@ -41,7 +41,6 @@ repay AS(
regexp_substr_all(SUBSTR(DATA, 3, len(DATA)), '.{64}') AS segmented_data,
contract_address AS market,
CONCAT('0x', SUBSTR(topics [1] :: STRING, 27, 40)) AS borrower_address,
CONCAT('0x', SUBSTR(topics [2] :: STRING, 27, 40)) AS repayer,
utils.udf_hex_to_int(
segmented_data [0] :: STRING
) :: INTEGER AS repayed_amount,
@ -55,7 +54,7 @@ repay AS(
FROM
{{ ref('core__fact_event_logs') }}
WHERE
topics [0] :: STRING = '0x4cdde6e09bb755c9a5589ebaec640bbfedff1362d4b255ebf8339782b9942faa'
topics [0] :: STRING = '0x5c16de4f8b59bd9caf0f49a545f25819a895ed223294290b408242e72a594231'
and contract_address in (
select
distinct(contract_address)

View File

@ -18,13 +18,13 @@ WITH morpho_blue_addresses AS (
),
traces AS (
SELECT
block_number,
tx_hash,
block_timestamp,
from_address,
to_address,
trace_index,
LEFT(
input,
10
@ -34,23 +34,16 @@ traces AS (
CONCAT('0x', SUBSTR(segmented_input [1] :: STRING, 25)) AS collateral_token,
CONCAT('0x', SUBSTR(segmented_input [2] :: STRING, 25)) AS oracle_address,
CONCAT('0x', SUBSTR(segmented_input [3] :: STRING, 25)) AS irm_address,
TRY_TO_NUMBER(
utils.udf_hex_to_int(
segmented_input [4] :: STRING
)
) AS lltv,
TRY_TO_NUMBER(
utils.udf_hex_to_int(
segmented_input [5] :: STRING
)
) AS amount,
TRY_TO_NUMBER(
utils.udf_hex_to_int(
segmented_input [6] :: STRING
)
) AS shares,
-- onBehalf address (borrower) from trace input
CONCAT('0x', SUBSTR(segmented_input [7] :: STRING, 25)) AS on_behalf_address,
CONCAT('0x', SUBSTR(segmented_input [8] :: STRING, 25)) AS receiver_address,
-- Get actual borrowed assets from trace OUTPUT (return value)
-- borrow() returns (uint256 assetsBorrowed, uint256 sharesBorrowed)
regexp_substr_all(SUBSTR(output, 3), '.{64}') AS segmented_output,
TRY_TO_NUMBER(
utils.udf_hex_to_int(
segmented_output [0] :: STRING
)
) AS borrow_assets,
concat_ws(
'-',
block_number,
@ -77,7 +70,7 @@ traces AS (
AND function_sig = '0x50d8cd4b'
AND trace_succeeded
AND tx_succeeded
AND block_timestamp >= '{{ vars.CURATED_START_TIMESTAMP }}'
AND block_timestamp >= '{{ vars.CURATED_START_TIMESTAMP }}'
{% if is_incremental() %}
AND modified_timestamp >= (
@ -88,28 +81,8 @@ AND modified_timestamp >= (
)
AND modified_timestamp >= SYSDATE() - INTERVAL '{{ vars.CURATED_LOOKBACK_DAYS }}'
{% endif %}
),
tx_join AS (
SELECT
block_number,
tx_hash,
block_timestamp,
origin_from_address,
origin_to_address,
origin_function_signature,
from_address,
to_address AS contract_address,
origin_from_address AS borrower_address,
loan_token,
collateral_token,
amount,
on_behalf_address,
receiver_address,
_call_id,
modified_timestamp
FROM
traces
)
SELECT
tx_hash,
block_number,
@ -117,18 +90,18 @@ SELECT
origin_from_address,
origin_to_address,
origin_function_signature,
t.contract_address,
to_address AS contract_address,
loan_token AS token_address,
amount AS amount_unadj,
t.contract_address AS protocol_market,
borrower_address AS borrower,
borrow_assets AS amount_unadj,
on_behalf_address AS borrower,
to_address AS protocol_market,
m.protocol || '-' || m.version AS platform,
m.protocol,
m.version,
t._call_id AS _id,
t.modified_timestamp,
_call_id AS _id,
modified_timestamp,
'Borrow' AS event_name
FROM
tx_join t
traces t
LEFT JOIN morpho_blue_addresses m
ON m.contract_address = t.contract_address
ON m.contract_address = t.to_address

View File

@ -99,7 +99,7 @@ tx_join AS (
origin_function_signature,
from_address,
to_address AS contract_address,
origin_from_address AS depositor_address,
on_behalf_address AS depositor_address,
loan_token,
collateral_token,
amount,

View File

@ -18,13 +18,13 @@ WITH morpho_blue_addresses AS (
),
traces AS (
SELECT
block_number,
tx_hash,
block_timestamp,
from_address,
to_address,
trace_index,
LEFT(
input,
10
@ -34,23 +34,16 @@ traces AS (
CONCAT('0x', SUBSTR(segmented_input [1] :: STRING, 25)) AS collateral_token,
CONCAT('0x', SUBSTR(segmented_input [2] :: STRING, 25)) AS oracle_address,
CONCAT('0x', SUBSTR(segmented_input [3] :: STRING, 25)) AS irm_address,
TRY_TO_NUMBER(
utils.udf_hex_to_int(
segmented_input [4] :: STRING
)
) AS lltv,
TRY_TO_NUMBER(
utils.udf_hex_to_int(
segmented_input [5] :: STRING
)
) AS amount,
TRY_TO_NUMBER(
utils.udf_hex_to_int(
segmented_input [6] :: STRING
)
) AS shares,
-- onBehalf address (borrower) from trace input
CONCAT('0x', SUBSTR(segmented_input [7] :: STRING, 25)) AS on_behalf_address,
CONCAT('0x', SUBSTR(segmented_input [8] :: STRING, 25)) AS receiver_address,
-- Get actual repaid assets from trace OUTPUT (return value)
-- repay() returns (uint256 assetsRepaid, uint256 sharesRepaid)
regexp_substr_all(SUBSTR(output, 3), '.{64}') AS segmented_output,
TRY_TO_NUMBER(
utils.udf_hex_to_int(
segmented_output [0] :: STRING
)
) AS repay_assets,
concat_ws(
'-',
block_number,
@ -77,7 +70,7 @@ traces AS (
AND function_sig = '0x20b76e81'
AND trace_succeeded
AND tx_succeeded
AND block_timestamp >= '{{ vars.CURATED_START_TIMESTAMP }}'
AND block_timestamp >= '{{ vars.CURATED_START_TIMESTAMP }}'
{% if is_incremental() %}
AND modified_timestamp >= (
@ -88,28 +81,8 @@ AND modified_timestamp >= (
)
AND modified_timestamp >= SYSDATE() - INTERVAL '{{ vars.CURATED_LOOKBACK_DAYS }}'
{% endif %}
),
tx_join AS (
SELECT
block_number,
tx_hash,
block_timestamp,
origin_from_address,
origin_to_address,
origin_function_signature,
from_address,
to_address AS contract_address,
origin_from_address AS borrower_address,
loan_token,
collateral_token,
amount,
on_behalf_address,
receiver_address,
_call_id,
modified_timestamp
FROM
traces
)
SELECT
tx_hash,
block_number,
@ -117,19 +90,19 @@ SELECT
origin_from_address,
origin_to_address,
origin_function_signature,
t.contract_address,
to_address AS contract_address,
loan_token AS token_address,
amount AS amount_unadj,
on_behalf_address AS payer,
borrower_address as borrower,
t.contract_address AS protocol_market,
repay_assets AS amount_unadj,
from_address AS payer,
on_behalf_address AS borrower,
to_address AS protocol_market,
m.protocol || '-' || m.version AS platform,
m.protocol,
m.version,
t._call_id AS _id,
t.modified_timestamp,
_call_id AS _id,
modified_timestamp,
'Repay' AS event_name
FROM
tx_join t
traces t
LEFT JOIN morpho_blue_addresses m
ON m.contract_address = t.contract_address
ON m.contract_address = t.to_address

View File

@ -99,7 +99,7 @@ tx_join AS (
origin_function_signature,
from_address,
to_address AS contract_address,
origin_from_address AS depositor_address,
on_behalf_address AS depositor_address,
loan_token,
collateral_token,
amount,