diff --git a/macros/global/variables/project_vars/base_vars.sql b/macros/global/variables/project_vars/base_vars.sql index ca806547..d90d1b56 100644 --- a/macros/global/variables/project_vars/base_vars.sql +++ b/macros/global/variables/project_vars/base_vars.sql @@ -273,7 +273,9 @@ }, 'euler': { 'v1': { - 'euler_origin_to_address': '0x7f321498a801a191a93c840750ed637149ddf8d0' + 'euler_origin_to_address': ['0x7f321498a801a191a93c840750ed637149ddf8d0', + '0xd5e966db359f1cb2a01280fccbeb839ac572ce35', + '0xa76c7b314c310abb3fb7c68778c0c3369caf24fc'] }, }, 'granary': { diff --git a/macros/global/variables/project_vars/bsc_vars.sql b/macros/global/variables/project_vars/bsc_vars.sql index 596aa39d..4698df58 100644 --- a/macros/global/variables/project_vars/bsc_vars.sql +++ b/macros/global/variables/project_vars/bsc_vars.sql @@ -261,7 +261,9 @@ }, 'euler': { 'v1': { - 'euler_origin_to_address': '0x7f53e2755eb3c43824e162f7f6f087832b9c9df6' + 'euler_origin_to_address': ['0x7f53e2755eb3c43824e162f7f6f087832b9c9df6', + '0x5bb012482fa43c44a29168c6393657130fdf0506', + '0x3ba1566ed39f865baf4c1eb9ace53f3d2062be65'] } }, 'morpho': { diff --git a/macros/global/variables/project_vars/ethereum_vars.sql b/macros/global/variables/project_vars/ethereum_vars.sql index 3635b447..102f47d7 100644 --- a/macros/global/variables/project_vars/ethereum_vars.sql +++ b/macros/global/variables/project_vars/ethereum_vars.sql @@ -365,7 +365,11 @@ }, 'euler': { 'v1': { - 'euler_origin_to_address': '0x29a56a1b8214d9cf7c5561811750d5cbdb45cc8e' + 'euler_origin_to_address': ['0x29a56a1b8214d9cf7c5561811750d5cbdb45cc8e', + '0xdd84a24eedde63f10ec3e928f1c8302a47538b6b', + '0xb5eb1d005e389bef38161691e2083b4d86ff647a', + '0x19a2b03446931e630c876119edc1ec8f7ca32e9e', + '0xf726311f85d45a7fecffbc94bd8508a0a39958c6'] } }, 'silo': { diff --git a/models/curated_package/defi/lending/silver/protocols/euler/silver_lending__euler_interest_accrued.sql b/models/curated_package/defi/lending/silver/protocols/euler/silver_lending__euler_interest_accrued.sql new file mode 100644 index 00000000..2d778ba0 --- /dev/null +++ b/models/curated_package/defi/lending/silver/protocols/euler/silver_lending__euler_interest_accrued.sql @@ -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 diff --git a/models/curated_package/defi/lending/silver/protocols/euler/silver_lending__euler_repayments.sql b/models/curated_package/defi/lending/silver/protocols/euler/silver_lending__euler_repayments.sql index a7aa3675..f773fb66 100644 --- a/models/curated_package/defi/lending/silver/protocols/euler/silver_lending__euler_repayments.sql +++ b/models/curated_package/defi/lending/silver/protocols/euler/silver_lending__euler_repayments.sql @@ -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) diff --git a/models/curated_package/defi/lending/silver/protocols/morpho/silver_lending__morpho_borrows.sql b/models/curated_package/defi/lending/silver/protocols/morpho/silver_lending__morpho_borrows.sql index aa62fa47..00beddd5 100644 --- a/models/curated_package/defi/lending/silver/protocols/morpho/silver_lending__morpho_borrows.sql +++ b/models/curated_package/defi/lending/silver/protocols/morpho/silver_lending__morpho_borrows.sql @@ -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 diff --git a/models/curated_package/defi/lending/silver/protocols/morpho/silver_lending__morpho_deposits.sql b/models/curated_package/defi/lending/silver/protocols/morpho/silver_lending__morpho_deposits.sql index 60d2f410..715fc6c5 100644 --- a/models/curated_package/defi/lending/silver/protocols/morpho/silver_lending__morpho_deposits.sql +++ b/models/curated_package/defi/lending/silver/protocols/morpho/silver_lending__morpho_deposits.sql @@ -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, diff --git a/models/curated_package/defi/lending/silver/protocols/morpho/silver_lending__morpho_repayments.sql b/models/curated_package/defi/lending/silver/protocols/morpho/silver_lending__morpho_repayments.sql index b20a8dfd..3a3fc73c 100644 --- a/models/curated_package/defi/lending/silver/protocols/morpho/silver_lending__morpho_repayments.sql +++ b/models/curated_package/defi/lending/silver/protocols/morpho/silver_lending__morpho_repayments.sql @@ -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 \ No newline at end of file + ON m.contract_address = t.to_address \ No newline at end of file diff --git a/models/curated_package/defi/lending/silver/protocols/morpho/silver_lending__morpho_withdraws.sql b/models/curated_package/defi/lending/silver/protocols/morpho/silver_lending__morpho_withdraws.sql index 8408f9d1..617e7171 100644 --- a/models/curated_package/defi/lending/silver/protocols/morpho/silver_lending__morpho_withdraws.sql +++ b/models/curated_package/defi/lending/silver/protocols/morpho/silver_lending__morpho_withdraws.sql @@ -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,