-
Notifications
You must be signed in to change notification settings - Fork 1.2k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
* Add v1.4.1 singletons L1 singleton 0x41675C099F32341bf84BFc5382aF534df5C7461a L2 singleton 0x29fcB43b46531BcA003ddC8FCB67FFE91900C76 * Change goerli test * Declare new Safe models for zkevm * Implement Safe models for zkevm * Update crosschain models with zkevm data Models updated are: - safe_native_transfers.all.sql -> Added safe_zkevm_matic_transfers - safe_safes_all.sql -> Added safe_zkevm_safes - safe_transactions_all.sql -> safe_zkevm_transactions * Bugfix: Joining correctly on celo transactions for safe_celo_transactions spell * Fix project start for safe_polygon_matic_transfers.sql * Create Safe ETH Scroll transfers spell * Create Scroll spell for Safes deployed * Adapt Scroll Safe ETH transfers spell * Implement Safe Scroll transactions and singletons spells * Parametrize scroll Safe Scroll spells * Bugfix: Remove duplicated spell for Safe zkEVM * Create Safe scroll schema * Add Scroll data to crosschain spells * Move Safe scroll models to new Safe folder location * Add explicit sources of decoded tables to schema * Update dbt_subprojects/hourly_spellbook/models/_project/safe/scroll/safe_scroll_eth_transfers.sql Co-authored-by: jeff-dude <[email protected]> * Update dbt_subprojects/hourly_spellbook/models/_project/safe/scroll/safe_scroll_safes.sql Co-authored-by: jeff-dude <[email protected]> * Update dbt_subprojects/hourly_spellbook/models/_project/safe/scroll/safe_scroll_transactions.sql Co-authored-by: jeff-dude <[email protected]> * Update dbt_subprojects/hourly_spellbook/models/_project/safe/scroll/safe_scroll_eth_transfers.sql Co-authored-by: jeff-dude <[email protected]> * Declare scroll source file * Implement source schema under right folder * Fix merge * Fix merge conflicts * Add missing specs to crosschain schemas --------- Co-authored-by: jeff-dude <[email protected]>
- Loading branch information
1 parent
7cfc9d4
commit 88fe12c
Showing
10 changed files
with
436 additions
and
9 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
83 changes: 83 additions & 0 deletions
83
dbt_subprojects/hourly_spellbook/models/_project/safe/scroll/safe_scroll_eth_transfers.sql
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,83 @@ | ||
{{ | ||
config( | ||
materialized='incremental', | ||
schema = 'safe_scroll', | ||
alias= 'eth_transfers', | ||
partition_by = ['block_month'], | ||
unique_key = ['block_date', 'address', 'tx_hash', 'trace_address'], | ||
on_schema_change='fail', | ||
file_format ='delta', | ||
incremental_strategy='merge', | ||
post_hook = '{{ expose_spells( | ||
blockchains = \'["scroll"]\', | ||
spell_type = "project", | ||
spell_name = "safe", | ||
contributors = \'["danielpartida"]\') }}' | ||
) | ||
}} | ||
|
||
{% set project_start_date = '2023-10-15' %} | ||
|
||
select | ||
t.*, | ||
p.price * t.amount_raw / 1e18 AS amount_usd | ||
|
||
from ( | ||
|
||
select | ||
'scroll' as blockchain, | ||
'ETH' as symbol, | ||
s.address, | ||
try_cast(date_trunc('day', et.block_time) as date) as block_date, | ||
CAST(date_trunc('month', et.block_time) as DATE) as block_month, | ||
et.block_time, | ||
-CAST(et.value AS INT256) as amount_raw, | ||
et.tx_hash, | ||
array_join(et.trace_address, ',') as trace_address | ||
from {{ source('scroll', 'traces') }} et | ||
join {{ ref('safe_scroll_safes') }} s on et."from" = s.address | ||
and et."from" != et.to -- exclude calls to self to guarantee unique key property | ||
and et.success = true | ||
and (lower(et.call_type) not in ('delegatecall', 'callcode', 'staticcall') or et.call_type is null) | ||
and et.value > UINT256 '0' -- et.value is uint256 type | ||
{% if not is_incremental() %} | ||
where et.block_time > timestamp '{{project_start_date}}' -- for initial query optimisation | ||
{% else %} | ||
-- to prevent potential counterfactual safe deployment issues we take a bigger interval | ||
where et.block_time > date_trunc('day', now() - interval '10' day) | ||
{% endif %} | ||
|
||
union all | ||
|
||
select | ||
'scroll' as blockchain, | ||
'ETH' as symbol, | ||
s.address, | ||
try_cast(date_trunc('day', et.block_time) as date) as block_date, | ||
CAST(date_trunc('month', et.block_time) as DATE) as block_month, | ||
et.block_time, | ||
CAST(et.value AS INT256) as amount_raw, | ||
et.tx_hash, | ||
array_join(et.trace_address, ',') as trace_address | ||
from {{ source('scroll', 'traces') }} et | ||
join {{ ref('safe_scroll_safes') }} s on et.to = s.address | ||
and et."from" != et.to -- exclude calls to self to guarantee unique key property | ||
and et.success = true | ||
and (lower(et.call_type) not in ('delegatecall', 'callcode', 'staticcall') or et.call_type is null) | ||
and et.value > UINT256 '0' -- et.value is uint256 type | ||
{% if not is_incremental() %} | ||
where et.block_time > timestamp '{{project_start_date}}' -- for initial query optimisation | ||
{% endif %} | ||
{% if is_incremental() %} | ||
-- to prevent potential counterfactual safe deployment issues we take a bigger interval | ||
where et.block_time > date_trunc('day', now() - interval '10' day) | ||
{% endif %} | ||
) t | ||
|
||
left join {{ source('prices', 'usd') }} p on p.blockchain is null | ||
and p.symbol = t.symbol | ||
and p.minute = date_trunc('minute', t.block_time) | ||
{% if is_incremental() %} | ||
-- to prevent potential counterfactual safe deployment issues we take a bigger interval | ||
and p.minute > date_trunc('day', now() - interval '10' day) | ||
{% endif %} |
48 changes: 48 additions & 0 deletions
48
dbt_subprojects/hourly_spellbook/models/_project/safe/scroll/safe_scroll_safes.sql
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,48 @@ | ||
{{ | ||
config( | ||
materialized='incremental', | ||
schema = 'safe_scroll', | ||
alias= 'safes', | ||
partition_by = ['block_month'], | ||
unique_key = ['block_date', 'address'], | ||
on_schema_change='fail', | ||
file_format ='delta', | ||
incremental_strategy='merge', | ||
post_hook = '{{ expose_spells( | ||
blockchains = \'["scroll"]\', | ||
spell_type = "project", | ||
spell_name = "safe", | ||
contributors = \'["danielpartida"]\') }}' | ||
) | ||
}} | ||
|
||
{% set project_start_date = '2023-10-15' %} | ||
|
||
select | ||
'scroll' as blockchain, | ||
et."from" as address, | ||
case | ||
when et.to = 0xd9db270c1b5e3bd161e8c8503c55ceabee709552 then '1.3.0' | ||
when et.to = 0x3e5c63644e683549055b9be8653de26e0b4cd36e then '1.3.0L2' | ||
when et.to = 0x41675C099F32341bf84BFc5382aF534df5C7461a then '1.4.1' | ||
when et.to = 0x29fcB43b46531BcA003ddC8FCB67FFE91900C762 then '1.4.1L2' | ||
else 'unknown' | ||
end as creation_version, | ||
try_cast(date_trunc('day', et.block_time) as date) as block_date, | ||
CAST(date_trunc('month', et.block_time) as DATE) as block_month, | ||
et.block_time as creation_time, | ||
et.tx_hash | ||
from {{ source('scroll', 'traces') }} et | ||
join {{ ref('safe_scroll_singletons') }} s | ||
on et.to = s.address | ||
where et.success = true | ||
and et.call_type = 'delegatecall' -- delegatecall to singleton is Safe (proxy) address | ||
and bytearray_substring(et.input, 1, 4) in ( | ||
0xb63e800d -- setup method v1.3.0, v1.3.0L2, v1.4.1, v.1.4.1L2 | ||
) | ||
and et.gas_used > 10000 -- to ensure the setup call was successful. excludes e.g. setup calls with missing params that fallback | ||
{% if not is_incremental() %} | ||
and et.block_time > TIMESTAMP '{{project_start_date}}' -- for initial query optimisation | ||
{% else %} | ||
and {{ incremental_predicate('et.block_time') }} | ||
{% endif %} |
161 changes: 161 additions & 0 deletions
161
dbt_subprojects/hourly_spellbook/models/_project/safe/scroll/safe_scroll_schema.yml
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,161 @@ | ||
version: 2 | ||
|
||
models: | ||
- name: safe_scroll_safes | ||
meta: | ||
blockchain: scroll | ||
project: safe | ||
contributors: danielpartida | ||
freshness: | ||
warn_after: { count: 12, period: hour } | ||
error_after: { count: 24, period: hour } | ||
config: | ||
tags: ['safe', 'scroll'] | ||
description: "Safe addresses" | ||
tests: | ||
- dbt_utils.unique_combination_of_columns: | ||
combination_of_columns: | ||
- block_date | ||
- address | ||
columns: | ||
- &blockchain | ||
name: blockchain | ||
description: "The blockchain on which the Safe is deployed" | ||
- &address | ||
name: address | ||
description: "Safe contract address" | ||
- &creation_version | ||
name: creation_version | ||
description: "Version of initially created safe" | ||
- &block_date | ||
name: block_date | ||
- &block_month | ||
name: block_month | ||
- &creation_time | ||
name: creation_time | ||
description: "Date/time of safe creation" | ||
- &tx_hash | ||
name: tx_hash | ||
|
||
- name: safe_scroll_eth_transfers | ||
meta: | ||
blockchain: scroll | ||
project: safe | ||
contributors: danielpartida | ||
freshness: | ||
warn_after: { count: 12, period: hour } | ||
error_after: { count: 24, period: hour } | ||
config: | ||
tags: ['safe', 'transfers', 'scroll'] | ||
description: "ETH transfers for safes" | ||
tests: | ||
- dbt_utils.unique_combination_of_columns: | ||
combination_of_columns: | ||
- block_date | ||
- address | ||
- tx_hash | ||
- trace_address | ||
columns: | ||
- *blockchain | ||
- &symbol | ||
name: symbol | ||
description: "Symbol of native gas token: ETH" | ||
- *address | ||
- *block_date | ||
- *block_month | ||
- &block_time | ||
name: block_time | ||
description: "Date of ETH transfer" | ||
- &amount_raw | ||
name: amount_raw | ||
description: "Raw amount of transferred ETH" | ||
- *tx_hash | ||
- &trace_address | ||
name: trace_address | ||
- &amount_usd | ||
name: amount_usd | ||
description: "USD amount of transferred ETH" | ||
|
||
- name: safe_scroll_singletons | ||
meta: | ||
blockchain: scroll | ||
project: safe | ||
contributors: danielpartida | ||
freshness: | ||
warn_after: { count: 12, period: hour } | ||
error_after: { count: 24, period: hour } | ||
config: | ||
tags: ['safe', 'singletons', 'scroll'] | ||
description: "Singletons addresses used with Safes" | ||
columns: | ||
- name: address | ||
description: "Safe contract address" | ||
|
||
- name: safe_scroll_transactions | ||
meta: | ||
blockchain: scroll | ||
project: safe | ||
contributors: danielpartida | ||
freshness: | ||
warn_after: { count: 12, period: hour } | ||
error_after: { count: 24, period: hour } | ||
config: | ||
tags: ['safe', 'scroll'] | ||
description: "Safe transactions" | ||
tests: | ||
- dbt_utils.unique_combination_of_columns: | ||
combination_of_columns: | ||
- block_date | ||
- tx_hash | ||
- trace_address | ||
columns: | ||
- *blockchain | ||
- *block_date | ||
- *block_month | ||
- *block_time | ||
- &block_number | ||
name: block_number | ||
description: "Number of block" | ||
- *tx_hash | ||
- name: address | ||
description: "Safe contract address" | ||
- &to | ||
name: to | ||
description: "Destination address" | ||
- &value | ||
name: value | ||
description: "Value of transaction" | ||
- &gas | ||
name: gas | ||
description: "Gas limit set for transaction" | ||
- &execution_gas_used | ||
name: execution_gas_used | ||
description: "Execution gas used during transaction, for more details see https://dune.com/docs/data-tables/raw/evm/traces/?h=traces#gas-used-in-traces" | ||
- &total_gas_used | ||
name: total_gas_used | ||
description: "Total gas used during transaction" | ||
- &tx_index | ||
name: tx_index | ||
description: "Transaction index" | ||
- &sub_traces | ||
name: sub_traces | ||
description: "Number of sub traces" | ||
- *trace_address | ||
- &success | ||
name: success | ||
description: "Success state of transaction" | ||
- &error | ||
name: error | ||
description: "Error of transaction if any" | ||
- &code | ||
name: code | ||
description: "Code" | ||
- &input | ||
name: input | ||
description: "Input data" | ||
- &output | ||
name: output | ||
description: "Output data" | ||
- &method | ||
name: method | ||
description: "Function method" |
Oops, something went wrong.