From 73722b27a0de179252bea7e625295c69828e7800 Mon Sep 17 00:00:00 2001 From: tarikceric Date: Tue, 9 Sep 2025 10:01:34 -0700 Subject: [PATCH 1/2] add aries lending --- .../defi/lending/defi__ez_lending_borrows.sql | 21 +++++ .../lending/defi__ez_lending_deposits.sql | 21 +++++ .../lending/defi__ez_lending_liquidations.sql | 23 +++++ .../lending/defi__ez_lending_liquidations.yml | 6 +- .../lending/defi__ez_lending_repayments.sql | 22 +++++ .../lending/defi__ez_lending_withdraws.sql | 21 +++++ .../aries/silver__lending_aries_borrows.sql | 66 ++++++++++++++ .../aries/silver__lending_aries_deposits.sql | 66 ++++++++++++++ .../silver__lending_aries_liquidations.sql | 83 ++++++++++++++++++ .../silver__lending_aries_repayments.sql | 86 +++++++++++++++++++ .../aries/silver__lending_aries_withdraws.sql | 67 +++++++++++++++ 11 files changed, 480 insertions(+), 2 deletions(-) create mode 100644 models/silver/defi/lending/aries/silver__lending_aries_borrows.sql create mode 100644 models/silver/defi/lending/aries/silver__lending_aries_deposits.sql create mode 100644 models/silver/defi/lending/aries/silver__lending_aries_liquidations.sql create mode 100644 models/silver/defi/lending/aries/silver__lending_aries_repayments.sql create mode 100644 models/silver/defi/lending/aries/silver__lending_aries_withdraws.sql diff --git a/models/gold/defi/lending/defi__ez_lending_borrows.sql b/models/gold/defi/lending/defi__ez_lending_borrows.sql index 89400c6..684af39 100644 --- a/models/gold/defi/lending/defi__ez_lending_borrows.sql +++ b/models/gold/defi/lending/defi__ez_lending_borrows.sql @@ -62,6 +62,27 @@ FROM {% if is_incremental() %} WHERE modified_timestamp >= '{{ max_modified_timestamp }}' +{% endif %} + UNION ALL +SELECT + 'aries' as platform, + 'aries' as protocol, + 'v1' as protocol_version, + block_number, + block_timestamp, + version, + tx_hash, + event_index, + event_address, + borrower, + token_address, + amount as amount_raw, + lending_aries_borrows_id as ez_lending_borrows_id +FROM + {{ ref('silver__lending_aries_borrows') }} a + {% if is_incremental() %} +WHERE + modified_timestamp >= '{{ max_modified_timestamp }}' {% endif %} ), prices AS ( diff --git a/models/gold/defi/lending/defi__ez_lending_deposits.sql b/models/gold/defi/lending/defi__ez_lending_deposits.sql index 76d105c..aba278b 100644 --- a/models/gold/defi/lending/defi__ez_lending_deposits.sql +++ b/models/gold/defi/lending/defi__ez_lending_deposits.sql @@ -62,6 +62,27 @@ FROM {% if is_incremental() %} WHERE modified_timestamp >= '{{ max_modified_timestamp }}' +{% endif %} + UNION ALL +SELECT + 'aries' as platform, + 'aries' as protocol, + 'v1' as protocol_version, + block_number, + block_timestamp, + version, + tx_hash, + event_index, + event_address, + depositor, + token_address, + amount as amount_raw, + lending_aries_deposits_id as ez_lending_deposits_id +FROM + {{ ref('silver__lending_aries_deposits') }} a + {% if is_incremental() %} +WHERE + modified_timestamp >= '{{ max_modified_timestamp }}' {% endif %} ), prices AS ( diff --git a/models/gold/defi/lending/defi__ez_lending_liquidations.sql b/models/gold/defi/lending/defi__ez_lending_liquidations.sql index c66c048..da930ee 100644 --- a/models/gold/defi/lending/defi__ez_lending_liquidations.sql +++ b/models/gold/defi/lending/defi__ez_lending_liquidations.sql @@ -66,6 +66,29 @@ FROM {% if is_incremental() %} WHERE modified_timestamp >= '{{ max_modified_timestamp }}' +{% endif %} + UNION ALL +SELECT + 'aries' as platform, + 'aries' as protocol, + 'v1' as protocol_version, + block_number, + block_timestamp, + version, + tx_hash, + event_index, + event_address, + liquidator, + borrower, + amount as amount_raw, + collateral_token, + debt_token, + lending_aries_liquidations_id as ez_lending_liquidations_id +FROM + {{ ref('silver__lending_aries_liquidations') }} a + {% if is_incremental() %} +WHERE + modified_timestamp >= '{{ max_modified_timestamp }}' {% endif %} ), prices AS ( diff --git a/models/gold/defi/lending/defi__ez_lending_liquidations.yml b/models/gold/defi/lending/defi__ez_lending_liquidations.yml index 6a303b4..bc6e4e3 100644 --- a/models/gold/defi/lending/defi__ez_lending_liquidations.yml +++ b/models/gold/defi/lending/defi__ez_lending_liquidations.yml @@ -79,7 +79,8 @@ models: - name: DEBT_TOKEN_SYMBOL description: "{{ doc('symbol') }}" tests: - - not_null: *recent_date_filter + - not_null: + where: block_timestamp >= current_date - 7 AND platform != 'echo' - name: DEBT_TOKEN_IS_VERIFIED description: "{{ doc('prices_is_verified') }}" tests: @@ -95,7 +96,8 @@ models: - name: AMOUNT_USD description: "{{ doc('amount_usd') }}" tests: - - not_null: *recent_date_filter + - not_null: + where: block_timestamp >= current_date - 7 AND platform != 'echo' - name: EZ_LENDING_LIQUIDATIONS_ID description: "{{ doc('pk') }}" tests: diff --git a/models/gold/defi/lending/defi__ez_lending_repayments.sql b/models/gold/defi/lending/defi__ez_lending_repayments.sql index fcfde1e..f9ecebe 100644 --- a/models/gold/defi/lending/defi__ez_lending_repayments.sql +++ b/models/gold/defi/lending/defi__ez_lending_repayments.sql @@ -64,6 +64,28 @@ FROM {% if is_incremental() %} WHERE modified_timestamp >= '{{ max_modified_timestamp }}' +{% endif %} + UNION ALL +SELECT + 'aries' as platform, + 'aries' as protocol, + 'v1' as protocol_version, + block_number, + block_timestamp, + version, + tx_hash, + event_index, + event_address, + payer, + borrower, + token_address, + amount as amount_raw, + lending_aries_repayments_id as ez_lending_repayments_id +FROM + {{ ref('silver__lending_aries_repayments') }} a + {% if is_incremental() %} +WHERE + modified_timestamp >= '{{ max_modified_timestamp }}' {% endif %} ), prices AS ( diff --git a/models/gold/defi/lending/defi__ez_lending_withdraws.sql b/models/gold/defi/lending/defi__ez_lending_withdraws.sql index 8308739..85d1c56 100644 --- a/models/gold/defi/lending/defi__ez_lending_withdraws.sql +++ b/models/gold/defi/lending/defi__ez_lending_withdraws.sql @@ -62,6 +62,27 @@ FROM {% if is_incremental() %} WHERE modified_timestamp >= '{{ max_modified_timestamp }}' +{% endif %} + UNION ALL +SELECT + 'aries' as platform, + 'aries' as protocol, + 'v1' as protocol_version, + block_number, + block_timestamp, + version, + tx_hash, + event_index, + event_address, + depositor, + token_address, + amount as amount_raw, + lending_aries_withdraws_id as ez_lending_withdraws_id +FROM + {{ ref('silver__lending_aries_withdraws') }} a + {% if is_incremental() %} +WHERE + modified_timestamp >= '{{ max_modified_timestamp }}' {% endif %} ), prices AS ( diff --git a/models/silver/defi/lending/aries/silver__lending_aries_borrows.sql b/models/silver/defi/lending/aries/silver__lending_aries_borrows.sql new file mode 100644 index 0000000..f003906 --- /dev/null +++ b/models/silver/defi/lending/aries/silver__lending_aries_borrows.sql @@ -0,0 +1,66 @@ +{{ config( + materialized = 'incremental', + unique_key = "lending_aries_borrows_id", + incremental_strategy = 'merge', + merge_exclude_columns = ["inserted_timestamp"], + cluster_by = ['modified_timestamp::DATE'], + tags = ['noncore'] +) }} +WITH events AS ( + SELECT + block_number, + block_timestamp, + version, + tx_hash, + success, + payload_function, + event_index, + event_type, + event_address, + event_module, + event_resource, + event_data, + event_data:sender::string AS borrower, + event_data:borrow_amount::number AS amount, + SUBSTRING( + event_type, + POSITION('<' IN event_type) + 1, + POSITION('>' IN event_type) - POSITION('<' IN event_type) - 1 + ) AS token_address, + _inserted_timestamp + FROM {{ ref('silver__events') }} + WHERE event_address = '0x9770fa9c725cbd97eb50b2be5f7416efdfd1f1554beb0750d4dae4c64e860da3' + AND event_module = 'controller' + AND event_resource LIKE 'WithdrawEvent%' + AND event_data:borrow_amount::number > 0 -- Only events with actual borrowing + AND event_data:allow_borrow = true -- Ensure borrowing is allowed +{% if is_incremental() %} +AND _inserted_timestamp >= ( + SELECT + MAX(_inserted_timestamp) + FROM + {{ this }} +) +{% else %} + AND block_timestamp :: DATE >= '2024-01-05' +{% endif %} + +) + +SELECT + block_number, + block_timestamp, + version, + tx_hash, + event_index, + event_address, + event_resource, + borrower, + amount, + token_address, + {{ dbt_utils.generate_surrogate_key(['tx_hash', 'event_index']) }} AS lending_aries_borrows_id, + SYSDATE() AS inserted_timestamp, + SYSDATE() AS modified_timestamp, + _inserted_timestamp, + '{{ invocation_id }}' AS _invocation_id +FROM events \ No newline at end of file diff --git a/models/silver/defi/lending/aries/silver__lending_aries_deposits.sql b/models/silver/defi/lending/aries/silver__lending_aries_deposits.sql new file mode 100644 index 0000000..d40c240 --- /dev/null +++ b/models/silver/defi/lending/aries/silver__lending_aries_deposits.sql @@ -0,0 +1,66 @@ +{{ config( + materialized = 'incremental', + unique_key = "lending_aries_deposits_id", + incremental_strategy = 'merge', + merge_exclude_columns = ["inserted_timestamp"], + cluster_by = ['modified_timestamp::DATE'], + tags = ['noncore'] +) }} + +WITH events AS ( + SELECT + block_number, + block_timestamp, + version, + tx_hash, + success, + payload_function, + event_index, + event_type, + event_address, + event_module, + event_resource, + event_data, + event_data:sender::string AS depositor, + event_data:deposit_amount::number AS amount, + SUBSTRING( + event_type, + POSITION('<' IN event_type) + 1, + POSITION('>' IN event_type) - POSITION('<' IN event_type) - 1 + ) AS token_address, + _inserted_timestamp + FROM {{ ref('silver__events') }} + WHERE event_address = '0x9770fa9c725cbd97eb50b2be5f7416efdfd1f1554beb0750d4dae4c64e860da3' + AND event_module = 'controller' + AND event_resource LIKE 'DepositEvent%' + AND (event_data:repay_only = false OR event_data:repay_only IS NULL) -- remove borrows + +{% if is_incremental() %} +AND _inserted_timestamp >= ( + SELECT + MAX(_inserted_timestamp) + FROM + {{ this }} +) +{% else %} + AND block_timestamp :: DATE >= '2024-01-05' +{% endif %} +) + +SELECT + block_number, + block_timestamp, + version, + tx_hash, + event_index, + event_address, + event_resource, + depositor, + amount, + token_address, + {{ dbt_utils.generate_surrogate_key(['tx_hash', 'event_index']) }} AS lending_aries_deposits_id, + SYSDATE() AS inserted_timestamp, + SYSDATE() AS modified_timestamp, + _inserted_timestamp, + '{{ invocation_id }}' AS _invocation_id +FROM events diff --git a/models/silver/defi/lending/aries/silver__lending_aries_liquidations.sql b/models/silver/defi/lending/aries/silver__lending_aries_liquidations.sql new file mode 100644 index 0000000..81e9f99 --- /dev/null +++ b/models/silver/defi/lending/aries/silver__lending_aries_liquidations.sql @@ -0,0 +1,83 @@ +{{ config( + materialized = 'incremental', + unique_key = "lending_aries_liquidations_id", + incremental_strategy = 'merge', + merge_exclude_columns = ["inserted_timestamp"], + cluster_by = ['modified_timestamp::DATE'], + tags = ['noncore'] +) }} + +WITH events AS ( + SELECT + block_number, + block_timestamp, + version, + tx_hash, + success, + payload_function, + event_index, + event_type, + event_address, + event_module, + event_resource, + event_data, + event_data:liquidator::string AS liquidator, + event_data:liquidatee::string AS borrower, + event_data:repay_amount::number AS amount, + -- Parse the two tokens from event_type + -- Format: LiquidateEvent + SPLIT_PART( + SUBSTRING( + event_type, + POSITION('<' IN event_type) + 1, + POSITION('>' IN event_type) - POSITION('<' IN event_type) - 1 + ), + ', ', + 1 + ) AS debt_token, + SPLIT_PART( + SUBSTRING( + event_type, + POSITION('<' IN event_type) + 1, + POSITION('>' IN event_type) - POSITION('<' IN event_type) - 1 + ), + ', ', + 2 + ) AS collateral_token, + _inserted_timestamp + FROM {{ ref('silver__events') }} + WHERE event_address = '0x9770fa9c725cbd97eb50b2be5f7416efdfd1f1554beb0750d4dae4c64e860da3' + AND event_module = 'controller' + AND event_resource LIKE 'LiquidateEvent%' + +{% if is_incremental() %} +AND _inserted_timestamp >= ( + SELECT + MAX(_inserted_timestamp) + FROM + {{ this }} +) +{% else %} + AND block_timestamp :: DATE >= '2024-01-05' +{% endif %} +) + +SELECT + block_number, + block_timestamp, + version, + tx_hash, + event_index, + event_address, + event_resource, + liquidator, + borrower, + amount, + debt_token, + collateral_token, + {{ dbt_utils.generate_surrogate_key(['tx_hash', 'event_index']) }} AS lending_aries_liquidations_id, + SYSDATE() AS inserted_timestamp, + SYSDATE() AS modified_timestamp, + _inserted_timestamp, + '{{ invocation_id }}' AS _invocation_id +FROM events \ No newline at end of file diff --git a/models/silver/defi/lending/aries/silver__lending_aries_repayments.sql b/models/silver/defi/lending/aries/silver__lending_aries_repayments.sql new file mode 100644 index 0000000..9f0754f --- /dev/null +++ b/models/silver/defi/lending/aries/silver__lending_aries_repayments.sql @@ -0,0 +1,86 @@ +{{ config( + materialized = 'incremental', + unique_key = "lending_aries_repayments_id", + incremental_strategy = 'merge', + merge_exclude_columns = ["inserted_timestamp"], + cluster_by = ['modified_timestamp::DATE'], + tags = ['noncore'] +) }} + +WITH events AS ( + SELECT + block_number, + block_timestamp, + version, + tx_hash, + success, + payload_function, + event_index, + event_type, + event_address, + event_module, + event_resource, + event_data, + event_data:receiver::string AS borrower, -- The person whose debt is being repaid + CASE + WHEN event_data:repay_amount::number > 0 THEN event_data:repay_amount::number + WHEN event_data:deposit_amount::number > 0 THEN event_data:deposit_amount::number + ELSE 0 + END AS amount, + SUBSTRING( + event_type, + POSITION('<' IN event_type) + 1, + POSITION('>' IN event_type) - POSITION('<' IN event_type) - 1 + ) AS token_address, + _inserted_timestamp + FROM {{ ref('silver__events') }} + WHERE event_address = '0x9770fa9c725cbd97eb50b2be5f7416efdfd1f1554beb0750d4dae4c64e860da3' + AND event_module = 'controller' + AND event_resource LIKE 'DepositRepayForEvent%' +{% if is_incremental() %} +AND _inserted_timestamp >= ( + SELECT + MAX(_inserted_timestamp) + FROM + {{ this }} +) +{% else %} + AND block_timestamp :: DATE >= '2024-01-05' +{% endif %} +), +tx_sender AS ( + SELECT + block_timestamp, + tx_hash, + sender + FROM {{ ref('silver__transactions') }} + WHERE tx_hash IN (SELECT DISTINCT tx_hash FROM events) +{% if is_incremental() %} + AND _inserted_timestamp >= ( + SELECT MAX(_inserted_timestamp) + FROM {{ this }} + ) +{% else %} + AND block_timestamp::DATE >= '2024-01-05' +{% endif %} +) + +SELECT + e.block_number, + e.block_timestamp, + e.version, + e.tx_hash, + e.event_index, + e.event_address, + t.sender AS payer, + e.borrower, + e.amount, + e.token_address, + e._inserted_timestamp, + {{ dbt_utils.generate_surrogate_key(['e.tx_hash', 'e.event_index']) }} AS lending_aries_repayments_id, + SYSDATE() AS inserted_timestamp, + SYSDATE() AS modified_timestamp +FROM events e +LEFT JOIN tx_sender t + ON e.tx_hash = t.tx_hash + AND e.block_timestamp::DATE = t.block_timestamp::DATE \ No newline at end of file diff --git a/models/silver/defi/lending/aries/silver__lending_aries_withdraws.sql b/models/silver/defi/lending/aries/silver__lending_aries_withdraws.sql new file mode 100644 index 0000000..8c6ce86 --- /dev/null +++ b/models/silver/defi/lending/aries/silver__lending_aries_withdraws.sql @@ -0,0 +1,67 @@ +{{ config( + materialized = 'incremental', + unique_key = "lending_aries_withdraws_id", + incremental_strategy = 'merge', + merge_exclude_columns = ["inserted_timestamp"], + cluster_by = ['modified_timestamp::DATE'], + tags = ['noncore'] +) }} + +WITH events AS ( + SELECT + block_number, + block_timestamp, + version, + tx_hash, + success, + payload_function, + event_index, + event_type, + event_address, + event_module, + event_resource, + event_data, + event_data:sender::string AS depositor, + event_data:withdraw_amount::number AS amount, + SUBSTRING( + event_type, + POSITION('<' IN event_type) + 1, + POSITION('>' IN event_type) - POSITION('<' IN event_type) - 1 + ) AS token_address, + _inserted_timestamp + FROM {{ ref('silver__events') }} + WHERE event_address = '0x9770fa9c725cbd97eb50b2be5f7416efdfd1f1554beb0750d4dae4c64e860da3' + AND event_module = 'controller' + AND event_resource LIKE 'WithdrawEvent%' + AND event_data:borrow_amount::number = 0 -- removes borrows + AND event_data:withdraw_amount::number > 0 + +{% if is_incremental() %} +AND _inserted_timestamp >= ( + SELECT + MAX(_inserted_timestamp) + FROM + {{ this }} +) +{% else %} + AND block_timestamp :: DATE >= '2024-01-05' +{% endif %} +) + +SELECT + block_number, + block_timestamp, + version, + tx_hash, + event_index, + event_address, + event_resource, + depositor, + amount, + token_address, + {{ dbt_utils.generate_surrogate_key(['tx_hash', 'event_index']) }} AS lending_aries_withdraws_id, + SYSDATE() AS inserted_timestamp, + SYSDATE() AS modified_timestamp, + _inserted_timestamp, + '{{ invocation_id }}' AS _invocation_id +FROM events From b011ba208d6efc9d35dc5949d261ae6535d9dacc Mon Sep 17 00:00:00 2001 From: tarikceric Date: Thu, 11 Sep 2025 12:05:06 -0700 Subject: [PATCH 2/2] add invocation id --- .../defi/lending/aries/silver__lending_aries_repayments.sql | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/models/silver/defi/lending/aries/silver__lending_aries_repayments.sql b/models/silver/defi/lending/aries/silver__lending_aries_repayments.sql index 9f0754f..f0a5816 100644 --- a/models/silver/defi/lending/aries/silver__lending_aries_repayments.sql +++ b/models/silver/defi/lending/aries/silver__lending_aries_repayments.sql @@ -79,7 +79,8 @@ SELECT e._inserted_timestamp, {{ dbt_utils.generate_surrogate_key(['e.tx_hash', 'e.event_index']) }} AS lending_aries_repayments_id, SYSDATE() AS inserted_timestamp, - SYSDATE() AS modified_timestamp + SYSDATE() AS modified_timestamp, + '{{ invocation_id }}' AS _invocation_id FROM events e LEFT JOIN tx_sender t ON e.tx_hash = t.tx_hash