mirror of
https://github.com/FlipsideCrypto/blast-models.git
synced 2026-02-06 14:11:55 +00:00
add init silver
This commit is contained in:
parent
28501df6ae
commit
a03beb9993
@ -0,0 +1,86 @@
|
||||
{{ config(
|
||||
materialized = 'incremental',
|
||||
incremental_strategy = 'delete+insert',
|
||||
unique_key = "block_number",
|
||||
cluster_by = ['block_timestamp::DATE'],
|
||||
tags = ['reorg','curated']
|
||||
) }}
|
||||
|
||||
WITH blast_contracts AS (
|
||||
|
||||
SELECT
|
||||
*
|
||||
FROM
|
||||
{{ ref('silver__contracts') }}
|
||||
WHERE
|
||||
token_name LIKE 'INIT%'
|
||||
),
|
||||
underlying AS (
|
||||
SELECT
|
||||
tx_hash,
|
||||
block_timestamp,
|
||||
block_number,
|
||||
from_address AS token_address,
|
||||
to_address AS underlying_asset_address
|
||||
FROM
|
||||
blast.core.fact_traces
|
||||
WHERE
|
||||
identifier = 'CALL_0_1'
|
||||
AND LEFT(
|
||||
input,
|
||||
10
|
||||
) = '0x095ea7b3'
|
||||
AND trace_status = 'SUCCESS'
|
||||
AND from_address IN (
|
||||
SELECT
|
||||
contract_address
|
||||
FROM
|
||||
blast_contracts
|
||||
)
|
||||
),
|
||||
unwrapped AS (
|
||||
SELECT
|
||||
from_address AS underlying_asset_address,
|
||||
to_address AS underlying_unwrap_address
|
||||
FROM
|
||||
blast.core.fact_traces
|
||||
WHERE
|
||||
identifier = 'CALL_0_0'
|
||||
AND LEFT(
|
||||
input,
|
||||
10
|
||||
) = '0x1a33757d'
|
||||
AND trace_status = 'SUCCESS'
|
||||
AND from_address IN (
|
||||
SELECT
|
||||
underlying_asset_address
|
||||
FROM
|
||||
underlying
|
||||
)
|
||||
)
|
||||
SELECT
|
||||
A.block_timestamp,
|
||||
A.block_number,
|
||||
A.tx_hash,
|
||||
token_address,
|
||||
b.token_name,
|
||||
b.token_symbol,
|
||||
b.token_decimals,
|
||||
underlying_asset_address,
|
||||
C.token_name AS underlying_name,
|
||||
C.token_symbol AS underlying_symbol,
|
||||
C.token_decimals AS underlying_decimals,
|
||||
d.underlying_unwrap_address,
|
||||
e.token_name AS underlying_unwrap_name,
|
||||
e.token_symbol AS underlying_unwrap_symbol,
|
||||
e.token_decimals AS underlying_unwrap_decimals,
|
||||
b._inserted_timestamp
|
||||
FROM
|
||||
underlying A
|
||||
INNER JOIN blast_contracts b
|
||||
ON b.contract_address = token_address
|
||||
LEFT JOIN unwrapped d USING(underlying_asset_address)
|
||||
INNER JOIN contracts C
|
||||
ON C.contract_address = underlying_asset_address
|
||||
LEFT JOIN contracts e
|
||||
ON e.contract_address = underlying_unwrap_address -- end of asset list
|
||||
@ -0,0 +1,12 @@
|
||||
version: 2
|
||||
models:
|
||||
- name: silver__init_asset_details
|
||||
tests:
|
||||
- dbt_utils.unique_combination_of_columns:
|
||||
combination_of_columns:
|
||||
- TOKEN_ADDRESS
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
206
models/silver/defi/lending/init/silver__init_borrows.sql
Normal file
206
models/silver/defi/lending/init/silver__init_borrows.sql
Normal file
@ -0,0 +1,206 @@
|
||||
{{ config(
|
||||
materialized = 'incremental',
|
||||
incremental_strategy = 'delete+insert',
|
||||
unique_key = "block_number",
|
||||
cluster_by = ['block_timestamp::DATE'],
|
||||
tags = ['reorg','curated']
|
||||
) }}
|
||||
|
||||
WITH asset_details AS (
|
||||
|
||||
SELECT
|
||||
token_address,
|
||||
token_name,
|
||||
token_symbol,
|
||||
token_decimals,
|
||||
underlying_asset_address,
|
||||
underlying_name,
|
||||
underlying_symbol,
|
||||
underlying_decimals
|
||||
FROM
|
||||
{{ ref('silver__init_asset_details') }}
|
||||
),
|
||||
init_borrows AS (
|
||||
SELECT
|
||||
block_number,
|
||||
block_timestamp,
|
||||
tx_hash,
|
||||
event_index,
|
||||
origin_from_address,
|
||||
origin_to_address,
|
||||
origin_from_address AS borrower,
|
||||
origin_function_signature,
|
||||
contract_address,
|
||||
topics,
|
||||
regexp_substr_all(SUBSTR(DATA, 3, len(DATA)), '.{64}') AS segmented_data,
|
||||
utils.udf_hex_to_int(
|
||||
topics [2] :: STRING
|
||||
) :: FLOAT AS posId,
|
||||
CONCAT('0x', SUBSTR(topics [1] :: STRING, 27, 40)) AS pool,
|
||||
utils.udf_hex_to_int(
|
||||
segmented_data [0] :: STRING
|
||||
) :: FLOAT AS loan_amount_raw,
|
||||
-- receipt token
|
||||
utils.udf_hex_to_int(
|
||||
segmented_data [1] :: STRING
|
||||
) :: FLOAT AS sharesAmt,
|
||||
-- receipt token
|
||||
contract_address AS token,
|
||||
'INIT Capital' AS platform,
|
||||
inserted_timestamp AS _inserted_timestamp,
|
||||
_log_id
|
||||
FROM
|
||||
{{ ref('core__fact_event_logs') }}
|
||||
WHERE
|
||||
contract_address = '0xa7d36f2106b5a5d528a7e2e7a3f436d703113a10'
|
||||
AND topics [0] :: STRING = '0x49dd87b26edb1c92c93f83b092bd5a425c6bf7a562c0fed02f2576c49f477ba4'
|
||||
AND tx_status = 'SUCCESS'
|
||||
),
|
||||
token_transfer AS (
|
||||
-- token transfer checks for withdrawal/deposits in usdb/weth(for hooks leveraging)/blast
|
||||
SELECT
|
||||
tx_hash,
|
||||
contract_address,
|
||||
from_address,
|
||||
to_address,
|
||||
raw_amount AS underlying_amount_raw,
|
||||
token_decimals,
|
||||
token_symbol,
|
||||
token_name
|
||||
FROM
|
||||
{{ ref('core__fact_token_transfers') }}
|
||||
LEFT JOIN {{ ref('silver__contracts') }} USING(contract_address)
|
||||
WHERE
|
||||
1 = 1
|
||||
AND contract_address IN (
|
||||
'0xb1a5700fa2358173fe465e6ea4ff52e36e88e2ad',
|
||||
'0x4300000000000000000000000000000000000003',
|
||||
'0x4300000000000000000000000000000000000004'
|
||||
)
|
||||
AND (
|
||||
from_address IN (
|
||||
SELECT
|
||||
token_address
|
||||
FROM
|
||||
asset_details
|
||||
) -- for Blast
|
||||
OR from_address IN (
|
||||
SELECT
|
||||
underlying_asset_address
|
||||
FROM
|
||||
asset_details
|
||||
)
|
||||
) -- to get USDB from WUSDB or WETH FROM WWETH
|
||||
AND tx_hash IN (
|
||||
SELECT
|
||||
tx_hash
|
||||
FROM
|
||||
init_borrows
|
||||
)
|
||||
),
|
||||
native_transfer AS (
|
||||
-- native transfer checks for withdrawal/deposits as eth
|
||||
SELECT
|
||||
tx_hash,
|
||||
from_address AS wrapped_address,
|
||||
to_address,
|
||||
value_precise_raw AS eth_value,
|
||||
'WETH' AS eth_symbol,
|
||||
18 AS eth_decimals,
|
||||
'0x4300000000000000000000000000000000000004' AS eth_address
|
||||
FROM
|
||||
{{ ref('core__fact_traces') }}
|
||||
WHERE
|
||||
from_address IN ('0xf683ce59521aa464066783d78e40cd9412f33d21') -- hard code wweth contract here
|
||||
AND tx_hash IN (
|
||||
SELECT
|
||||
tx_hash
|
||||
FROM
|
||||
init_borrows
|
||||
)
|
||||
AND TYPE = 'CALL'
|
||||
AND trace_status = 'SUCCESS'
|
||||
AND input = '0x'
|
||||
),
|
||||
init_combine AS (
|
||||
SELECT
|
||||
block_number,
|
||||
block_timestamp,
|
||||
b.tx_hash,
|
||||
event_index,
|
||||
origin_from_address,
|
||||
origin_to_address,
|
||||
origin_function_signature,
|
||||
b.contract_address,
|
||||
borrower,
|
||||
pool,
|
||||
loan_amount_raw,
|
||||
C.underlying_decimals AS underlying_wrap_decimals,
|
||||
-- this does the filtering for if not eth(native) -> if not token(USDB/WETH/BLAST) -> then underlying token (eg. ezETH/weETH/etc)
|
||||
COALESCE(
|
||||
eth_value,
|
||||
underlying_amount_raw
|
||||
) AS underlying_amount_raw,
|
||||
COALESCE(
|
||||
eth_symbol,
|
||||
d.token_symbol,
|
||||
C.underlying_symbol
|
||||
) AS underlying_symbol,
|
||||
COALESCE(
|
||||
eth_decimals,
|
||||
d.token_decimals,
|
||||
C.underlying_decimals
|
||||
) AS underlying_decimals,
|
||||
COALESCE(
|
||||
eth_address,
|
||||
C.underlying_asset_address
|
||||
) AS underlying_asset_address,
|
||||
underlying_asset_address AS borrows_contract_address,
|
||||
underlying_symbol AS borrows_symbol,
|
||||
b.contract_address AS token,
|
||||
C.token_symbol,
|
||||
C.token_decimals,
|
||||
b.platform,
|
||||
b._log_id,
|
||||
b._inserted_timestamp
|
||||
FROM
|
||||
init_borrows b
|
||||
LEFT JOIN asset_details C
|
||||
ON b.pool = C.token_address
|
||||
LEFT JOIN token_transfer d
|
||||
ON b.tx_hash = d.tx_hash -- AND b.pool = d.from_address
|
||||
LEFT JOIN native_transfer e
|
||||
ON b.tx_hash = e.tx_hash
|
||||
)
|
||||
SELECT
|
||||
block_number,
|
||||
block_timestamp,
|
||||
tx_hash,
|
||||
event_index,
|
||||
origin_from_address,
|
||||
origin_to_address,
|
||||
origin_function_signature,
|
||||
contract_address,
|
||||
borrower,
|
||||
borrows_contract_address,
|
||||
borrows_symbol,
|
||||
token AS token_address,
|
||||
token_symbol,
|
||||
underlying_symbol,
|
||||
loan_amount_raw AS amount_unadj,
|
||||
loan_amount_raw / pow(
|
||||
10,
|
||||
underlying_wrap_decimals
|
||||
) AS amount,
|
||||
underlying_amount_raw,
|
||||
underlying_amount_raw / pow(
|
||||
10,
|
||||
underlying_decimals
|
||||
) AS underlyingAmount,
|
||||
platform,
|
||||
_inserted_timestamp,
|
||||
_log_id
|
||||
FROM
|
||||
init_combine qualify(ROW_NUMBER() over(PARTITION BY _log_id
|
||||
ORDER BY
|
||||
_inserted_timestamp DESC)) = 1
|
||||
41
models/silver/defi/lending/init/silver__init_borrows.yml
Normal file
41
models/silver/defi/lending/init/silver__init_borrows.yml
Normal file
@ -0,0 +1,41 @@
|
||||
version: 2
|
||||
models:
|
||||
- name: silver__init_borrows
|
||||
tests:
|
||||
- dbt_utils.unique_combination_of_columns:
|
||||
combination_of_columns:
|
||||
- _log_id
|
||||
columns:
|
||||
- name: BLOCK_NUMBER
|
||||
tests:
|
||||
- not_null
|
||||
- name: BLOCK_TIMESTAMP
|
||||
tests:
|
||||
- not_null
|
||||
- name: BORROWER
|
||||
tests:
|
||||
- not_null
|
||||
- name: BORROWS_CONTRACT_ADDRESS
|
||||
tests:
|
||||
- not_null
|
||||
- name: BORROWS_SYMBOL
|
||||
tests:
|
||||
- not_null
|
||||
- name: TOKEN_ADDRESS
|
||||
tests:
|
||||
- not_null
|
||||
- name: TOKEN_SYMBOL
|
||||
tests:
|
||||
- not_null
|
||||
- name: LOAN_AMOUNT
|
||||
tests:
|
||||
- dbt_expectations.expect_column_values_to_be_in_type_list:
|
||||
column_type_list:
|
||||
- decimal
|
||||
- float
|
||||
- name: TX_HASH
|
||||
tests:
|
||||
- not_null
|
||||
- name: EVENT_INDEX
|
||||
tests:
|
||||
- not_null
|
||||
310
models/silver/defi/lending/init/silver__init_deposits.sql
Normal file
310
models/silver/defi/lending/init/silver__init_deposits.sql
Normal file
@ -0,0 +1,310 @@
|
||||
{{ config(
|
||||
materialized = 'incremental',
|
||||
incremental_strategy = 'delete+insert',
|
||||
unique_key = "block_number",
|
||||
cluster_by = ['block_timestamp::DATE'],
|
||||
tags = ['reorg','curated']
|
||||
) }}
|
||||
|
||||
WITH asset_details AS (
|
||||
|
||||
SELECT
|
||||
block_timestamp,
|
||||
block_number,
|
||||
tx_hash,
|
||||
token_address,
|
||||
token_name,
|
||||
token_symbol,
|
||||
token_decimals,
|
||||
underlying_asset_address,
|
||||
underlying_name,
|
||||
underlying_symbol,
|
||||
underlying_decimals,
|
||||
underlying_unwrap_address,
|
||||
underlying_unwrap_name,
|
||||
underlying_unwrap_symbol,
|
||||
underlying_unwrap_decimals,
|
||||
_inserted_timestamp
|
||||
FROM
|
||||
{{ ref('silver__init_asset_details') }}
|
||||
),
|
||||
init_deposits AS (
|
||||
SELECT
|
||||
block_number,
|
||||
block_timestamp,
|
||||
tx_hash,
|
||||
event_index,
|
||||
origin_from_address,
|
||||
origin_to_address,
|
||||
origin_function_signature,
|
||||
contract_address,
|
||||
contract_address AS token_address,
|
||||
regexp_substr_all(SUBSTR(DATA, 3, len(DATA)), '.{64}') AS segmented_data,
|
||||
utils.udf_hex_to_int(
|
||||
topics [1] :: STRING
|
||||
) :: FLOAT AS posId,
|
||||
CONCAT('0x', SUBSTR(topics [2] :: STRING, 27, 40)) AS pool,
|
||||
utils.udf_hex_to_int(
|
||||
segmented_data [0] :: STRING
|
||||
) :: FLOAT AS minttokens_raw,
|
||||
-- receipt token
|
||||
'INIT Capital' AS platform,
|
||||
inserted_timestamp AS _inserted_timestamp,
|
||||
_log_id
|
||||
FROM
|
||||
{{ ref('core__fact_event_logs') }}
|
||||
WHERE
|
||||
contract_address = '0xa7d36f2106b5a5d528a7e2e7a3f436d703113a10'
|
||||
AND topics [0] :: STRING = '0x722732c12c1c1ba3942aef8ee6e0357b01908558e142501c5f85b356c4dcadf8'
|
||||
AND tx_status = 'SUCCESS'
|
||||
),
|
||||
token_transfer1 AS (
|
||||
SELECT
|
||||
t1.tx_hash,
|
||||
t2.contract_address,
|
||||
t1.from_address,
|
||||
t1.to_address,
|
||||
t1.raw_amount,
|
||||
t3.token_symbol,
|
||||
t3.token_decimals,
|
||||
t3.token_name,
|
||||
t2.from_address AS from_address2,
|
||||
t2.to_address AS to_address2,
|
||||
t2.raw_amount AS base_amount,
|
||||
--t4.token_decimals as base_decimals, t4.token_symbol as base_symbol, t4.token_name as base_name
|
||||
-- consolidate names, decimal, symbol, amount
|
||||
FROM
|
||||
{{ ref('core__fact_token_transfers') }}
|
||||
t1
|
||||
LEFT JOIN {{ ref('core__fact_token_transfers') }}
|
||||
t2
|
||||
ON t1.tx_hash = t2.tx_hash
|
||||
AND t1.contract_address = t2.to_address
|
||||
LEFT JOIN {{ ref('silver__contracts') }}
|
||||
t3
|
||||
ON t2.contract_address = t3.contract_address
|
||||
WHERE
|
||||
1 = 1
|
||||
AND t1.contract_address IN (
|
||||
SELECT
|
||||
underlying_asset_address
|
||||
FROM
|
||||
asset_details
|
||||
WHERE
|
||||
underlying_unwrap_address IS NOT NULL
|
||||
)
|
||||
AND t1.tx_hash IN (
|
||||
SELECT
|
||||
tx_hash
|
||||
FROM
|
||||
init_deposits
|
||||
)
|
||||
AND t1.to_address IN (
|
||||
SELECT
|
||||
token_address
|
||||
FROM
|
||||
asset_details
|
||||
) -- for Blast
|
||||
AND t2.contract_address IN (
|
||||
SELECT
|
||||
underlying_unwrap_address
|
||||
FROM
|
||||
asset_details
|
||||
)
|
||||
AND (
|
||||
t2.to_address IN (
|
||||
SELECT
|
||||
underlying_asset_address
|
||||
FROM
|
||||
asset_details
|
||||
)
|
||||
) -- to get USDB from WUSDB
|
||||
),
|
||||
token_transfer2 AS (
|
||||
SELECT
|
||||
t1.tx_hash,
|
||||
t1.contract_address,
|
||||
t1.from_address,
|
||||
t1.to_address,
|
||||
t1.raw_amount,
|
||||
t3.token_symbol,
|
||||
t3.token_decimals,
|
||||
t3.token_name,
|
||||
NULL AS from_address2,
|
||||
NULL AS to_address2,
|
||||
NULL AS base_amount,
|
||||
NULL AS base_decimals,
|
||||
NULL AS base_symbol,
|
||||
NULL AS base_name
|
||||
FROM
|
||||
{{ ref('core__fact_token_transfers') }}
|
||||
t1
|
||||
LEFT JOIN {{ ref('silver__contracts') }}
|
||||
t3
|
||||
ON t1.contract_address = t3.contract_address
|
||||
WHERE
|
||||
1 = 1
|
||||
AND t1.contract_address IN (
|
||||
SELECT
|
||||
underlying_asset_address
|
||||
FROM
|
||||
asset_details
|
||||
WHERE
|
||||
underlying_unwrap_address IS NULL
|
||||
)
|
||||
AND t1.tx_hash IN (
|
||||
SELECT
|
||||
tx_hash
|
||||
FROM
|
||||
init_deposits
|
||||
)
|
||||
AND t1.tx_hash NOT IN (
|
||||
SELECT
|
||||
tx_hash
|
||||
FROM
|
||||
token_transfer1
|
||||
)
|
||||
AND t1.to_address IN (
|
||||
SELECT
|
||||
token_address
|
||||
FROM
|
||||
asset_details
|
||||
) -- for Blast
|
||||
),
|
||||
token_transfer AS (
|
||||
SELECT
|
||||
tx_hash,
|
||||
contract_address,
|
||||
token_decimals,
|
||||
token_symbol,
|
||||
token_name,
|
||||
COALESCE(
|
||||
base_amount,
|
||||
raw_amount
|
||||
) AS raw_amount,
|
||||
to_address --coalesce(from_address2, from_address) as from_address
|
||||
FROM
|
||||
(
|
||||
SELECT
|
||||
tx_hash,
|
||||
contract_address,
|
||||
base_amount,
|
||||
raw_amount,
|
||||
to_address,
|
||||
token_name,
|
||||
token_symbol,
|
||||
token_decimals
|
||||
FROM
|
||||
token_transfer1
|
||||
UNION ALL
|
||||
SELECT
|
||||
tx_hash,
|
||||
contract_address,
|
||||
base_amount,
|
||||
raw_amount,
|
||||
to_address,
|
||||
token_name,
|
||||
token_symbol,
|
||||
token_decimals
|
||||
FROM
|
||||
token_transfer2
|
||||
)
|
||||
),
|
||||
native_transfer AS (
|
||||
SELECT
|
||||
tx_hash,
|
||||
from_address AS wrapped_address,
|
||||
to_address,
|
||||
value_precise_raw AS eth_value,
|
||||
'WETH' AS eth_symbol,
|
||||
18 AS eth_decimals,
|
||||
'0x4300000000000000000000000000000000000004' AS eth_address
|
||||
FROM
|
||||
{{ ref('core__fact_traces') }}
|
||||
WHERE
|
||||
to_address IN ('0xf683ce59521aa464066783d78e40cd9412f33d21') -- hard code wweth contract here
|
||||
AND tx_hash IN (
|
||||
SELECT
|
||||
tx_hash
|
||||
FROM
|
||||
init_deposits
|
||||
)
|
||||
AND TYPE = 'CALL'
|
||||
AND trace_status = 'SUCCESS'
|
||||
AND input = '0x6ad481f3'
|
||||
),
|
||||
init_combine AS (
|
||||
SELECT
|
||||
b.block_number,
|
||||
b.block_timestamp,
|
||||
b.tx_hash,
|
||||
event_index,
|
||||
origin_to_address,
|
||||
origin_from_address,
|
||||
origin_from_address AS supplier,
|
||||
origin_function_signature,
|
||||
b.contract_address,
|
||||
pool,
|
||||
minttokens_raw,
|
||||
COALESCE(
|
||||
eth_value,
|
||||
raw_amount
|
||||
) AS mintAmount_raw,
|
||||
-- actual out
|
||||
COALESCE(
|
||||
eth_decimals,
|
||||
d.token_decimals
|
||||
) AS supplied_decimals,
|
||||
COALESCE(
|
||||
eth_symbol,
|
||||
d.token_symbol
|
||||
) AS supplied_symbol,
|
||||
COALESCE(
|
||||
eth_address,
|
||||
d.contract_address
|
||||
) AS supplied_contract_address,
|
||||
C.token_address,
|
||||
C.token_symbol,
|
||||
C.token_decimals,
|
||||
b.platform,
|
||||
b._log_id,
|
||||
b._inserted_timestamp
|
||||
FROM
|
||||
init_deposits b
|
||||
LEFT JOIN asset_details C
|
||||
ON b.pool = C.token_address
|
||||
LEFT JOIN token_transfer d
|
||||
ON b.tx_hash = d.tx_hash
|
||||
AND b.pool = d.to_address
|
||||
LEFT JOIN native_transfer e
|
||||
ON b.tx_hash = e.tx_hash
|
||||
)
|
||||
SELECT
|
||||
block_number,
|
||||
block_timestamp,
|
||||
tx_hash,
|
||||
event_index,
|
||||
origin_to_address,
|
||||
origin_function_signature,
|
||||
contract_address,
|
||||
token_address,
|
||||
token_symbol,
|
||||
minttokens_raw / pow(
|
||||
10,
|
||||
token_decimals
|
||||
) AS issued_tokens,
|
||||
mintAmount_raw AS amount_unadj,
|
||||
mintAmount_raw / pow(
|
||||
10,
|
||||
supplied_decimals
|
||||
) AS amount,
|
||||
supplied_contract_address,
|
||||
supplied_symbol,
|
||||
supplier,
|
||||
platform,
|
||||
_inserted_timestamp,
|
||||
_log_id
|
||||
FROM
|
||||
init_combine qualify(ROW_NUMBER() over(PARTITION BY _log_id
|
||||
ORDER BY
|
||||
_inserted_timestamp DESC)) = 1
|
||||
47
models/silver/defi/lending/init/silver__init_deposits.yml
Normal file
47
models/silver/defi/lending/init/silver__init_deposits.yml
Normal file
@ -0,0 +1,47 @@
|
||||
version: 2
|
||||
models:
|
||||
- name: silver__init_deposits
|
||||
tests:
|
||||
- dbt_utils.unique_combination_of_columns:
|
||||
combination_of_columns:
|
||||
- _log_id
|
||||
columns:
|
||||
- name: BLOCK_NUMBER
|
||||
tests:
|
||||
- not_null
|
||||
- name: BLOCK_TIMESTAMP
|
||||
tests:
|
||||
- not_null
|
||||
- name: TOKEN_ADDRESS
|
||||
tests:
|
||||
- not_null
|
||||
- name: TOKEN_SYMBOL
|
||||
tests:
|
||||
- not_null
|
||||
- name: ISSUED_TOKENS
|
||||
tests:
|
||||
- dbt_expectations.expect_column_values_to_be_in_type_list:
|
||||
column_type_list:
|
||||
- decimal
|
||||
- float
|
||||
- name: SUPPLIED_BASE_ASSET
|
||||
tests:
|
||||
- dbt_expectations.expect_column_values_to_be_in_type_list:
|
||||
column_type_list:
|
||||
- decimal
|
||||
- float
|
||||
- name: SUPPLIED_CONTRACT_ADDRESS
|
||||
tests:
|
||||
- not_null
|
||||
- name: SUPPLIED_SYMBOL
|
||||
tests:
|
||||
- not_null
|
||||
- name: SUPPLIER
|
||||
tests:
|
||||
- not_null
|
||||
- name: TX_HASH
|
||||
tests:
|
||||
- not_null
|
||||
- name: EVENT_INDEX
|
||||
tests:
|
||||
- not_null
|
||||
150
models/silver/defi/lending/init/silver__init_liquidations.sql
Normal file
150
models/silver/defi/lending/init/silver__init_liquidations.sql
Normal file
@ -0,0 +1,150 @@
|
||||
{{ config(
|
||||
materialized = 'incremental',
|
||||
incremental_strategy = 'delete+insert',
|
||||
unique_key = "block_number",
|
||||
cluster_by = ['block_timestamp::DATE'],
|
||||
tags = ['reorg','curated']
|
||||
) }}
|
||||
|
||||
WITH asset_details AS (
|
||||
|
||||
SELECT
|
||||
block_timestamp,
|
||||
block_number,
|
||||
tx_hash,
|
||||
token_address,
|
||||
token_name,
|
||||
token_symbol,
|
||||
token_decimals,
|
||||
underlying_asset_address,
|
||||
underlying_name,
|
||||
underlying_symbol,
|
||||
underlying_decimals,
|
||||
underlying_unwrap_address,
|
||||
underlying_unwrap_name,
|
||||
underlying_unwrap_symbol,
|
||||
underlying_unwrap_decimals,
|
||||
_inserted_timestamp
|
||||
FROM
|
||||
{{ ref('silver__init_asset_details') }}
|
||||
),
|
||||
init_liquidations AS (
|
||||
SELECT
|
||||
block_number,
|
||||
block_timestamp,
|
||||
tx_hash,
|
||||
event_index,
|
||||
origin_from_address,
|
||||
origin_to_address,
|
||||
origin_from_address AS borrower,
|
||||
origin_function_signature,
|
||||
contract_address,
|
||||
topics,
|
||||
regexp_substr_all(SUBSTR(DATA, 3, len(DATA)), '.{64}') AS segmented_data,
|
||||
utils.udf_hex_to_int(
|
||||
topics [1] :: STRING
|
||||
) :: FLOAT AS posId,
|
||||
CONCAT('0x', SUBSTR(topics [2] :: STRING, 27, 40)) AS liquidator,
|
||||
CONCAT('0x', SUBSTR(segmented_data [0] :: STRING, 25, 40)) AS poolOut,
|
||||
utils.udf_hex_to_int(
|
||||
segmented_data [1] :: STRING
|
||||
) :: FLOAT AS sharesamt,
|
||||
-- receipt token
|
||||
contract_address AS token,
|
||||
'INIT Capital' AS platform,
|
||||
inserted_timestamp AS _inserted_timestamp,
|
||||
_log_id
|
||||
FROM
|
||||
{{ ref('core__fact_event_logs') }}
|
||||
WHERE
|
||||
contract_address = '0xa7d36f2106b5a5d528a7e2e7a3f436d703113a10'
|
||||
AND topics [0] :: STRING = '0x6df71caf4cddb1620bcf376243248e0077da98913d65a7e9315bc9984e5fff72'
|
||||
AND tx_status = 'SUCCESS'
|
||||
),
|
||||
token_transfer AS (
|
||||
SELECT
|
||||
tx_hash,
|
||||
contract_address,
|
||||
from_address,
|
||||
to_address,
|
||||
raw_amount AS underlying_amount_raw,
|
||||
token_decimals,
|
||||
token_symbol,
|
||||
token_name
|
||||
FROM
|
||||
{{ ref('core__fact_token_transfers') }}
|
||||
LEFT JOIN {{ ref('silver__contracts') }} USING(contract_address)
|
||||
WHERE
|
||||
1 = 1
|
||||
AND (
|
||||
contract_address IN (
|
||||
'0xb1a5700fa2358173fe465e6ea4ff52e36e88e2ad',
|
||||
'0x4300000000000000000000000000000000000003',
|
||||
'0x4300000000000000000000000000000000000004'
|
||||
)
|
||||
OR contract_address IN (
|
||||
SELECT
|
||||
underlying_asset_address
|
||||
FROM
|
||||
asset_details
|
||||
)
|
||||
)
|
||||
AND (
|
||||
from_address IN (
|
||||
SELECT
|
||||
token_address
|
||||
FROM
|
||||
asset_details
|
||||
) -- for Blast
|
||||
OR from_address IN (
|
||||
SELECT
|
||||
underlying_asset_address
|
||||
FROM
|
||||
asset_details
|
||||
)
|
||||
) -- to get USDB from WUSDB
|
||||
AND tx_hash IN (
|
||||
SELECT
|
||||
tx_hash
|
||||
FROM
|
||||
init_liquidations
|
||||
)
|
||||
)
|
||||
SELECT
|
||||
l.block_number,
|
||||
l.block_timestamp,
|
||||
l.tx_hash,
|
||||
event_index,
|
||||
origin_from_address,
|
||||
origin_to_address,
|
||||
origin_function_signature,
|
||||
l.contract_address,
|
||||
borrower,
|
||||
token,
|
||||
C.token_symbol,
|
||||
poolOut,
|
||||
token AS protocol_market,
|
||||
l.sharesamt AS amount_unadj,
|
||||
underlying_amount_raw,
|
||||
l.sharesamt / pow(
|
||||
10,
|
||||
C.token_decimals
|
||||
) AS tokens_seized,
|
||||
-- in tokens
|
||||
underlying_amount_raw / pow(
|
||||
10,
|
||||
d.token_decimals
|
||||
) AS amount,
|
||||
C.underlying_decimals,
|
||||
C.underlying_asset_address AS liquidation_contract_address,
|
||||
C.underlying_symbol AS liquidation_contract_symbol,
|
||||
l.platform,
|
||||
l._inserted_timestamp,
|
||||
l._log_id
|
||||
FROM
|
||||
init_liquidations l
|
||||
LEFT JOIN asset_details C
|
||||
ON l.poolOut = C.token_address
|
||||
LEFT JOIN token_transfer d
|
||||
ON l.tx_hash = d.tx_hash
|
||||
AND C.underlying_asset_address = d.from_address
|
||||
@ -0,0 +1,56 @@
|
||||
version: 2
|
||||
models:
|
||||
- name: silver__init_liquidations
|
||||
tests:
|
||||
- dbt_utils.unique_combination_of_columns:
|
||||
combination_of_columns:
|
||||
- _log_id
|
||||
columns:
|
||||
- name: BLOCK_NUMBER
|
||||
tests:
|
||||
- not_null
|
||||
- name: BLOCK_TIMESTAMP
|
||||
tests:
|
||||
- not_null
|
||||
- name: BORROWER
|
||||
tests:
|
||||
- not_null
|
||||
- name: TOKEN
|
||||
tests:
|
||||
- not_null
|
||||
- name: TOKEN_SYMBOL
|
||||
tests:
|
||||
- not_null
|
||||
- name: LIQUIDATOR
|
||||
tests:
|
||||
- not_null
|
||||
- name: TOKENS_SEIZED
|
||||
tests:
|
||||
- dbt_expectations.expect_column_values_to_be_in_type_list:
|
||||
column_type_list:
|
||||
- decimal
|
||||
- float
|
||||
- name: LIQUIDATION_AMOUNT
|
||||
tests:
|
||||
- dbt_expectations.expect_column_values_to_be_in_type_list:
|
||||
column_type_list:
|
||||
- decimal
|
||||
- float
|
||||
- name: LIQUIDATION_CONTRACT_ADDRESS
|
||||
tests:
|
||||
- not_null
|
||||
- name: LIQUIDATION_CONTRACT_SYMBOL
|
||||
tests:
|
||||
- not_null
|
||||
- name: TX_HASH
|
||||
tests:
|
||||
- not_null
|
||||
- name: COLLATERAL_TOKEN
|
||||
tests:
|
||||
- not_null
|
||||
- name: COLLATERAL_SYMBOL
|
||||
tests:
|
||||
- not_null
|
||||
- name: EVENT_INDEX
|
||||
tests:
|
||||
- not_null
|
||||
208
models/silver/defi/lending/init/silver__init_repayments.sql
Normal file
208
models/silver/defi/lending/init/silver__init_repayments.sql
Normal file
@ -0,0 +1,208 @@
|
||||
{{ config(
|
||||
materialized = 'incremental',
|
||||
incremental_strategy = 'delete+insert',
|
||||
unique_key = "block_number",
|
||||
cluster_by = ['block_timestamp::DATE'],
|
||||
tags = ['reorg','curated']
|
||||
) }}
|
||||
|
||||
WITH asset_details AS (
|
||||
|
||||
SELECT
|
||||
token_address,
|
||||
token_name,
|
||||
token_symbol,
|
||||
token_decimals,
|
||||
underlying_asset_address,
|
||||
underlying_name,
|
||||
underlying_symbol,
|
||||
underlying_decimals,
|
||||
underlying_unwrap_address,
|
||||
underlying_unwrap_name,
|
||||
underlying_unwrap_symbol,
|
||||
underlying_unwrap_decimals,
|
||||
_inserted_timestamp
|
||||
FROM
|
||||
{{ ref('silver__init_asset_details') }}
|
||||
),
|
||||
init_repayments AS (
|
||||
SELECT
|
||||
block_number,
|
||||
block_timestamp,
|
||||
tx_hash,
|
||||
event_index,
|
||||
origin_from_address,
|
||||
origin_to_address,
|
||||
origin_from_address AS borrower,
|
||||
origin_function_signature,
|
||||
contract_address,
|
||||
topics,
|
||||
regexp_substr_all(SUBSTR(DATA, 3, len(DATA)), '.{64}') AS segmented_data,
|
||||
utils.udf_hex_to_int(
|
||||
topics [2] :: STRING
|
||||
) :: FLOAT AS posId,
|
||||
CONCAT('0x', SUBSTR(topics [1] :: STRING, 27, 40)) AS pool,
|
||||
utils.udf_hex_to_int(
|
||||
segmented_data [0] :: STRING
|
||||
) :: FLOAT AS sharesAmt,
|
||||
-- receipt token
|
||||
utils.udf_hex_to_int(
|
||||
segmented_data [1] :: STRING
|
||||
) :: FLOAT AS amtToRepay,
|
||||
-- receipt token
|
||||
contract_address AS token,
|
||||
'INIT Capital' AS platform,
|
||||
inserted_timestamp AS _inserted_timestamp,
|
||||
_log_id
|
||||
FROM
|
||||
{{ ref('core__fact_event_logs') }}
|
||||
WHERE
|
||||
contract_address = '0xa7d36f2106b5a5d528a7e2e7a3f436d703113a10'
|
||||
AND topics [0] :: STRING = '0x77673b670822baca14a7caf6f8038f811649ab73e4c06083b0e58a53389bece7'
|
||||
AND tx_status = 'SUCCESS'
|
||||
),
|
||||
native_transfer AS (
|
||||
SELECT
|
||||
tx_hash,
|
||||
from_address,
|
||||
to_address AS wrapped_address,
|
||||
value_precise_raw AS eth_value,
|
||||
'WETH' AS eth_symbol,
|
||||
18 AS eth_decimals,
|
||||
'0x4300000000000000000000000000000000000004' AS eth_address
|
||||
FROM
|
||||
{{ ref('core__fact_traces') }}
|
||||
WHERE
|
||||
to_address IN ('0xf683ce59521aa464066783d78e40cd9412f33d21') -- hard code wweth contract here
|
||||
AND tx_hash IN (
|
||||
SELECT
|
||||
tx_hash
|
||||
FROM
|
||||
init_repayments
|
||||
)
|
||||
AND TYPE = 'CALL'
|
||||
AND trace_status = 'SUCCESS'
|
||||
AND input = '0x6ad481f3'
|
||||
),
|
||||
token_transfer AS (
|
||||
SELECT
|
||||
tx_hash,
|
||||
contract_address,
|
||||
from_address,
|
||||
to_address,
|
||||
raw_amount AS underlying_amount_raw,
|
||||
token_decimals,
|
||||
token_symbol,
|
||||
token_name
|
||||
FROM
|
||||
{{ ref('core__fact_token_transfers') }}
|
||||
LEFT JOIN {{ ref('silver__contracts') }} USING(contract_address)
|
||||
WHERE
|
||||
1 = 1
|
||||
AND contract_address IN (
|
||||
'0xb1a5700fa2358173fe465e6ea4ff52e36e88e2ad',
|
||||
'0x4300000000000000000000000000000000000003',
|
||||
'0x4300000000000000000000000000000000000004'
|
||||
)
|
||||
AND (
|
||||
to_address IN (
|
||||
SELECT
|
||||
token_address
|
||||
FROM
|
||||
asset_details
|
||||
) -- for Blast
|
||||
OR to_address IN (
|
||||
SELECT
|
||||
underlying_asset_address
|
||||
FROM
|
||||
asset_details
|
||||
)
|
||||
) -- to get USDB from WUSDB
|
||||
AND tx_hash IN (
|
||||
SELECT
|
||||
tx_hash
|
||||
FROM
|
||||
init_repayments
|
||||
)
|
||||
),
|
||||
init_combine AS (
|
||||
SELECT
|
||||
block_number,
|
||||
block_timestamp,
|
||||
b.tx_hash,
|
||||
event_index,
|
||||
origin_from_address,
|
||||
origin_to_address,
|
||||
origin_function_signature,
|
||||
b.contract_address,
|
||||
borrower,
|
||||
token,
|
||||
C.token_symbol,
|
||||
C.token_decimals,
|
||||
amttorepay,
|
||||
sharesAmt,
|
||||
C.underlying_asset_address AS repay_contract_address,
|
||||
C.underlying_symbol AS repay_contract_symbol,
|
||||
d.token_decimals AS decimals1,
|
||||
d.contract_address AS contract_address1,
|
||||
d.token_symbol AS symbol1,
|
||||
underlying_decimals AS underlying_wrap_decimals,
|
||||
COALESCE(
|
||||
eth_value,
|
||||
underlying_amount_raw
|
||||
) AS underlying_amount_raw,
|
||||
COALESCE(
|
||||
eth_symbol,
|
||||
d.token_symbol,
|
||||
C.underlying_symbol
|
||||
) AS underlying_symbol,
|
||||
COALESCE(
|
||||
eth_decimals,
|
||||
d.token_decimals,
|
||||
C.underlying_decimals
|
||||
) AS underlying_decimals,
|
||||
COALESCE(
|
||||
eth_address,
|
||||
C.underlying_asset_address
|
||||
) AS underlying_asset_address,
|
||||
b.platform,
|
||||
b._log_id,
|
||||
b._inserted_timestamp
|
||||
FROM
|
||||
init_repayments b
|
||||
LEFT JOIN asset_details C
|
||||
ON b.pool = C.token_address
|
||||
LEFT JOIN native_transfer USING(tx_hash)
|
||||
LEFT JOIN token_transfer d
|
||||
ON b.tx_hash = d.tx_hash
|
||||
)
|
||||
SELECT
|
||||
block_number,
|
||||
block_timestamp,
|
||||
tx_hash,
|
||||
event_index,
|
||||
origin_from_address,
|
||||
origin_to_address,
|
||||
origin_function_signature,
|
||||
contract_address,
|
||||
borrower,
|
||||
token AS token_address,
|
||||
token_symbol,
|
||||
repay_contract_address,
|
||||
repay_contract_symbol,
|
||||
underlying_amount_raw AS amount_unadj,
|
||||
amttorepay / pow(
|
||||
10,
|
||||
underlying_wrap_decimals
|
||||
) AS total_repaid,
|
||||
underlying_amount_raw / pow(
|
||||
10,
|
||||
underlying_decimals
|
||||
) AS amount,
|
||||
platform,
|
||||
_inserted_timestamp,
|
||||
_log_id
|
||||
FROM
|
||||
init_combine qualify(ROW_NUMBER() over(PARTITION BY _log_id
|
||||
ORDER BY
|
||||
_inserted_timestamp DESC)) = 1
|
||||
44
models/silver/defi/lending/init/silver__init_repayments.yml
Normal file
44
models/silver/defi/lending/init/silver__init_repayments.yml
Normal file
@ -0,0 +1,44 @@
|
||||
version: 2
|
||||
models:
|
||||
- name: silver__init_repayments
|
||||
tests:
|
||||
- dbt_utils.unique_combination_of_columns:
|
||||
combination_of_columns:
|
||||
- _log_id
|
||||
columns:
|
||||
- name: BLOCK_NUMBER
|
||||
tests:
|
||||
- not_null
|
||||
- name: BLOCK_TIMESTAMP
|
||||
tests:
|
||||
- not_null
|
||||
- name: BORROWER
|
||||
tests:
|
||||
- not_null
|
||||
- name: TOKEN_ADDRESS
|
||||
tests:
|
||||
- not_null
|
||||
- name: TOKEN_SYMBOL
|
||||
tests:
|
||||
- not_null
|
||||
- name: PAYER
|
||||
tests:
|
||||
- not_null
|
||||
- name: REPAY_CONTRACT_ADDRESS
|
||||
tests:
|
||||
- not_null
|
||||
- name: REPAY_CONTRACT_SYMBOL
|
||||
tests:
|
||||
- not_null
|
||||
- name: REPAYED_AMOUNT
|
||||
tests:
|
||||
- dbt_expectations.expect_column_values_to_be_in_type_list:
|
||||
column_type_list:
|
||||
- decimal
|
||||
- float
|
||||
- name: TX_HASH
|
||||
tests:
|
||||
- not_null
|
||||
- name: EVENT_INDEX
|
||||
tests:
|
||||
- not_null
|
||||
197
models/silver/defi/lending/init/silver__init_withdraws.sql
Normal file
197
models/silver/defi/lending/init/silver__init_withdraws.sql
Normal file
@ -0,0 +1,197 @@
|
||||
{{ config(
|
||||
materialized = 'incremental',
|
||||
incremental_strategy = 'delete+insert',
|
||||
unique_key = "block_number",
|
||||
cluster_by = ['block_timestamp::DATE'],
|
||||
tags = ['reorg','curated']
|
||||
) }}
|
||||
|
||||
WITH asset_details AS (
|
||||
|
||||
SELECT
|
||||
block_timestamp,
|
||||
block_number,
|
||||
tx_hash,
|
||||
token_address,
|
||||
token_name,
|
||||
token_symbol,
|
||||
token_decimals,
|
||||
underlying_asset_address,
|
||||
underlying_name,
|
||||
underlying_symbol,
|
||||
underlying_decimals,
|
||||
underlying_unwrap_address,
|
||||
underlying_unwrap_name,
|
||||
underlying_unwrap_symbol,
|
||||
underlying_unwrap_decimals,
|
||||
_inserted_timestamp
|
||||
FROM
|
||||
{{ ref('silver__init_asset_details') }}
|
||||
),
|
||||
init_redemption AS (
|
||||
SELECT
|
||||
block_number,
|
||||
block_timestamp,
|
||||
tx_hash,
|
||||
event_index,
|
||||
origin_from_address,
|
||||
origin_to_address,
|
||||
origin_function_signature,
|
||||
contract_address,
|
||||
contract_address AS token_address,
|
||||
regexp_substr_all(SUBSTR(DATA, 3, len(DATA)), '.{64}') AS segmented_data,
|
||||
utils.udf_hex_to_int( topics[1] :: STRING ) :: FLOAT as posId,
|
||||
concat('0x', substr(topics[2] :: string, 27, 40)) as pool,
|
||||
utils.udf_hex_to_int(
|
||||
segmented_data [0] :: STRING
|
||||
) :: FLOAT AS redeemed_token_raw, -- receipt token
|
||||
'INIT Capital' AS platform,
|
||||
inserted_timestamp as _inserted_timestamp,
|
||||
_log_id
|
||||
FROM
|
||||
{{ ref('core__fact_event_logs') }}
|
||||
WHERE
|
||||
contract_address ='0xa7d36f2106b5a5d528a7e2e7a3f436d703113a10'
|
||||
AND topics [0] :: STRING = '0x09c2e7b3728acfd99b3f71e4c1a55bcd48019bcc0e45c741f7c2f3393f49ea91'
|
||||
AND tx_status = 'SUCCESS'
|
||||
),
|
||||
|
||||
token_transfer1 AS (
|
||||
SELECT
|
||||
t1.tx_hash, t2.contract_address, t1.from_address, t1.to_address, t1.raw_amount,
|
||||
t3.token_symbol, t3.token_decimals, t3.token_name,
|
||||
t2.from_address as from_address2, t2.to_address as to_address2, t2.raw_amount as base_amount,
|
||||
|
||||
FROM
|
||||
{{ ref('core__fact_token_transfers') }} t1
|
||||
left join
|
||||
{{ ref('core__fact_token_transfers') }} t2 on t1.tx_hash=t2.tx_hash and t1.contract_address = t2.from_address
|
||||
left join
|
||||
{{ ref('silver__contracts') }} t3 on t2.contract_address = t3.contract_address
|
||||
WHERE
|
||||
1=1
|
||||
AND t1.contract_address in (select underlying_asset_address from asset_details where underlying_unwrap_address is not null)
|
||||
AND t1.tx_hash IN (select tx_hash from init_redemption)
|
||||
|
||||
AND t1.from_address in (SELECT token_address FROM ASSET_DETAILS) -- for Blast
|
||||
AND t2.contract_address IN (select underlying_unwrap_address from asset_details)
|
||||
AND (t2.from_address in (SELECT underlying_asset_address FROM asset_details)) -- to get USDB from WUSDB
|
||||
),
|
||||
|
||||
token_transfer2 as (
|
||||
SELECT
|
||||
t1.tx_hash, t1.contract_address, t1.from_address, t1.to_address, t1.raw_amount,
|
||||
t3.token_symbol, t3.token_decimals, t3.token_name,
|
||||
null as from_address2, null as to_address2, null as base_amount, null as base_decimals, null as base_symbol, null as base_name
|
||||
FROM
|
||||
{{ ref('core__fact_token_transfers') }} t1
|
||||
left join
|
||||
{{ ref('silver__contracts') }} t3 on t1.contract_address = t3.contract_address
|
||||
WHERE
|
||||
1=1
|
||||
AND t1.contract_address in (select underlying_asset_address from asset_details where underlying_unwrap_address is null)
|
||||
AND t1.tx_hash IN (select tx_hash from init_redemption)
|
||||
AND t1.tx_hash not in (select tx_hash from token_transfer1)
|
||||
|
||||
AND t1.from_address in (SELECT token_address FROM ASSET_DETAILS) -- for Blast
|
||||
|
||||
),
|
||||
token_transfer as (
|
||||
select
|
||||
tx_hash,
|
||||
contract_address,
|
||||
token_decimals,
|
||||
token_symbol,
|
||||
token_name,
|
||||
coalesce(base_amount, raw_amount) as raw_amount,
|
||||
from_address
|
||||
from (
|
||||
select tx_hash, contract_address, base_amount, raw_amount, from_address2, from_address, token_name, token_symbol, token_decimals from token_transfer1
|
||||
union all
|
||||
select tx_hash, contract_address, base_amount, raw_amount, from_address2, from_address, token_name, token_symbol, token_decimals from token_transfer2
|
||||
)
|
||||
|
||||
),
|
||||
|
||||
native_transfer AS (
|
||||
SELECT
|
||||
tx_hash, from_address as wrapped_address, to_address, value_precise_raw as eth_value, 'WETH' as eth_symbol, 18 as eth_decimals, '0x4300000000000000000000000000000000000004' as eth_address
|
||||
FROM
|
||||
blast.core.fact_traces
|
||||
WHERE
|
||||
from_address in ('0xf683ce59521aa464066783d78e40cd9412f33d21') -- hard code wweth contract here
|
||||
AND tx_hash IN (SELECT tx_hash FROM init_redemption)
|
||||
AND type = 'CALL'
|
||||
AND trace_status='SUCCESS'
|
||||
and input='0x'
|
||||
),
|
||||
|
||||
init_combine AS (
|
||||
SELECT
|
||||
b.block_number,
|
||||
b.block_timestamp,
|
||||
b.tx_hash,
|
||||
event_index,
|
||||
origin_from_address,
|
||||
origin_to_address,
|
||||
origin_to_address as redeemer,
|
||||
origin_function_signature,
|
||||
b.contract_address,
|
||||
pool,
|
||||
|
||||
coalesce(eth_value, raw_amount) as received_amount_raw, -- actual out
|
||||
coalesce(eth_decimals, d.token_decimals) as received_decimals,
|
||||
coalesce(eth_symbol, d.token_symbol) as received_symbol,
|
||||
coalesce(eth_address, d.contract_address) AS received_contract_address,
|
||||
|
||||
redeemed_token_raw, -- receipt burnt
|
||||
C.token_address,
|
||||
C.token_symbol,
|
||||
C.token_decimals,
|
||||
C.token_address AS redeemed_contract_address,
|
||||
C.token_symbol AS redeemed_symbol,
|
||||
C.token_decimals AS redeemed_decimals,
|
||||
|
||||
b.platform,
|
||||
b._log_id,
|
||||
b._inserted_timestamp
|
||||
FROM
|
||||
init_redemption b
|
||||
LEFT JOIN asset_details c
|
||||
ON b.pool = C.token_address
|
||||
LEFT JOIN token_transfer d
|
||||
ON b.tx_hash = d.tx_hash AND b.pool = d.from_address
|
||||
LEFT JOIN native_transfer e
|
||||
on b.tx_hash = e.tx_hash
|
||||
)
|
||||
SELECT
|
||||
block_number,
|
||||
block_timestamp,
|
||||
tx_hash,
|
||||
event_index,
|
||||
origin_from_address,
|
||||
origin_to_address,
|
||||
origin_function_signature,
|
||||
contract_address,
|
||||
token_address,
|
||||
token_symbol,
|
||||
redeemer,
|
||||
received_amount_raw AS amount_unadj,
|
||||
received_amount_raw / pow(
|
||||
10,
|
||||
received_decimals
|
||||
) AS amount,
|
||||
received_contract_address,
|
||||
received_symbol,
|
||||
redeemed_token_raw / pow(
|
||||
10,
|
||||
redeemed_decimals
|
||||
) AS redeemed_tokens,
|
||||
platform,
|
||||
_inserted_timestamp,
|
||||
_log_id
|
||||
FROM
|
||||
init_combine ee
|
||||
qualify(ROW_NUMBER() over(PARTITION BY _log_id
|
||||
ORDER BY
|
||||
_inserted_timestamp DESC)) = 1
|
||||
47
models/silver/defi/lending/init/silver__init_withdraws.yml
Normal file
47
models/silver/defi/lending/init/silver__init_withdraws.yml
Normal file
@ -0,0 +1,47 @@
|
||||
version: 2
|
||||
models:
|
||||
- name: silver__init_withdraws
|
||||
tests:
|
||||
- dbt_utils.unique_combination_of_columns:
|
||||
combination_of_columns:
|
||||
- _log_id
|
||||
columns:
|
||||
- name: BLOCK_NUMBER
|
||||
tests:
|
||||
- not_null
|
||||
- name: BLOCK_TIMESTAMP
|
||||
tests:
|
||||
- not_null
|
||||
- name: TOKEN_ADDRESS
|
||||
tests:
|
||||
- not_null
|
||||
- name: TOKEN_SYMBOL
|
||||
tests:
|
||||
- not_null
|
||||
- name: RECEIVED_AMOUNT
|
||||
tests:
|
||||
- dbt_expectations.expect_column_values_to_be_in_type_list:
|
||||
column_type_list:
|
||||
- decimal
|
||||
- float
|
||||
- name: RECEIVED_CONTRACT_ADDRESS
|
||||
tests:
|
||||
- not_null
|
||||
- name: RECEIVED_SYMBOL
|
||||
tests:
|
||||
- not_null
|
||||
- name: REDEEMED_TOKEN
|
||||
tests:
|
||||
- dbt_expectations.expect_column_values_to_be_in_type_list:
|
||||
column_type_list:
|
||||
- decimal
|
||||
- float
|
||||
- name: REDEEMER
|
||||
tests:
|
||||
- not_null
|
||||
- name: TX_HASH
|
||||
tests:
|
||||
- not_null
|
||||
- name: EVENT_INDEX
|
||||
tests:
|
||||
- not_null
|
||||
Loading…
Reference in New Issue
Block a user