WITH
contracts as (
SELECT
date_trunc('day', block_timestamp) as tx_date,
COUNT(DISTINCT (tx_hash)) as daily_contracts_deployed
FROM optimism.core.fact_traces
WHERE type = 'CREATE'
OR type = 'CREATE2'
AND tx_status = 'SUCCESS'
GROUP BY 1
)
SELECT
tx_date,
daily_contracts_deployed,
SUM(daily_contracts_deployed) OVER (ORDER BY tx_date ASC) as cumulative_contracts_deployed
FROM contracts
WHERE tx_date <= dateadd(day, -1, CURRENT_DATE) -- Exclude current date to ensure that only days with a full 24 hours of data are included
ORDER BY 1 ASC