Skip to content

Commit

Permalink
AN-5091/base-lending-bugs (#199)
Browse files Browse the repository at this point in the history
* update liquidations model to trace based

* id test

* test fix, format
  • Loading branch information
mattromano authored Aug 13, 2024
1 parent da5b4d8 commit 774d470
Show file tree
Hide file tree
Showing 3 changed files with 59 additions and 56 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -105,7 +105,7 @@ morpho AS (
debt_asset_symbol,
platform,
'base' AS blockchain,
_LOG_ID,
_id as _LOG_ID,
_INSERTED_TIMESTAMP
FROM
{{ ref('silver__morpho_liquidations') }}
Expand Down
111 changes: 57 additions & 54 deletions models/silver/defi/lending/morpho/silver__morpho_liquidations.sql
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,47 @@
tags = ['reorg','curated']
) }}

WITH logs AS(
WITH traces AS (

SELECT
block_number,
tx_hash,
block_timestamp,
from_address,
to_address,
LEFT(
input,
10
) AS function_sig,
len(input) AS segmented_input_len,
regexp_substr_all(SUBSTR(input, 11), '.{64}') AS segmented_input,
CONCAT('0x', SUBSTR(segmented_input [0] :: STRING, 25)) AS loan_token,
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,
CONCAT('0x', SUBSTR(segmented_input [5] :: STRING, 25)) AS borrower,
_call_id,
_inserted_timestamp
FROM
{{ ref('silver__traces') }}
WHERE
to_address = '0xbbbbbbbbbb9cc5e90e3b3af64bdaf62c37eeffcb' --Morpho Blue
AND function_sig = '0xd8eabcb8'
AND trace_status = 'SUCCESS'
AND tx_status = 'SUCCESS'

{% if is_incremental() %}
AND _inserted_timestamp >= (
SELECT
MAX(
_inserted_timestamp
) - INTERVAL '12 hours'
FROM
{{ this }}
)
{% endif %}
),
logs AS(
SELECT
l.tx_hash,
l.block_number,
Expand Down Expand Up @@ -38,49 +77,11 @@ WITH logs AS(
WHERE
topics [0] :: STRING = '0xa4946ede45d0c6f06a0f5ce92c9ad3b4751452d2fe0e25010783bcab57a67e41'
AND l.contract_address = '0xbbbbbbbbbb9cc5e90e3b3af64bdaf62c37eeffcb'

{% if is_incremental() %}
AND _inserted_timestamp >= (
SELECT
MAX(
_inserted_timestamp
) - INTERVAL '12 hours'
FROM
{{ this }}
)
{% endif %}
),
traces AS (
SELECT
block_number,
tx_hash,
block_timestamp,
from_address,
to_address,
LEFT(
input,
10
) AS function_sig,
len(input) AS segmented_input_len,
regexp_substr_all(SUBSTR(input, 11), '.{64}') AS segmented_input,
CONCAT('0x', SUBSTR(segmented_input [0] :: STRING, 25)) AS loan_token,
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,
CONCAT('0x', SUBSTR(segmented_input [5] :: STRING, 25)) AS borrower,
_call_id,
_inserted_timestamp
FROM
{{ ref('silver__traces') }}
WHERE
to_address = '0xbbbbbbbbbb9cc5e90e3b3af64bdaf62c37eeffcb' --Morpho Blue
AND function_sig = '0xd8eabcb8'
AND trace_status = 'SUCCESS'
AND tx_hash IN (
SELECT
DISTINCT tx_hash
tx_hash
FROM
logs
traces
)
)
SELECT
Expand All @@ -94,29 +95,31 @@ SELECT
l.contract_address,
l.caller AS liquidator,
l.borrower,
t.loan_token as debt_asset,
c0.token_symbol as debt_asset_symbol,
l.repay_assets as repayed_amount_unadj,
t.loan_token AS debt_asset,
c0.token_symbol AS debt_asset_symbol,
l.repay_assets AS repayed_amount_unadj,
l.repay_assets / pow(
10,
c0.token_decimals
) AS repayed_amount,
t.collateral_token as collateral_asset,
c1.token_symbol as collateral_asset_symbol,
l.seized_assets as amount_unadj,
t.collateral_token AS collateral_asset,
c1.token_symbol AS collateral_asset_symbol,
l.seized_assets AS amount_unadj,
l.seized_assets / pow(
10,
c1.token_decimals
) AS amount,
'Morpho Blue' as platform,
'Morpho Blue' AS platform,
'base' AS blockchain,
l._log_id,
l._inserted_timestamp
t._call_id AS _id,
t._inserted_timestamp
FROM
logs l
LEFT JOIN traces t
traces t
INNER JOIN logs l
ON l.tx_hash = t.tx_hash
LEFT JOIN {{ ref('silver__contracts') }} c0
LEFT JOIN {{ ref('silver__contracts') }}
c0
ON c0.contract_address = t.loan_token
LEFT JOIN {{ ref('silver__contracts') }} c1
LEFT JOIN {{ ref('silver__contracts') }}
c1
ON c1.contract_address = t.collateral_token
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ models:
tests:
- dbt_utils.unique_combination_of_columns:
combination_of_columns:
- _LOG_ID
- _ID
columns:
- name: BLOCKCHAIN
tests:
Expand Down

0 comments on commit 774d470

Please sign in to comment.